ITPub博客

首页 > 数据库 > MySQL > MySQL备份与恢复——基于mysqlpump 逻辑备份恢复技术文档

MySQL备份与恢复——基于mysqlpump 逻辑备份恢复技术文档

原创 MySQL 作者:龙山游龙 时间:2021-08-06 16:29:00 2 删除 编辑

第一部分说明

MySQLPump为MySQL数据库在5.7版本之后推出的逻辑备份工具,是MySQLDump工具的一个衍生。备份是将数据库实例以逻辑的SQL语句的形式直接输出或生成备份的文件的过程。

该工具较MySQLDump相比,几个显著特点1.支持并行备份加快了备份过程 2.明显的备份进度指示 3.数据加载策略变化(最后建索引) 等等。

1.1MySQLPump优势

1.基于表并行备份数据库和数据库中的对象的,加快备份过程。(--default-parallelism)

2.更好的控制数据库和数据库对象(表,存储过程,用户帐户)的备份。

3.备份用户账号作为帐户管理语句(CREATE USER,GRANT),而不是直接插入到MySQL的系统数据库。

4.能支持压缩备份。

5.查看备份进度(估计值)。

6.重新加载(还原)备份文件,先建表后插入数据最后建立索引,减少了索引维护开销,加快了还原速度。

1.2MySQLPump工具注意点

注:企业版自带该工具,以下安装步骤针对社区版

1.官方表示在mysql5.7.11之前无法保证数据的一致性,所以5.7.11之前该工具基本无法使用

2. mysqlpump的多线程备份是基于表的,当数据库中有很多张小表个别几张超大表的时候,mysqlpump的备份速度其实还不如mysqldump。

1.3MySQLPump并行导出功能架构

MySQLPump的并行导出功能的架构为:队列+线程,允许有多个队列,每个队列下有多个线程,而一个队列可以绑定1个或者多个数据库,从而达到提升备份速度的功能。

第二部分 常用参数列表

常用参数

说明

-u

备份用户名

-p

指定用户名密码

-P

连接数据库端口

-h

指定数据库地址

-A, --all-databases

全库

--compress-output=name

将备份数据压缩输出,目前支持的压缩算法有LZ4和ZLIB

-B, --databases

指定备份数据库,多个库之间用逗号分隔

--default-parallelism=#

备份并行线程数,默认为2,若指定该参数为0,则表示不使用并行备份。

--defer-table-indexes

延迟创建索引,将全部数据备份结束后再创建索引,默认开启。

--exclude-databases=name

备份时排除该参数指定的数据库,多个数据库之前使用,分隔

--exclude-tables=name

备份时排除该参数指定的表,多个表之前使用,分隔

--include-databases=name

备份指定数据库,多个数据库之前使用,分隔

--include-tables=name

备份指定表,多个表之前使用,分隔

--parallel-schemas=(N:)db_list

指定并行备份的库,多个库之间用逗号分隔。也可以直接指定备份该库启用的线程队列数,若不指定则有-default-parallelism参数决定,默认为2。

-d, --skip-dump-rows

只备份表结构,不备份数据

--users

备份数据库用户,备份形式为create user ... ,grant ....  如果只需要备份数据库账号可以使用 mysqlpump --exclude-databases=% --users

--watch-progress

显示备份进度,默认开启

--single-transaction

开启事务

第三部分 导出示例

3.1全库导出

mysqlpump -uroot -pmysql --all-databases --default-character-set=utf8 --single-transaction > full.sql

3.2全库导出搭建主从 (GTID)

mysqlpump -uroot -pmysql --all-databases --set-gtid-purged=AUTO --single-transaction > full.sql

注:MySQL5.7.18版本出现该参数

3.3单库/多库导出

mysqlpump -uroot -pmysql --single-transaction --default-character-set=utf8 --databases db_name1 [db_name2] > db_name12.sql

3.4单表/多表导出

mysqlpump -uroot -pmysql --single-transaction --default-character-set=utf8 db_name tbl_name1 [tbl_name2] >two.sql

3.5只备份账号

mysqlpump -uroot -pmysql --exclude-databases=% --users > user.sql

3.6只导出结构

mysqlpump -uroot -pmysql --all-databases  --skip-dump-rows --single-transaction > full_defs.sql

注:可用于测试升级

3.7只导出数据

mysqlpump -uroot -pmysql --all-databases  --no-create-db --no-create-info --single-transaction > full_data.sql

3.8导出到指定目录

mysqlpump -uroot -pmysql --all-databases  --single-transaction --result-file=/tmp/full.sql

3.9并行导出

-- 4个线程备份test1和test2,5个线程备份test3。通过show processlist可以看到有9个线程

mysqlpump -uroot -pmysql --single-transaction  --parallel-schemas=4:test1,test2 --parallel-schemas=5:test3

-- 默认2个线程,即2个线程备份test1和test2,2个线程备份test3

mysqlpump -uroot -pmysql --single-transaction --parallel-schemas=test1,test2 --parallel-schemas=test3

3.10压缩备份

----LZ4格式

mysqlpump -uroot -pmysql --single-transaction --compress-output=lz4  test > /tmp/test.sql
lz4_decompress test.sql y.sql

----ZLIB格式

mysqlpump -uroot -pmysql --single-transaction --compress-output=ZLIB  test > /tmp/test.sql
zlib_decompress test.sql y.sql


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30310891/viewspace-2785694/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
拥有超过9年以上的MySQL/Oracle数据库领域从业经验,TB级高并发数据库的管理经验。对于MySQL/Oracle内部原理、体系结构,数据页/块结构原理有着深刻认识;对于MySQL/ORACLE新特性、分布式高可用架构和性能调优有着丰富的的实战经验。擅长故障诊断以及数据库异常打开及数据灾难挽救。

注册时间:2015-06-28

  • 博文量
    78
  • 访问量
    109785