mydumper及myloader用法
mydumper -h 192.168.182.128 -u source -p 123456 -B source -t 8 -r 10000 -c --less-locking -v 3 -D -L /test/log/mydumper.log -o /test/data/
myloader -h 192.168.182.128 -u target -p 123456 -B target -e -t 8 -d /test/data/0/ --overwrite-tables -v 3
mydumper备份的速度、myloader的恢复速度,比mysql自己的工具执行速度快很多,大大减少业务的处理时间。
1.安装
# yum install glib2-develmysql-devel zlib-devel pcre-devel -y
# wget https://launchpadlibrarian.net/225370879/mydumper-0.9.1.tar.gz
# cmake ./
#make && make install
或
yum -y install glib2-devel mysql-devel zlib-devel pcre-devel cmake gcc-c++ git
cd /usr/MyWorkSpace/
git clone https://github.com/maxbube/mydumper.git
cd mydumper
//注意下面包含'.'
cmake .
make && make install
安装完成后生成两个二进制文件mydumper和myloader位于/usr/local/bin目录下
2.mydumper及myloader命令的参数
mydumper参数:
序号 | 参数 | 解释 |
---|---|---|
1 | -B, --database | 要备份的数据库,不指定则备份所有库 |
2 | -T, --tables-list | 需要备份的表,名字用逗号隔开 |
3 | -o, --outputdir | 备份文件输出的目录 |
4 | -s, --statement-size | 生成的insert语句的字节数,默认1000000 |
5 | -r, --rows | 将表按行分块时,指定的块行数,指定这个选项会关闭 --chunk-filesize |
6 | -F, --chunk-filesize | 将表按大小分块时,指定的块大小,单位是 MB |
7 | -c, --compress | 压缩输出文件 |
8 | -e, --build-empty-files | 如果表数据是空,还是产生一个空文件(默认无数据则只有表结构文件) |
9 | -x, --regex | 是同正则表达式匹配 ‘db.table’ |
10 | -i, --ignore-engines | 忽略的存储引擎,用逗号分割 |
11 | -m, --no-schemas | 不备份表结构 |
12 | -k, --no-locks | 不使用临时共享只读锁,使用这个选项会造成数据不一致 |
13 | –less-locking | 减少对InnoDB表的锁施加时间(减少锁等待的时间) |
14 | -l, --long-query-guard | 设定阻塞备份的长查询超时时间,单位是秒,默认是60秒(超时后默认mydumper将会退出) |
15 | –kill-long-queries | 杀掉长查询 (不退出) |
16 | -b, --binlogs | 导出binlog |
17 | -D, --daemon | 启用守护进程模式,守护进程模式以某个间隔不间断对数据库进行备份 |
18 | -I, --snapshot-interval | dump快照间隔时间,默认60s,需要在daemon模式下 |
19 | -L, --logfile | 使用的日志文件名(mydumper所产生的日志), 默认使用标准输出 |
20 | –tz-utc | 跨时区是使用的选项,不解释了 |
21 | –skip-tz-utc | 同上 |
22 | –use-savepoints | 使用savepoints来减少采集metadata所造成的锁时间,需要 SUPER 权限 |
23 | –success-on-1146 | 如果表不存在,则不增加错误计数和警告 |
24 | -h, --host | 连接的主机名 |
25 | -u, --user | 备份所使用的用户 |
26 | -p, --password | 备份用户的密码 |
27 | -P, --port | 端口 |
28 | -S, --socket | 使用socket通信时的socket文件 |
29 | -t, --threads | 开启的备份线程数,默认是4 |
30 | -C, --compress-protocol | 压缩与mysql通信的数据 |
31 | -V, --version | 显示版本号 |
32 | -v, --verbose | 输出信息模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为 2 |
myloader参数:
序号 | 参数 | 解释 |
---|---|---|
1 | -d, --directory | 备份文件的目录 |
2 | -q, --queries-per-transaction | 每次事物执行的查询数量,默认是1000 |
3 | -o, --overwrite-tables | 如果要恢复的表存在,则先drop掉该表,使用该参数,需要备份时候要备份表结构 |
4 | -B, --database | 需要还原的数据库 |
5 | -e, --enable-binlog | 启用还原数据的二进制日志 |
6 | -h, --host | 连接的主机名 |
7 | -u, --user | 备份所使用的用户 |
8 | -p, --password | 备份用户的密码 |
9 | -P, --port | 端口 |
10 | -S, --socket | 使用socket通信时的socket文件 |
11 | -t, --threads | 开启的备份线程数,默认是4 |
12 | -C, --compress-protocol | 压缩协议 |
13 | -V, --version | 显示版本 |
14 | -v, --verbose | 输出模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为2 |
3.mydumper输出文件说明:
metadata:元数据,记录备份开始和结束时间,以及binlog日志文件位置。
table data:每个表一个文件
table schemas:表结构文件
daemon mode:在这个模式下,有五个目录0,1,binlogs,binlog_snapshot,last_dump。
备份目录是0和1,间隔备份,如果mydumper因某种原因失败而仍然有一个好的快照,
当快照完成后,last_dump指向该备份。
4.mydumper用例
备份hellodb数据库到当前目录下
# mydumper -uroot -proot -B hellodb -o ./
# ll 是每个表单独备份的
# cat metadata 可以看到
以守护进程方式每30分钟备份一次
# mydumper -uroot -proot -B hellodb-o /home/data/bak -D -I 30
数据库的还原覆盖操作
# myloader -o -B hellodb -o -d/home/data/bak/last_dump