1.前言
Mydumper是一个针对mysql和Drizzle的高性能多线程备份与恢复工具,其开发人员主要来自Mysql、Facebook、Skysql公司
2.Mydumper特点
- 采用轻量C语言编写,使用glibc库
- 执行速度比mysqldump大约快10倍
- 支持事务性表和非事务性表一致的快照
- 支持快速的文件压缩
- 支持导出binlog(在新版本中已经不能备份binlog)
- 支持到备份文件切块
- 多线程 备份(因为是多线程逻辑备份,备份后会生成多个备份文件)
- 多线程恢复(适用于0.2.1以上版本)
- 在备份时对Myisam表施加FTWRL(flush tables with read lock),会阻塞DML语句
- 支持以守护进程的方式工作,支持定时快照
- 基于GNU GPLv3协议开源
在Mydumper安装包中包含两个可执行程序,即mydumper和myloader,前者用于将数据库中数据备份为文本文件,后者用于恢复mydumper备份的文本文件到数据库中
3.Mysqdump安装
安装依赖包
yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel cmake
4.下载二进制包:
wget https://launchpadlibrarian.net/225370879/mydumper-0.9.1.tar.gz
5.解压安装
tar zxvf mydumper-0.9.1.tar.gz cd mydumper-0.9.1/ cmake . make make install
6.安装完成后生成两个二进制文件mydumper和myloader位于/usr/local/bin目录下
查看是否正常:
mydumper --help
2.实战
2.1导出/导入全库
## 导出全库
mydumper --host=ip --port=xxxx --user=xxxx --password=xxxx --events --routines --triggers --less-locking --chunk-filesize=1024 --complete-insert --outputdir=/data/dump
## 导入全库
myloder --host=ip --port=xxxx --user=xxxx --password=xxxx –directory=/tmp --enable-binlog
2.2 导出/导入指定的库
##导出指定的数据库
mydumper --host=ip --port=xxxx --user=xxxx --password=xxxx --events --routines --triggers --less-locking --chunk-filesize=1024 --complete-insert --database 数据库名 --outputdir=/data/dump
##导入指定的数据库
myloder --host=ip --port=xxxx --user=xxxx --password=xxxx --database 数据库名 –directory=/tmp --enable-binlog
2.3单表备份与恢复
## 导出指定数据库下的table1表下的数据
mydumper --host=ip --port=xxxx --user=xxxx --password=xxxx --events --routines --triggers --less-locking --chunk-filesize=1024 --complete-insert --database 数据库名 -T table1 --outputdir=/data/dump
## 导入到指定的数据库下
myloder --host=ip --port=xxxx --user=xxxx --password=xxxx --database 数据库名 -s 源库名 –directory=/tmp --enable-binlog --overwrite-tables
2.4.快照备份与恢复
mydumper工具使用-D ,--daemon选项启动后台进程,并结合--snapshot-interval=60选项执行快照间隔时间,以及--logfile=dump.log选项指定将信息输出到一个文件中,而不是打印到标准输出上。
mydumper --defaluts-file=xxx -G -E -R -D -L /var/log/mydumer.log -I 60 --skip-tz-utc --complete-insert -u xxx -p xxx -h xxxx -C -o /data/backup/mydumper
2.5 mydumper参数说明
--events 备份事件 --routines 备份存储过程和函数 --triggers 备份触发器 --less-locking 减少对InnoDB表的锁施加时间 --chunk-filesize 将表按大小分块时,指定的块大小,单位是 MB --complete-insert 使用完整的insert语句(包含列名称)。 --outputdir 导出的目录
-D 守护进程模式
-L 表示将输出信息打印到指定的日志文件中,如果没有指定日志we年则默认打印到标准输出上,通常在守护进程模式下使用
-C 指定使用压缩协议连接Mysql,即压缩数据进行传输。
-m 表示不备份表结构
-d 表示不备份数据
2.6myloader参数说明
--enable-binlog 启用还原数据的二进制日志 --overwrite-tables 如果要恢复的表存在,则先drop掉该表,使用该参数,需要备份时候要备份表结构
3.补充:
过滤特定库,如本来不备份mysql及test库
mydumper -u leshami -p pwd -B sakila --regex '^(?!(mysql|test))' -o /tmp/bak
参考文章:https://blog.csdn.net/leshami/article/details/46815553
该参考文章可以重点看一下:主要关于Mydumper的一些备份技巧