千家信息网

mysql中mysqldumper怎么用

发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,这篇文章主要为大家展示了"mysql中mysqldumper怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"mysql中mysqldumper怎么用"
千家信息网最后更新 2025年11月16日mysql中mysqldumper怎么用

这篇文章主要为大家展示了"mysql中mysqldumper怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"mysql中mysqldumper怎么用"这篇文章吧。

并行处理

使用mydumper命令的局限在与他是一个单线程进程。但开源的mydumper是一个很好的替代。

mydumper(http://www.mysqldumper.org/)是一个在GNU GPLv3许可下发布的高性能MySQL备份和恢复工具集。mydumper是多线程的,他创建一个mysql备份就比随mysql发布的mysqldump工具要快得多。mydumper也有从源端服务器恢复二进制日志的能力。

mydumper的优点:

多线程,可以是转存数据快很多。

mydumper的输出已于管理和分析,因为他的表和元数据是分开的单独文件。

所有线程都维护有一直的快照,这边提供了精准的主从位置。

Mydumper支持Perl正则表达式,这样就既可以包括是数据库名和报名的模式匹配,也可以配置这种匹配。

通过名为myloader的多线程工具,mydumper工具集也可以从mydumper备份中恢复数据。

mydumper必须在源代码上进行编辑。这就需要带有C++编辑器的系统。另外还需要如下组件:

Cmake、带有开发包的Glib2、带有开发包的PCRE、mysql的客户端库和开发工具

安装步骤如下:

依赖包:Fedora, RedHat and CentOS: yum install glib2-devel* mysql-devel* zlib-devel* pcre-devel* openssl-devel* -y

tar -zxvf mydumper-0.2.3.tar.gz

cd mydumper-0.2.0.3/

cmake .

make

./mydumper -help

sudo cp mydumper /usr/local/bin

简单用法:

mkdir /mysql/bakcup/mydumper

cd /mysql/backup/mydumper

time mydumper

[root@d4jtarmsvurd01 mydumper_bak]# pwd

/mysql/mydumper_bak

[root@d4jtarmsvurd01 mydumper_bak]# ls ex*

metadata mysql.proc-schema.sql

mysql-schema-create.sql mysql.procs_priv-schema.sql

mysql.columns_priv-schema.sql mysql.servers-schema.sql

mysql.db-schema.sql mysql.tables_priv-schema.sql

mysql.db.sql mysql.time_zone-schema.sql

mysql.event-schema.sql mysql.time_zone_leap_second-schema.sql

mysql.func-schema.sql mysql.time_zone_name-schema.sql

mysql.help_category-schema.sql mysql.time_zone_transition-schema.sql

mysql.help_category.sql mysql.time_zone_transition_type-schema.sql

....................

当在冗长模式中运行时,会产生额外的输出,单所提供的信息中并不包括完整的输出目录:

[root@d4jtarmsvurd01 mydumper_bak]# mydumper -v 3

** Message: Connected to a MySQL server

** Message: Started dump at: 2016-07-05 15:16:56

** Message: Written master status

** Message: Thread 1 connected using MySQL connection ID 1367

** Message: Thread 2 connected using MySQL connection ID 1368

** Message: Thread 3 connected using MySQL connection ID 1369

** Message: Thread 4 connected using MySQL connection ID 1370

** Message: Thread 2 dumping data for `mysql`.`db`

** Message: Thread 1 dumping data for `mysql`.`columns_priv`

** Message: Thread 3 dumping data for `mysql`.`event`

** Message: Empty table mysql.event

** Message: Empty table mysql.columns_priv

** Message: Thread 2 dumping data for `mysql`.`func`

** Message: Thread 1 dumping data for `mysql`.`help_category`

** Message: Thread 3 dumping data for `mysql`.`help_keyword`

** Message: Thread 1 dumping data for `mysql`.`help_relation`

** Message: Empty table mysql.func

** Message: Thread 2 dumping data for `mysql`.`help_topic`

** Message: Thread 3 dumping data for `mysql`.`host`

** Message: Thread 1 dumping data for `mysql`.`ndb_binlog_index`

** Message: Empty table mysql.ndb_binlog_index

** Message: Thread 1 dumping data for `mysql`.`plugin`

** Message: Empty table mysql.plugin

** Message: Thread 1 dumping data for `mysql`.`proc`

** Message: Empty table mysql.proc

** Message: Thread 1 dumping data for `mysql`.`procs_priv`

** Message: Empty table mysql.host

** Message: Thread 3 dumping data for `mysql`.`servers`

** Message: Empty table mysql.servers

** Message: Thread 3 dumping data for `mysql`.`tables_priv`

** Message: Empty table mysql.procs_priv

** Message: Thread 1 dumping data for `mysql`.`time_zone`

** Message: Empty table mysql.time_zone

** Message: Thread 1 dumping data for `mysql`.`time_zone_leap_second`

** Message: Empty table mysql.time_zone_leap_second

** Message: Thread 1 dumping data for `mysql`.`time_zone_name`

** Message: Empty table mysql.time_zone_name

** Message: Thread 1 dumping data for `mysql`.`time_zone_transition`

** Message: Empty table mysql.tables_priv

** Message: Thread 3 dumping data for `mysql`.`time_zone_transition_type`

** Message: Empty table mysql.time_zone_transition

** Message: Thread 1 dumping data for `mysql`.`user`

** Message: Thread 1 dumping data for `sanxing`.`sanxing`

** Message: Empty table mysql.time_zone_transition_type

** Message: Thread 3 dumping data for `test`.`guijian`

** Message: Thread 3 dumping schema for `mysql`.`columns_priv`

** Message: Thread 1 dumping schema for `mysql`.`db`

** Message: Thread 1 dumping schema for `mysql`.`event`

** Message: Thread 1 dumping schema for `mysql`.`func`

** Message: Thread 1 dumping schema for `mysql`.`help_category`

** Message: Thread 1 dumping schema for `mysql`.`help_keyword`

** Message: Thread 3 dumping schema for `mysql`.`help_relation`

** Message: Thread 1 dumping schema for `mysql`.`help_topic`

** Message: Thread 3 dumping schema for `mysql`.`host`

** Message: Thread 1 dumping schema for `mysql`.`ndb_binlog_index`

** Message: Thread 1 dumping schema for `mysql`.`plugin`

** Message: Thread 3 dumping schema for `mysql`.`proc`

** Message: Thread 1 dumping schema for `mysql`.`procs_priv`

** Message: Thread 1 dumping schema for `mysql`.`servers`

** Message: Thread 1 dumping schema for `mysql`.`tables_priv`

** Message: Thread 3 dumping schema for `mysql`.`time_zone`

** Message: Thread 1 dumping schema for `mysql`.`time_zone_leap_second`

** Message: Thread 3 dumping schema for `mysql`.`time_zone_name`

** Message: Thread 1 dumping schema for `mysql`.`time_zone_transition`

** Message: Thread 3 dumping schema for `mysql`.`time_zone_transition_type`

** Message: Thread 3 dumping schema for `mysql`.`user`

** Message: Thread 3 dumping schema for `sanxing`.`sanxing`

** Message: Thread 3 dumping schema for `test`.`guijian`

** Message: Non-InnoDB dump complete, unlocking tables

** Message: Thread 3 shutting down

** Message: Thread 1 shutting down

** Message: Thread 4 shutting down

** Message: Thread 2 shutting down

** Message: Finished dump at: 2016-07-05 15:16:56

[root@d4jtarmsvurd01 mydumper_bak]# ls

export-20160705-151255 export-20160705-151656

[root@d4jtarmsvurd01 mydumper_bak]#

用法

[root@d4jtarmsvurd01 mydumper_bak]# mydumper --help

Usage:

mydumper [OPTION...] multi-threaded MySQL dumping

Help Options:

-?, --help Show help options

Application Options:

-B, --database Database to dump

-T, --tables-list Comma delimited table list to dump (does not exclude regex option)

-o, --outputdir Directory to output files to

-s, --statement-size Attempted size of INSERT statement in bytes, default 1000000

-r, --rows Try to split tables into chunks of this many rows. This option turns off --chunk-filesize

-F, --chunk-filesize Split tables into chunks of this output file size. This value is in MB

-c, --compress Compress output files

-e, --build-empty-files Build dump files even if no data available from table

-x, --regex Regular expression for 'db.table' matching

-i, --ignore-engines Comma delimited list of storage engines to ignore

-m, --no-schemas Do not dump table schemas with the data

-d, --no-data Do not dump table data

-G, --triggers Dump triggers

-E, --events Dump events

-R, --routines Dump stored procedures and functions

-k, --no-locks Do not execute the temporary shared read lock. WARNING: This will cause inconsistent backups

--less-locking Minimize locking time on InnoDB tables.

-l, --long-query-guard Set long query timer in seconds, default 60

-K, --kill-long-queries Kill long running queries (instead of aborting)

-D, --daemon Enable daemon mode

-I, --snapshot-interval Interval between each dump snapshot (in minutes), requires --daemon, default 60

-L, --logfile Log file name to use, by default stdout is used

--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 Use savepoints to reduce metadata locking issues, needs SUPER privilege

--success-on-1146 Not increment error count and Warning instead of Critical in case of table doesn't exist

--lock-all-tables Use LOCK TABLE for all, instead of FTWRL

-U, --updated-since Use Update_time to dump only tables updated in the last U days

--trx-consistency-only Transactional consistency only

-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 Number of threads to use, default 4

-C, --compress-protocol Use compression on the MySQL connection

-V, --version Show the program version and exit

-v, --verbose Verbosity of output, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2

[root@d4jtarmsvurd01 mydumper_bak]#

通过正则表达式选项排除mysql和测试的模式对象:

mydumper --user root --regex '^(?!(mysql|test))'

压缩:默认情况下,所有处处文件都是不压缩的。但是通过使用-c选项,所有文件都可以被压缩。

[root@d4jtarmsvurd01 mydumper_bak]# mydumper -c

[root@d4jtarmsvurd01 mydumper_bak]# ls -lrt

total 12

drwx------ 2 root root 4096 Jul 5 15:12 export-20160705-151255

drwx------ 2 root root 4096 Jul 5 15:16 export-20160705-151656

drwx------ 2 root root 4096 Jul 5 15:20 export-20160705-152048

[root@d4jtarmsvurd01 mydumper_bak]# cd export-20160705-152048/

[root@d4jtarmsvurd01 export-20160705-152048]# ls

metadata mysql.proc-schema.sql.gz

mysql-schema-create.sql.gz mysql.procs_priv-schema.sql.gz

mysql.columns_priv-schema.sql.gz mysql.servers-schema.sql.gz

mysql.db-schema.sql.gz mysql.tables_priv-schema.sql.gz

mysql.db.sql.gz mysql.time_zone-schema.sql.gz

mysql.event-schema.sql.gz mysql.time_zone_leap_second-schema.sql.gz

................

mydumper生产多个与元数据、表数据、表模式和二进制日志相关的文件。

.metadata文件中保存着转存的开始和结束时间以及主二进制日志的位置。当执行转存时,一个.metadata文件边被创建到输出目录中:

备份目录中的素有文件:

[root@d4jtarmsvurd01 export-20160705-151656]# ls

metadata mysql.proc-schema.sql

mysql-schema-create.sql mysql.procs_priv-schema.sql

mysql.columns_priv-schema.sql mysql.servers-schema.sql

mysql.db-schema.sql mysql.tables_priv-schema.sql

mysql.db.sql mysql.time_zone-schema.sql

mysql.event-schema.sql mysql.time_zone_leap_second-schema.sql

mysql.func-schema.sql mysql.time_zone_name-schema.sql

mysql.help_category-schema.sql mysql.time_zone_transition-schema.sql

mysql.help_category.sql mysql.time_zone_transition_type-schema.sql

mysql.help_keyword-schema.sql mysql.user-schema.sql

mysql.help_keyword.sql mysql.user.sql

mysql.help_relation-schema.sql sanxing-schema-create.sql

mysql.help_relation.sql sanxing.sanxing-schema.sql

mysql.help_topic-schema.sql sanxing.sanxing.sql

mysql.help_topic.sql test-schema-create.sql

mysql.host-schema.sql test.guijian-schema.sql

mysql.ndb_binlog_index-schema.sql test.guijian.sql

mysql.plugin-schema.sql

[root@d4jtarmsvurd01 export-20160705-151656]# more metadata

Started dump at: 2016-07-05 15:16:56

SHOW MASTER STATUS:

Log: mysql-bin.000002

Pos: 106

GTID:(null)

Finished dump at: 2016-07-05 15:16:56

[root@d4jtarmsvurd01 export-20160705-151656]# pwd

/mysql/mydumper_bak/export-20160705-151656

[root@d4jtarmsvurd01 export-20160705-151656]#

在使用mydumper的时候可以通过show processlist来监控线程。

可以使用两种不同的方式存储表数据:将所有表数据村委一个文件或者将一个表的数据块存为多个文件,如果未指定--row选项,则将为每个表创建一个文件,命令规则类似于database.table.sql。

关于mydumper生成文件的类型如下:

db_name.table_name-schema_name.sql ---表结构文件

db_name.table_name.sql ---表数据文件

db_name-schema-create.sql ---数据库创建脚本

mydumper的还原工具为:myloader,使用说明如下:

[root@d4jtarmsvurd01 mydumper_bak]# myloader --help

Usage:

myloader [OPTION...] multi-threaded MySQL loader

Help Options:

-?, --help Show help options

Application Options:

-d, --directory Directory of the dump to import

-q, --queries-per-transaction Number of queries per transaction, default 1000

-o, --overwrite-tables Drop tables if they already exist

-B, --database An alternative database to restore into

-s, --source-db Database to restore

-e, --enable-binlog Enable binary logging of the restore data

-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 Number of threads to use, default 4

-C, --compress-protocol Use compression on the MySQL connection

-V, --version Show the program version and exit

-v, --verbose Verbosity of output, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2

恢复测试:

1、备份数据库:

[root@d4jtarmsvurd01 mydumper_bak]# mydumper -u root -p root123 -v 3

2、删除其中的某一个数据库:

mysql> drop database sanxing;

Query OK, 2 rows affected (0.06 sec)

3、开始恢复其中的一个数据库:

[root@d4jtarmsvurd01 mydumper_bak]# myloader -d /mysql/mydumper_bak/export-20170224-151158 -o -B sanxing -u root -p 'root123'

4、检查恢复情况:

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| guijian |

| mysql |

| sanxing |

| test |

+--------------------+

5 rows in set (0.00 sec)

注意原本有两个表的数据库,在恢复时指定了所有数据库备份的目录,此时所有的数据库表都被恢复到了,删除的库,(故此,在恢复的时候注意要使用单个数据库的备份,即什么样的备份能恢复什么样的数据库)

mysql> use sanxing;

Database changed

mysql> show tables;

+---------------------------+

| Tables_in_sanxing |

+---------------------------+

| columns_priv |

| db |

| event |

| func |

| guijian |

| guijian01 |

| help_category |

| help_keyword |

| help_relation |

| help_topic |

| host |

| jiehun |

| ndb_binlog_index |

| plugin |

| proc |

| procs_priv |

| sanxing |

| servers |

| tables_priv |

| time_zone |

| time_zone_leap_second |

| time_zone_name |

| time_zone_transition |

| time_zone_transition_type |

| user |

+---------------------------+

25 rows in set (0.00 sec)

mysql>

单独测试恢复:

mysql> use guijian;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;

+-------------------+

| Tables_in_guijian |

+-------------------+

| test |

| test01 |

+-------------------+

2 rows in set (0.00 sec)

mysql> exit

Bye

[root@d4jtarmsvurd01 mydumper_bak]# mydumper -u root -p root123 -B guijian -v 3

** Message: Connected to a MySQL server

** Message: Started dump at: 2017-02-24 15:28:18

** Message: Written master status

** Message: Thread 1 connected using MySQL connection ID 2807

** Message: Thread 2 connected using MySQL connection ID 2808

** Message: Thread 3 connected using MySQL connection ID 2809

** Message: Thread 4 connected using MySQL connection ID 2810

** Message: Thread 1 dumping data for `guijian`.`test`

** Message: Thread 3 dumping schema for `guijian`.`test`

** Message: Thread 2 dumping data for `guijian`.`test01`

** Message: Thread 4 dumping schema for `guijian`.`test01`

** Message: Non-InnoDB dump complete, unlocking tables

** Message: Thread 4 shutting down

** Message: Thread 1 shutting down

** Message: Thread 3 shutting down

** Message: Thread 2 shutting down

** Message: Finished dump at: 2017-02-24 15:28:18

[root@d4jtarmsvurd01 mydumper_bak]# ls -lrt

总用量 4

drwx------ 2 root root 4096 2月 24 15:28 export-20170224-152818

[root@d4jtarmsvurd01 mydumper_bak]# cd export-20170224-152818/

[root@d4jtarmsvurd01 export-20170224-152818]# ls -lrt

总用量 24

-rw-r--r-- 1 root root 68 2月 24 15:28 guijian-schema-create.sql

-rw-r--r-- 1 root root 1110 2月 24 15:28 guijian.test.sql

-rw-r--r-- 1 root root 2817 2月 24 15:28 guijian.test-schema.sql

-rw-r--r-- 1 root root 1112 2月 24 15:28 guijian.test01.sql

-rw-r--r-- 1 root root 2819 2月 24 15:28 guijian.test01-schema.sql

-rw-r--r-- 1 root root 143 2月 24 15:28 metadata

[root@d4jtarmsvurd01 export-20170224-152818]#

mysql> drop database guijian;

Query OK, 2 rows affected (0.01 sec)

mysql> exit

[root@d4jtarmsvurd01 mydumper_bak]# myloader -d /mysql/mydumper_bak/export-20170224-152818 -o -B guijian -u root -p 'root123'

[root@d4jtarmsvurd01 mydumper_bak]#


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> show tables;
ERROR 1046 (3D000): No database selected
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| guijian |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)


mysql> use guijian;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A


Database changed
mysql> show tables;
+-------------------+
| Tables_in_guijian |
+-------------------+
| test |
| test01 |
+-------------------+
2 rows in set (0.00 sec)

以上是"mysql中mysqldumper怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

数据 文件 数据库 备份 工具 线程 模式 目录 输出 二进制 内容 日志 篇文章 开发 测试 位置 命令 多个 开发包 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳晶莱互联网科技公司 vb怎么做数据库登陆界面 拉萨市公安局网络安全局长 无线网络技术课程设计文档 滨海新区网络安全宣传周 记录仪显示数据库异常 点塑科技 互联网 2017年网络安全博览会 网络安全宣传周郑州 大型软件开发流程 网络安全监督检查限期整改情况函 金智科技工业互联网 网络安全模式下没网 国家行业统计年鉴数据库 未连接网络安全密钥怎么重置 长寿区提供软件开发服务公司 网络安全产品调试工程师 在厦门用什么打车软件开发 奥拉星一共几个服务器 少先队网络安全教育 services数据库构建 计算机网络技术应该学什么 个人做web服务器 大华中心管理服务器初始密码 物理模型不属于数据库 网络技术专升本可以学网络工程吗 信泰优品网络技术有限公司 小学生网络安全测试报道 虹口区品牌软件开发业务流程 软银云服务器叫什么
0