mysql 逻辑备份工具_MySQL 逻辑备份工具

简介:

Mydumper、Myloader 是一个第三方的、开源的 MySQL 逻辑备份工具。

支持多线程,比起 mysqldump 要快很多,也能解决 innobackupex 备份工具对 MyISAM 引擎备份的不便。

多线程快速逻辑备份,恢复速度不咋地,支持快照功能。

呃,虽然这样好、那样好,但如果单库、又很大的时候,备份还是选择 innobackupex 物理备份吧,速度就是快。

一、安装 Mydumper

shell > yum -y install gcc gcc-c++ glib2-devel pcre-devel zlib-devel mysql-devel

shell> cd /usr/local/src; wget https://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz

shell > tar zxf mydumper-0.9.1.tar.gz

shell> cd mydumper-0.9.1shell> cmake . && make && make installshell> /usr/local/bin/mydumper --help/usr/local/bin/mydumper: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such fileor directory

shell> find / -name "libmysqlclient.so.18"

/usr/local/src/mysql-5.5.52/libmysql/libmysqlclient.so.18

/usr/local/mysql-5.5.52/lib/libmysqlclient.so.18shell> ln -s /usr/local/mysql-5.5.52/lib/libmysqlclient.so.18 /usr/lib64/

二、Mydumper 全备

shell > /usr/local/bin/mydumper --help-B, --database 指定备份的数据库,不指定时为备份全库(除 information_schema、performance_schema)-T, --tables-list 指定备份的表,逗号分隔-o, --outputdir 指定备份目录-c, --compress 压缩备份输出-e, --build-empty-files 即使表中无数据也备份成一个文件-x, --regex 支持正则表达式 db.table,如 --regex '^(?!(mysql|test))'不备份 mysql、test 库-m, --no-schemas 不备份表结构-d, --no-data 不备份数据-G, --triggers 备份 triggers-E, --events 备份 events-R, --routines 备份存储过程跟函数-k, --no-locks 不适用共享读锁,会导致数据不一致-D, --daemon 以守护进程的方式启动-I, --snapshot-interval 快照间隔时间,默认 60秒-h, --host-u, --user-p, --password-P, --PORT-S, --socket-t, --threads 启动几个线程,默认 4

-C, --compress-protocol MySQL 连接上使用压缩协议,建议远程备份时使用

... 还有一些不常用的指令 通过--help 获取

shell > /usr/local/bin/mydumper -u xxxx -p xxxx -e -c -B db_xxx -o /data/backup_db/2017-07/db_xxx_05 # 目录 db_xxx_05 会自动创建

shell> ls -1 /data/backup_db/2017-07/db_xxx_05

db_xxx-schema-create.sql.gz

db_xxx.table_1.sql.gz

db_xxx.table_1-schema.sql.gz

...

metadata

# 备份目录下会生成如上几种类型的文件,可以使用gunzip解压后读取、分析

# db_xxx-schema-create.sql.gz 备份的数据库创建语句,也就是说恢复时不需要事先创建数据库

# db_xxx.table_1.sql.gz 数据表数据文件

# db_xxx.table_1-schema.sql.gz 数据表结构文件

shell> cat /data/backup_db/2017-07/db_xxx_05/metadata

Started dump at:2017-07-05 14:57:56SHOW MASTER STATUS:

Log: mysql-bin.000024Pos:760137384GTID:(null)

Finished dump at:2017-07-05 15:01:20# metadata 记录了备份时刻的 MASTER 信息(如果备份的是从库,还会记录 SLAVE STATUS),备份开始时间、结束时间

三、Myloader 全备恢复

shell > /usr/local/bin/myloader --help-d, --directory 指定备份数据存放目录-o, --overwarite-tables 如表存在,则覆盖写入-B, --database 指定恢复的数据库-s, --source-db-e, --enable-binlog-h, --host-u, --user-p, --password-P, --PORT-S, --socket-t, --threads-C, --compress-protocol

...

shell > /usr/local/bin/myloader -u xxxx -p xxxx -B db_xxx -d /data/backup_db/2017-07/db_xxx_05

# 这是恢复单库到一个新的 MySQL(不需要提前创建数据库),不指定-B 时,恢复备份中的所有数据

# 恢复单表时,解压后直接 source .sql 即可

# 恢复到原库时,需要添加-o 参数,覆盖写入

# 机器性能允许的情况下,添加-t 参数,开启多个并行线程恢复

四、如何加快恢复速度 ?

shell > mysql -u xxxx -p xxxx

mysql>show processlist;| 26 | root | localhost | baofeng_tv | Query | 2 | update |INSERT INTO `std_tj_sinideo` VALUES|

| 27 | root | localhost | baofeng_tv | Query | 2 | update |INSERT INTO `std_alum_kwords` VALUES| 28 | root | localhost | baofeng_tv | Query | 1 | update |INSERT INTO `std_epode_qyi` VALUES| 29 | root | localhost | baofeng_tv | Query | 2 | update | INSERT INTO `std_alum_stams` VALUES

# 默认情况下,可以看到有 4 个线程在插入数据,一个线程负责一张表,执行完换下一张 ( myloader -u -p -B -d )

# 19G 的数据库恢复了 82分22秒,简直不能忍

shell > /usr/local/bin/mydumper -u root -c -e -B baofeng_tv -F 500 -o /data/backup_db/baofeng_tv_06 -t 8shell> /usr/local/bin/myloader -u root -B baofeng_tv -o -d /data/backup_db/baofeng_tv_06 -t 8

# -F 按大小拆分备份,恢复的时候也并没什么效果,备份速度挺快,恢复不咋地!

# 那个,快照咋搞 ?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值