mydumper 完全参考手册
原文链接 http://dbarobin.com/2015/04/07/mydumper/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
目录
- Table of Contents {:toc}
文/Robin
本站推广
币安是全球领先的数字货币交易平台,提供比特币、以太坊、BNB 以及 USDT 交易。
币安注册: https://accounts.binancezh.pro/cn/register/?ref=11190872 邀请码: 11190872
一 引子
mysqldump 相信大家已经耳熟能详,相比 mysqldump,mydumper 具有如下优势:
- 多线程
- 高性能
仅凭多线程这一点就可以让你对 mydumper 爱不释手。mydumper 最新稳定版是 0.6.2,读者可以从这里下载到。本文讲解怎么编译安装 mydumper,以及怎么使用它。看完此文,相信大家会对 mydumper 有较全面的了解。
二 编译安装
$ yum install make cmake pcre-devel glib2-devel zlib-devel \
gcc gcc-c++ mysql-devel openssl-devel python-sphinx -y
$ tar -zxvf mydumper-0.6.2.tar.gz
$ cd mydumper-0.6.2
$ cmake .
$ make
$ make install
需要注意的是,如果出现像 StackOverFlow 中那样的问题,可以尝试把解压的目录删除,再次解压缩 *.tar.gz 文件即可。
三 使用以及详细讲解
为了测试的便利,我们创建一个目录,用于存放备份的文件。
$ mkdir /backdir
$ cd /backdir/
在备份之前,我已经在测试库中导入了测试数据。下面,逐个展示用法,以及进行相应的讲解。
导出 test 库的数据:
$ mydumper -h 127.0.0.1 -u root -p root --database test
$ ls
export-20150407-144226
-h、-u、-p 这几个参数大家都很熟悉了,跟 mysqldump 一样,这里也就不赘述了。导出的目录为 export-20150407-144226
,很显然目录的命名规则是:export-阿拉伯数字表示的具体年月日-阿拉伯数字表示的具体时分秒,其中小时采用 24 小时制。该目录包含 Metadata 以及逻辑备份的 SQL 文件。SQL 文件包括两种,一种是 Schema 文件,命名规则是:数据库名.表名-schema.sql;另一种是数据文件,命名规则是:数据库名.表名.sql。打开备份的 SQL 文件,可以在 Schema 中见到 DDL 语句,在数据文件中看到具体的 INSERT 语句。
指定某个导出目录:
$ mydumper -h 127.0.0.1 -u root -p root --database test \
--outputdir=/backdir/export-20150407-144927
$ ll export-20150407-144927/
使用 --outputdir
参数指定导出目录后,生成的 Metadata 以及逻辑备份的 SQL 文件就保存在指定目录中。
只导出数据不导出表结构:
$ mydumper -h 127.0.0.1 -u root -p root --database test --no-schemas
实现此功能,需要指定 --no-schemas
参数,此时导出的文件中就没有 Schema 文件了。
如果表数据是空,还是产生一个空文件:
为了让测试效果更明星,我创建一个测试数据库,以及只创建一张空表。
mysql -uroot -proot
mysql> CREATE DATABASE robin;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE TABLE test
-> (id INT(4) AUTO_INCREMENT PRIMARY KEY,
-> name VARCHAR(20));
Query OK, 0 rows affected (0.07 sec)
$ mydumper -h 127.0.0.1 -u root -p root --build-empty-files
$ ls export-20150407-150217/robin.test*
export-20150407-150217/robin.test-schema.sql export-20150407-150217/robin.test.sql
默认无数据则只有表结构文件,加上 --build-empty-files
参数后,即使是一张空表,仍然会创建一个文件。
设置长查询的上限,如果存在比这个还长的查询则退出 mydumper,也可以设置杀掉这个长查询:
$ mydumper -h 127.0.0.1 -u root -p root --long-query-guard 300 --kill-long-queries
实现此功能需要指定 --long-query-guard
参数,后面加上限值即可。同时,杀掉长查询,需要指定 --kill-long-queries
参数。
设置需要导出的列表 -–tables-list,需要设置数据库名字,逗号分割:
$ mydumper -h 127.0.0.1 -u root -p root --tables-list=test.mt_test,robin.test
注意,此参数需要加上数据库名字。执行完成后,在导出目录即可看到上述两张表的表结构以及数据。
通过 regex 设置正则表达式,需要设置数据库名字:
$ mydumper -h 127.0.0.1 -u root -p root --regex=test.mt_test
此功能跟上面的 --tables-list 类似。
把单表分成多个 chunks:
$ mydumper -h 127.0.0.1 -u root -p root --rows 2000
实现此功能,加上 --rows
参数。如果一张表的记录数超过设置的值,则这张表会拆分成多个 SQL 文件,命名规则如下:数据库名.表名.0000x.sql,x 从 0 开始。
过滤某个引擎的表:
$ mydumper -h 127.0.0.1 -u root -p root -B test --ignore-engines=innodb
加上 --ignore-engines
参数后,指定的存储引擎就会被过滤,亦即不导出指定存储引擎的表。
查看详细日志:
$ mydumper -h 127.0.0.1 -u root -p root -B test -v 3
加上 -v
参数即可查看日志,取值可以是 0、1、2、3,分别表示静默模式、只输出错误、只输出警告、详细信息,默认取值是 2。
指定导出线程数:
$ mydumper -h 127.0.0.1 -u root -p root -B test --threads 10
前面提到,mydumper 是多线程的。加上 --threads
参数后,可以指定线程数,如果导出的数据较多,建议指定此参数,并且设置一个合理的值。另外,加上此参数,明星导出速度快了很多,这就是多线程的优势。当然,多线程肯定会消耗更多的系统资源。
后台运行:
$ mydumper -h 127.0.0.1 -u root -p root -B test --daemon
加上 --daemon
参数即可实现后台执行导出命令。
压缩导出的 SQL 文件:
$ mydumper -h 127.0.0.1 -u root -p root -B test --compress
加上 --compress
即可实现压缩导出的 SQL 文件。可以看到压缩后的 SQL 文件以 .gz 结尾。我们可以使用 gunzip 命令来解压。具体用法是:gunzip –c filename.gz > filename
。
我们可以通过下面的测试看到,未经过压缩和经过压缩的导出目录差别很大:
$ du -sh export-20150407-151641/
11M export-20150407-151641/
$ du -sh export-20150407-151811/
1.8M export-20150407-151811/
最后,更多参数可以通过 mydumper --help
获取。
本站推广
币安是全球领先的数字货币交易平台,提供比特币、以太坊、BNB 以及 USDT 交易。
币安注册: https://accounts.binancezh.pro/cn/register/?ref=11190872 邀请码: 11190872
Enjoy!
四 参考资料
–EOF–
版权声明:自由转载-非商用-非衍生-保持署名(创意共享4.0许可证)