您的位置:首页 > 数据库 > MySQL

MySQL多线程备份恢复工具mydumper,myloder

2015-08-04 17:09 721 查看
mydumper是多线程备份工具,默认开启4个线程,比mysqldump的速度更快mydumper备份时,数据和表结构是分开的,比如备份test表时,会生成test.sql文件和test.schema.sql文件。myloader导数据的时候默认不会记录二进制日志,即使你的sql_log_bin=on.

准备安装介质:
下载mydumper-0.6.2.tar.gz
下载地址:https://launchpad.net/mydumper

安装依赖包:
# yum install glib2-devel mysql-devel zlib-devel pcre-devel

编译安装
# tar zxvf mydumper-0.6.2.tar.gz
# cd mydumper-0.6.2
# mkdir bin
# cd bin
# cmake ../
# make
# make install

安装好后可以看到/usr/local/bin目录下面多了mydumper和myloader两个命令

# ll /usr/local/bin/
total 188
-rwxr-xr-x 1 root root 132868 Aug 3 22:51 mydumper
-rwxr-xr-x 1 root root 47491 Aug 3 22:51 myloader

# ./mydumper --database=test --outputdir=/data/backup/test
./mydumper: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

创建软链接即可解决这个报错:
# ln -s /usr/local/mysql/lib/libmysqlclient.so.18/usr/lib/
# ldconfig -v

导出:
# mydumper --database=test --outputdir=/data/backup/test

导入:
# myloader -B test -d /data/backup/test

利用备份建从库:
cd /data/backup/test
里面有一个metadata文件,这个文件记录的是当前的binlog文件及pos,可以使用这个信息搭建从库

mydumper参数介绍:
-B, --database 备份数据库
-T, --tables-list 备份表列表,多个表以“,”逗号分隔
-o, --outputdir 指定备份目录
-s, --statement-size insert长度,单位是byte, default 1000000,这个参数不能太小,不然会报 Row bigger than statement_size for tools.t_serverinfo
-r, --rows 分割表,多少行记录为一个chunk. 默认是off的
-F, --chunk-filesize 分割表,以多个文件备份,单位是MB
-c, --compress 压缩备份
-e, --build-empty-files 如果表没有数据,还是创建这个文件
-x, --regex 正则匹配数据库、表,如db.table1
-i, --ignore-engines 忽略指定引擎的表
-m, --no-schemas 不备份表结构
-k, --no-locks 不加临时的share read lock,这个可能会造成数据不一致
--less-locking innodb表时,最小时间lock
-l, --long-query-guard 设置最长查询时间,默认是60s
-K, --kill-long-queries 将长查询进行杀掉
-D, --daemon 开启守护进程模式
-I, --snapshot-interval 快照时间,默认是60s
-L, --logfile 日志文件,默认是标准输出
--tz-utc 设置时区,只有备份应用到不同时区的时使用,默认是 --skip-tz-utc是关闭的.
--skip-tz-utc
--use-savepoints Use savepoints to reduce metadata locking issues, needs SUPER privilege
--success-on-1146 Not increment error count and Warning instead of Critical in case of table doesn't exist
--lock-all-tables Use LOCK TABLE for all, instead of FTWRL
-h, --host 主机
-u, --user 用户
-p, --password 密码
-P, --port 端口
-S, --socket socket文件
-t, --threads 并发线程数,默认是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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息