1.什么是mydumper?
MyDumper是一个数据库的逻辑备份工具,和官方的mysqldump,mysqlpump类似。主要有命令2个工具:mydumper和myloader。
2.Mydumper 版本0.10.7新特性
2.1为每个包含行数的表添加元数据文件。
2.2增加where条件导出。
2.3增加选项启用和禁用redo_log(mysql 8 版本的特性)
2.4添加wsrep_sync_wait 支持。(Galera集群和一致读取可能导致死锁和停机)
2.5添加快速索引创建功能(这个功能不错)。
2.6添加主键排序功能。
2.7增加了对转储文件的checksum校验支持。
2.8使用单引号而不是双引号转储字符串。
2.9增加指定快照数量。
3.测试
开始导表Sbtest的数据
[root@localhost dumper_back]# mydumper -B sbtest --user=test --password=test --host=192.168.17.110 --port=19329 -o /data/dumper_back --logfile=/data/dumper_back/dump.log
查看备份目录文件如下:
备分文件中主要有metadata文件,每个表的schema文件,每个表的数据,增加了一个表有多少数据记录的文件(文件名是schema+表名+metadata).
恢复数据库sbtest。
time myloader -B sbtest --user=test --password=test --host=192.168.17.110 --port=19329 --innodb-optimize-keys -o --directory=/data/dumack --logfile=/data/dumper_back/import.log
real 0m9.797s
user 0m0.336s
sys 0m0.175s
[root@localhost dumper_back]# time myloader -B sbtest --user=test --password=test --host=192.168.17.110 --port=19329 -o --directory=/data/dumper_back --logfile=/data/dumper_back/import.log
real 0m10.420s
user 0m0.328s
sys 0m0.181s
–innodb-optimize-keys 这个是快速索引创建功能,由于我的数据不多,导入速度提高不明显,只提高了1秒多。
备份特定条件的数据
mydumper -B sbtest -T sbtest1 --user=test --password=test --host=192.168.17.110 --port=19329 --where=’ id in (162849,162848,162847)’ -o /data/dumper_back
查看导出的数据文件
[root@localhost dumper_back]# cat sbtest.sbtest1.sql
/!40101 SET NAMES binary/;
/!40014 SET FOREIGN_KEY_CHECKS=0/;
/*!40103 SET TIME_ZONE=’+00:00’ */;
INSERT INTO sbtest1
VALUES
(162847,6,‘6’,‘6’),
(162848,7,‘7’,‘7’),
(162849,2,‘2’,‘2’);
其它功能不一一测试,感兴趣的朋友请自行测试。
4.mydumper原理
把general_log 打开,可以查看mydumper大概原理操作过程。
原理过程如下:
1.加数据库全局读锁。
2.读取当前时间点的二进制日志文件名和日志写入的位置并记录在metadata文件中。
3.默认4个并行线程创建一致性读。
4.导出表结构。
5.释放全局表锁。
6.开始一致性读导出表数据。
7.导完数据后结束。