update 2021-11-11
备份的数据库假如出现执行事务超过60秒,备份会失败
(mydumper:23816): CRITICAL **: 10:55:17.539: There are queries in PROCESSLIST running longer than 60s, aborting dump,
use --long-query-guard to change the guard value, kill queries (--kill-long-queries) or use
different server for dump
前段时间需要把生产的某个库做一个迁移,但是使用mysqldump有点太慢了,使用xtrabackup,我实在搞不定,只单独恢复一个库咋整,所以就研究了一下mydumper/myloader这个工具,因为用它是有同事备份一个上亿的表几分钟就导出了,让我非常惊讶这个工具的性能。
安装
下载rpm包
Releases · maxbube/mydumper (github.com)
rpm -ivh mydumper-0.9.1-4.1.x86_64.rpm
安装完成后,mydumper 和myloader就都有了。
导出一个库
mydumper -u admin --password='******' -S /data/mysqldata/3306/tmp/mysql.sock -B same_database -t 10 --trx-consistency-only --outputdir /data/mysqldata/backup/same_database
- -t 10 10个线程来导出,默认4个
- --trx-consistency-only 事务一致性
- --outputdir 导出到那个目录
导入一个库
导入到一个新数据库
直接导入即可。
导入到一个已有的数据库
这个时候记得最好把原来的数据库drop 掉,再新建一个,否则会产生主键冲突,或者数据冗余,脏数据等问题,例如需要导入的库表已经存在数据了,又insert一批数据,并且没有unique key ,就导致产生垃圾数据。
或者加入参数-o -o, --overwrite-tables Drop tables if they already exist
导入到从库
记得reset maser
myloader -u admin --password='******' -S /data/mysql/data/3306/mysqld.sock -v 3 -B same_database -t 10 -d /data/mysql/data/backup/same_database
- -v 3 是打印一些信息,省的在导入数据量比较大的时候,傻乎乎的等待,一点进度都没有。
myloader --help信息
[mysql@ZHDDB-DATA1001 3306]$ myloader --help
Usage:
myloader [OPTION...] multi-threaded MySQL loader
Help Options:
-?, --help Show help options
Application Options:
-d, --directory Directory of the dump to import
-q, --queries-per-transaction Number of queries per transaction, default 1000
-o, --overwrite-tables Drop tables if they already exist
-B, --database An alternative database to restore into
-s, --source-db Database to restore
-e, --enable-binlog Enable binary logging of the restore data
-h, --host The host to connect to
-u, --user Username with privileges to run the dump
-p, --password User password
-P, --port TCP/IP port to connect to
-S, --socket UNIX domain socket file to use for connection
-t, --threads Number of threads to use, default 4
-C, --compress-protocol Use compression on the MySQL connection
-V, --version Show the program version and exit
-v, --verbose Verbosity of output, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2
网友评论