阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle官方并行逻辑备份工具mysqlpump

117次阅读
没有评论

共计 2213 个字符,预计需要花费 6 分钟才能阅读完成。

MySQL 5.7.11 版本 最有意义 的部分在于官方修复了之前 mysqlpump 工具一致性备份的问题,使得 mysqlpump 工具在生产环境中有了用武之地。而在之前 MySQL 5.7 的文档中明确写着,mysqlpump 是不支持一致性的备份:

Before MySQL 5.7.11, use of the –single-transaction option is mutually exclusive with parallelism. To use –single-transaction, disable parallelism by setting –default-parallelism to 0 and not using any instances of –parallel-schemas

在 5.7.11 版本的 change history 中,对于这个问题已经有了修复:

mysqlpump tries to do as much work in parallel as possible, but the dump threads lacked a synchronization point before backing up the data, resulting in inconsistent backup.

mysqlpump 相对于之前的逻辑备份工具 mysqldump 来说,Inside 君总结的优势如下:

  • 支持基于表的并行导出功能(参数–default-parallelism,默认为 2,参数–parallel-schemas,控制并行导出的库)
  • 导出的时候带有进度条(参数–watch-progress,默认开启)
  • 支持直接压缩导出导入(参数–compress-output,支持 ZLIB 和 LZ4)

mysqlpump 的并行导出功能的架构为:队列 + 线程,允许有多个队列,每个队列下有多个线程,而一个队列可以绑定 1 个或者多个数据库。但是,对于每张表的导出只能是单个线程的,这和 mydumper 工具是不一样的,因为 mydumper 支持一张表多个线程以 chunk 的方式批量导出,这在主键是随机的情况下,导出速度还能有提升。mysqlpump 的架构如下图所示:

 Oracle 官方并行逻辑备份工具 mysqlpump

接着 Inside 君对比了 mysqldump 与 mysqlpump 的导出速度,选择的数据库大小为 7.8G,每次备份测试时都重启数据库,清空缓冲池中的内容。其中各表的大小如下所示:

1
2
3
4
5
6
7
8
9
10
root@test-1:/mdata/mysql_data# ls -lh tpcc/*.ibd
-rw-r----- 1 mysql mysql 1.9G Feb 21 22:58 tpcc/customer.ibd
-rw-r----- 1 mysql mysql 160K Feb 21 23:12 tpcc/district.ibd
-rw-r----- 1 mysql mysql 208M Feb 21 22:58 tpcc/history.ibd
-rw-r----- 1 mysql mysql  17M Feb 21 22:23 tpcc/item.ibd
-rw-r----- 1 mysql mysql  32M Feb 22 00:05 tpcc/new_orders.ibd
-rw-r----- 1 mysql mysql 2.1G Feb 22 10:00 tpcc/order_line.ibd
-rw-r----- 1 mysql mysql 132M Feb 22 00:05 tpcc/orders.ibd
-rw-r----- 1 mysql mysql 3.5G Feb 21 23:12 tpcc/stock.ibd
-rw-r----- 1 mysql mysql  48K Feb 21 23:11 tpcc/warehouse.ibd

由于只有 tpcc 单个数据库,这里 mysqlpump 测试采用默认单队列 2 个线程和单队列 4 个线程测试,mysqlpump 测试语句如下:

1
2
root@test-1:/mdata/mysql_data# time mysqlpump --single-transaction  -B tpcc > tpcc.sql
root@test-1:/mdata/mysql_data# time mysqlpump --single-transaction --default-parallelism=4 -B tpcc > tpcc.sql

最后的测试结果如下所示:

Oracle 官方并行逻辑备份工具 mysqlpump

测试在网易云环境下,这时可以发现默认配置下 mysqlpump 的速度比起 mysqldump 快了 39.04%,4 个线程下快了有 48.89%。接着测试多个数据库备份的场景,这里选择 7.8G 大小的 tpcc 库和 2.4G 大小的 dbt3 数据库,最后得到的结果 mysqlpump 比起 mysqldump 最高快了 70% 多的时间:

Oracle 官方并行逻辑备份工具 mysqlpump

总结

mysqlpump 的语法与 mysqldump 高度兼容,支持基于库和表的并行导出,对比 mysqldump 速度提升非常明显。MySQL 5.7.11 版本解决了一致性备份问题,推荐线上环境使用。由于每个数据库大小,架构不同,测试给出的速度提升只是参考,或许在你的环境会没有任何差别,也可能速度提升更大。anyway,是时候好好测试 mysqlpump,看看对你的生产环境是否会有极大的速度提升。

更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-08/134469.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2213字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中