简介mydumper 是一款开源的 MySQL 逻辑备份工具,次要由 C 语言编写。与 MySQL 自带的 mysqldump 相似,然而 mydumper 更快更高效。mydumper 的一些长处个性:s
轻量级C语言开发反对多线程备份数据,备份后按表生成多个备份文件反对事务性和非事务性表一致性备份反对将导出的文件压缩,节约空间反对多线程复原反对已守护过程模式工作,定时快照和间断二进制日志反对按指定大小将备份文件切割数据与建表语句拆散下载安装装置形式十分多,以下介绍几种常见的形式。
Ubuntu 中自带了 myloader
sudo apt-get install mydumper应用 deb 包装置,以 Ubuntu 为例
apt-get install libatomic1wget https://github.com/mydumper/m...$(lsb_release -cs)_amd64.deb dpkg -i mydumper_0.11.5-1.$(lsb_release -cs)_amd64.deb编译装置docker 装置依据理论平台状况,可抉择不同的装置形式,官网也提供了一些常见的装置文档,https://github.com/mydumper/mydumper
参数阐明mydumper 参数阐明-B, --database 要备份的数据库,不指定则备份所有库,个别倡议备份的时候一个库一条命令-T, --tables-list 须要备份的表,名字用逗号隔开-o, --outputdir 备份文件输入的目录-s, --statement-size 生成的insert语句的字节数,默认1000000-r, --rows 将表按行分块时,指定的块行数,指定这个选项会敞开 --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 不备份表数据-G, --triggers 备份触发器-E, --events 备份事件-R, --routines 备份存储过程和函数-W, --no-views 不备份视图--where 只导出符合条件的数据-k, --no-locks 不应用长期共享只读锁,应用这个选项会造成数据不统一--less-locking 缩小对InnoDB表的锁施加工夫(这种模式的机制下文详解)-l, --long-query-guard 设定阻塞备份的长查问超时工夫,单位是秒,默认是60秒(超时后默认mydumper将会退出)--kill-long-queries 杀掉长查问 (不退出)-b, --binlogs 导出binlog-D, --daemon 启用守护过程模式,守护过程模式以某个距离不间断对数据库进行备份-I, --snapshot-interval dump快照间隔时间,默认60s,须要在daemon模式下-L, --logfile 应用的日志文件名(mydumper所产生的日志), 默认应用规范输入--tz-utc 跨时区时应用的选项。容许备份timestamp,这样会导致不同时区的备份还原出问题,默认敞开。--skip-tz-utc 同上,默认值。--use-savepoints 应用savepoints来缩小采集metadata所造成的锁工夫,须要 SUPER 权限--success-on-1146 Not increment error count and Warning instead of Critical in case of table doesn't exist-h, --host 连贯的主机名-u, --user 备份所应用的用户-p, --password 明码-P, --port 端口-S, --socket 应用socket通信时的socket文件-t, --threads 开启的备份线程数,默认是4-C, --compress-protocol 压缩与mysql通信的数据-V, --version 显示版本号-v, --verbose 输入信息模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为 2myloader 参数阐明-d, --directory 备份文件的文件夹-q, --queries-per-transaction 每次事务执行的查问数量,默认是1000-o, --overwrite-tables 如果要复原的表存在,则先drop掉该表,应用该参数,须要备份时候要备份表构造-B, --database 还原到的数据库(指标库)-s, --source-db 被还原的数据库(源数据库),-s db1 -B db2,示意源库中的db1数据库,导入到db2数据库中。-e, --enable-binlog 启用还原数据的二进制日志-h, --host 主机-u, --user 还原的用户-p, --password 明码-P, --port 端口-S, --socket socket文件-t, --threads 还原所应用的线程数,默认是4-C, --compress-protocol 压缩协定-V, --version 显示版本-v, --verbose 输入模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为2罕用案例mydumper 导出示例# 集体理论中最罕用的备份语句mydumper -B test -o /home/mydumper/data/test -e -G -R -E -D -u root -p 123456 -h 192.168.0.191 -P 3306 -v 3 --long-query-guard 288000 --skip-tz-utc --no-locks --logfile /home/mydumper/log/test# 备份全副数据库 mydumper -u root -p 123456 -o /home/mydumper/data/all/# 备份全副数据库,排除零碎库,mydumper -u root -p 123456 --regex '^(?!(mysql|sys|performance_schema|information_schema))' -o /home/mydumper/data/all/# 备份全副数据库,蕴含触发器、事件、存储过程及函数mydumper -u root -p 123456 -G -R -E -o /home/mydumper/data/all/# 备份指定库mydumper -u root -p 123456 -G -R -E -B db1 -o /home/mydumper/data/db1# 备份指定表mydumper -u root -p 123456 -B db1 -T tb1,tb2 -o /home/mydumper/data/db1# 只备份表构造mydumper -u root -p 123456 -B db1 -d -o /home/mydumper/data/db1# 只备份表数据mydumper -u root -p 123456 -B db1 -m -o /home/mydumper/data/db1myloader 导入案例# 集体理论中最罕用的导入语句myloader -h 192.168.0.192 -P 33306 -u root -p 123456 -t 1 -v 3 -d /home/mydumper/data/test/0/ -B test# 从备份中复原指定库myloader -u root -p 123456 -s db1 -o -d /home/mydumper/data/all/0/# 导入时开启 binlogmyloader -u root -p 123456 -e -o -d /home/mydumper/data/db1/0/# 将源库的 db1 导入到备库的 db1_bak 库中myloader -u root -p 123456 -B db1_bak -s db1 -o -d /home/mydumper/data/db1/0/# 导入特定的某几张表## 先将 metadata 文件和须要独自导入的表的构造文件和数据文件导入到独自的文件夹中。此处默认库已建好,否则还须要复制建库相干语句。cp /home/mydumper/data/db1/0/metadata /backup/db1/0/cp /home/mydumper/data/db1/0/d1.t1-schema.sql /backup/db1/0/cp /home/mydumper/data/db1/0/d1.t1.sql /backup/db1/0/## 从新文件夹中导入数据myloader -u root -p 123456 -B db1 -d /backup/db1/0/## 以上就能够独自导入 db1.t1 表对于 -e 参数,须要略微留神下。默认状况下,myloader 是不开启 binlog 的,这样能够进步导入速度。如果导入实例有从库,且须要导入的后果同步到从库上,则须要应用 -e 关上 binlog 记录。导出之后的目录如下,以数据库 d1 ,其中有表 t1 为例:
...