
mysqldump: 最早,也是最成熟的逻辑备份工具,是 MySQL 原生的用来备份整个数据库实例、单个数据库、单张表的逻辑备份工具, 上手简单,学习成本几乎为 0。备份简单,恢复也简单。
比如导出单个数据库 ytt: mysqldump ytt > /tmp/yttsql;
恢复也非常简单:mysql < /tmp/yttsql
缺点是备份速度慢。在整个备份过程中,是单线程运行;备份出来的数据集要恢复的话同样也是单线程运行,恢复速度也慢。除非对同一时刻的所有表单独备份出来,自己写额外脚本进行多线程恢复。
mysql 通过函数执本地命令、外部程序
昨天接到一个需求,要求在mysql的触发器中执行一个外部程序。
一开始没有什么头绪,后来发现嘿嘿。
id=211
有个叫mysqludf的一个东西,用起来还不错。
不过这个东西仅仅在linux下试了试,效果还行。
步骤如下:
一、解压附件的压缩包之后
如果不想自己编译的话,把lib_mysqludf_sysso文件放到 mysql的lib/mysql/plugin/
目录下。
二、执行chcon -t texrel_shlib_t mysql/lib/mysql/plugin/lib_mysqludf_sysso
三、创建函数
DROP FUNCTION IF EXISTS lib_mysqludf_sys_info;
DROP FUNCTION IF EXISTS sys_get;
DROP FUNCTION IF EXISTS sys_set;
DROP FUNCTION IF EXISTS sys_exec;
DROP FUNCTION IF EXISTS sys_eval;
CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sysso';
CREATE FUNCTION sys_get RETURNS string SONAME 'lib_mysqludf_sysso';
CREATE FUNCTION sys_set RETURNS int SONAME 'lib_mysqludf_sysso';
CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sysso';
CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sysso';
四、测试
1、准备sh文件
在linux系统中执行下面的命令
su mysql
mkdir /mysqlUDFtest
cd mysqlUDFtest
vi testsh
#/bin/sh
date > testlogtxt
chmod +x /testsh
2、准备数据库表和触发器
选择一个数据库执行如下命令:
CREATE TABLE test1(a1 INT) type=InnoDB;
CREATE TABLE test2(a2 INT) type=InnoDB;
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY) type=InnoDB;
CREATE TABLE test4(
a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b4 INT DEFAULT 0
) type=InnoDB;
DELIMITER |
DROP TRIGGER /!50032 IF EXISTS / `test``testref`|
create trigger `test``testref` BEFORE INSERT on `test``test1`
for each row BEGIN
DECLARE done INT DEFAULT 999;
INSERT INTO test2 SET a2 = NEWa1;
DELETE FROM test3 WHERE a3 = NEWa1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEWa1;
set done = sys_exec("/mysqlUDFtest/testsh");
IF done != 0 then
INSERT INTO `$amp;<amp ;$gt;22t3`="" (a,b); end="" if;END;
|
1、关闭Liunx系统的防火墙,如果忘了,你下面的测试连接必定会失败,切记,切记,切记。
2、yum安装lrzsz和cmake
yum -y install lrzsz;
yum -y install cmake;
首先熟悉MySql数据库,很多人都是直接安装原生版的MySql数据库(就是官网上下载的数据库安装包),也有人用的是MySql的衍生版数据库,如percona,我用的就是这种,下面我会分别说明原生版和衍生版MySql数据库的安装和主从配置。
1 mysqldump: 最早,也是最成熟的逻辑备份工具,是 MySQL 原生的用来备份整个数据库实例、单个数据库、单张表的逻辑备份工具, 上手简单,学习成本几乎为 0。备份简单,恢复也简单。
比如导出单个数据库 ytt: mysqldump ytt > /tmp/yttsql;
恢复也非常简单:mysql < /tmp/yttsql
缺点是备份速度慢。在整个备份过程中,是单线程运行;备份出来的数据集要恢复的话同样也是单线程运行,恢复速度也慢。除非对同一时刻的所有表单独备份出来,自己写额外脚本进行多线程恢复。
2 mysqlpump:MySQL 57 GA 后推出的 mysqldump工具的增强版。可以对同一个数据集多个线程并发备份,备份速度很快。
其他缺点和 mysqldump 一样。
3 MySQL Shell UTIL 对象附带的备份工具:随 MySQL 8021 最新版本捆绑发布,自带多线程备份以及多线程恢复功能, 可以直接替代 mysqldump/mysqlpump。
dump_instance/dumpInstance 用来多线程备份 MySQL 整个单机实例dump_schemas/dumpSchemas 用来多线程备份 MySQL 单个数据库load_dump/loadDump 用来多线程恢复之前两个工具导出的数据集文件public class MongoDBJDBC {
public static void main(String[] args) {
try {
// 实例化Mongo对象,连接27017端口
Mongo mongo = new Mongo("localhost", 27017);
// 连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
DB db = mongogetDB("test");
// Get collection from MongoDB, database named "yourDB"
// 从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立
DBCollection collection = dbgetCollection("test1");
// 使用BasicDBObject对象创建一个mongodb的document,并给予赋值。
BasicDBObject document = new BasicDBObject();
//documentput("id", 1001);
//documentput("msg", "hello world mongoDB in Java");
// 将新建立的document保存到collection中去
//collectioninsert(document);
// 创建要查询的document
BasicDBObject searchQuery = new BasicDBObject();
searchQueryput("name", "chen");
// 使用collection的find方法查找document
DBCursor cursor = collectionfind(searchQuery);
// 循环输出结果
while (cursorhasNext()) {
Systemoutprintln(cursornext());
}
Systemoutprintln("Hello World");
} catch (UnknownHostException e) {
eprintStackTrace();
} catch (MongoException e) {
eprintStackTrace();
}
}
}
以上就是关于mysql mysqldump如何用全部的内容,包括:mysql mysqldump如何用、mysql触发器原生支持调用外部程序么、一台linux服务器怎么安装多个mysql数据库并配置主从等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)