前言

Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具。开发人员主要来自MySQL,Facebook,SkySQL公司。性能比自带的mysqldump强劲
github: https://github.com/mydumper/mydumper

1、安装

redhat、centos举例

1.1 安装依赖

1.1.1 安装编译库

1
yum install -y cmake gcc gcc-c++ git make

1.1.2 安装开发库

1
yum install -y glib2-devel mysql-devel openssl-devel pcre-devel zlib-devel libzstd-devel

1.1.3 安装mysql开发版库

1
2
3
yum install -y mysql-devel
yum install -y Percona-Server-devel-57
yum install -y mariadb-devel

1.2 mydumper安装

1
2
3
4
5
6
wget https://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz
tar zxvf mydumper-0.9.1.tar.gz
cd mydumper-0.9.1
cmake .
make
make install

2、常用备份、还原命令

2.1 备份

1
mydumper -u root -p XXX -h localhost -B XXX -o /data/backup/20180916

2.2 恢复

1
myloader -u root -p XXX -h localhost -B XXX -d /data/backup/20180916

3、参数说明

3.1 mydumper 的常用参数

参数 说明
-B –database 要导出的dbname
-T –tables-list 需要导出的表名,导出多个表需要逗号分隔,t1[,t2,t3 ….]
-o –outputdir 导出数据文件存放的目录,mydumper会自动创建
-s –statement-size 生成插入语句的字节数, 默认1000000字节
-r –rows Try to split tables into chunks of this many rows. This option turns off –chunk-filesize
-F –chunk-filesize 切割表文件的大小,默认单位是 MB ,如果表大于
-c –compress 压缩导出的文件
-e –build-empty-files 即使是空表也为表创建文件
-x –regex 使用正则表达式匹配 db.table
-i –ignore-engines 忽略的存储引擎,多个值使用逗号分隔
-m –no-schemas 只导出数据,不导出建库建表语句
-d –no-data 仅仅导出建表结构,创建db的语句
-G –triggers 导出触发器
-E –events 导出events
-R –routines 导出存储过程和函数
-k –no-locks 不执行临时的只读锁,会导致备份不一致 。
WARNING: This will cause inconsistent backups
–less-locking 最小化在innodb表上的锁表时间
–butai
-l –long-query-guard 设置长时间执行的sql 的时间标准
-K –kill-long-queries 将长时间执行的sql kill
-D –daemon 以守护进程的方式执行
-I –snapshot-interval 创建导出快照的时间间隔,默认是 60s ,该参数只有在守护进程执行的时候有用。
-L –logfile指定mydumper输出的日志文件,默认使用控制台输出。
–tz-utc SET TIME_ZONE=’+00:00’ at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones, defaults to on use –skip-tz-utc to disable.
–skip-tz-utc
–use-savepoints 使用savepoints 减少MDL 锁事件 需要 SUPER 权限
–success-on-1146 Not increment error count and Warning instead of Critical in case of table doesn

3.2 myloader使用参数

参数 说明
-d –directory 备份文件的文件夹
-q –queries-per-transaction 每次事物执行的查询数量,默认是1000
-o –overwrite-tables 如果要恢复的表存在,则先drop掉该表,使用该参数,需要备份时候要备份表结构
-B –database 需要还原的数据库
-e –enable-binlog 启用还原数据的二进制日志
-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 还原所使用的线程数,默认是4
-C –compress-protocol 压缩协议
-V –version 显示版本
-v –verbose 输出模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为2

4、metadata文件

metadata文件存储了binlog位置点和备份开始结束的时间

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
cat metadata
Started dump at: 2021-06-10 17:23:10
SHOW MASTER STATUS:
	Log: mysql-bin.000001
	Pos: 472
	GTID:03d52d94-c6a7-11eb-9322-000c29b99c14:1-1534082,
71557f9f-c9c3-11eb-9a33-000c29b99c14:1-2,
c58301f7-f8ad-11ea-b9f5-000c29bcd489:1-3259357

Finished dump at: 2021-06-10 17:23:25