Ⅰ、功能分析

1.1 多线程介绍

  • mysqlpump是MySQL5.7的官方工具,用于取代mysqldump,其参数与mysqldump基本一样
  • mysqlpump是多线程备份,但只能到表级别,单表备份还是单线程
  • mysqldump备份时,有个默认队列(default),队列下开N个线程去备份数据库/数据库中的表
  • 支持开多个队列(对应不同库/表),然后每个队列设置不同线程,进行备份

1.2 优缺点

优点:

  • 官方工具,听着牛逼

缺点:

  • 只能并行到表级别,如果表特别大,开多线程和单线程是一样的,并行度不如mydumper
  • 无法获取当前备份对应的binlog位置
  • MySQL5.7.11之前的版本不要使用,并行导出和single-transaction是互斥的

1.3 重要参数

--default-parallelism   指定线程数,默认开2个线程进行并发备份--parallel-schemas  指定哪些数据库进行并发备份--set-gtid-purged=OFF   5.7.18后加入的参数,

Ⅱ、演示一手

[root@VM_0_5_centos ~]# mysqlpump --single-transaction --set-gtid-purged=OFF --parallel-schemas=2:employees --parallel-schemas=4:dbt3 -B employees dbt3 > /tmp/backup.sql
mysqlpump: [Warning] Using a password on the command line interface can be insecure.
Dump progress: 1/5 tables, 0/7559817 rows
Dump progress: 3/15 tables, 286750/12022332 rows
Dump progress: 3/15 tables, 686750/12022332 rows
Dump progress: 3/15 tables, 1042250/12022332 rows
...
Dump completed in 43732 milliseconds新开一个会话看下情况
(root@172.16.0.10) [(none)]> show processlist;
+--------+------+------------------+------+---------+------+-------------------+------------------------------------------------------------------------------------------------------+
| Id     | User | Host             | db   | Command | Time | State             | Info                                                                                                 |
+--------+------+------------------+------+---------+------+-------------------+------------------------------------------------------------------------------------------------------+
| 138199 | root | 172.16.0.5:39238 | NULL | Query   |    0 | starting          | show processlist                                                                                     |
| 138267 | root | 172.16.0.5:39776 | NULL | Sleep   |    2 |                   | NULL                                                                                                 |
| 138268 | root | 172.16.0.5:39778 | NULL | Query   |    2 | Sending to client | SELECT SQL_NO_CACHE `emp_no`,`dept_no`,`from_date`,`to_date`  FROM `employees`.`dept_emp`            |
| 138269 | root | 172.16.0.5:39780 | NULL | Query   |    2 | Sending to client | SELECT SQL_NO_CACHE `emp_no`,`birth_date`,`first_name`,`last_name`,`gender`,`hire_date`  FROM `emplo |
| 138270 | root | 172.16.0.5:39782 | NULL | Query   |    2 | Sending to client | SELECT SQL_NO_CACHE `o_orderkey`,`o_custkey`,`o_orderstatus`,`o_totalprice`,`o_orderDATE`,`o_orderpr |
| 138271 | root | 172.16.0.5:39784 | NULL | Query   |    2 | Sending to client | SELECT SQL_NO_CACHE `p_partkey`,`p_name`,`p_mfgr`,`p_brand`,`p_type`,`p_size`,`p_container`,`p_retai |
| 138272 | root | 172.16.0.5:39786 | NULL | Query   |    2 | Sending data      | SELECT SQL_NO_CACHE `l_orderkey`,`l_partkey`,`l_suppkey`,`l_linenumber`,`l_quantity`,`l_extendedpric |
| 138273 | root | 172.16.0.5:39788 | NULL | Query   |    2 | Sending to client | SELECT SQL_NO_CACHE `c_custkey`,`c_name`,`c_address`,`c_nationkey`,`c_phone`,`c_acctbal`,`c_mktsegme |
| 138274 | root | 172.16.0.5:39790 | NULL | Sleep   |    2 |                   | NULL                                                                                                 |
| 138275 | root | 172.16.0.5:39792 | NULL | Sleep   |    1 |                   | NULL                                                                                                 |
+--------+------+------------------+------+---------+------+-------------------+------------------------------------------------------------------------------------------------------+
10 rows in set (0.00 sec)可以看到138268和138269在备份employees库,138270,138271,138272,138273在备份dbt3,这里没打印全,不过这是真的,不吹牛逼

Ⅲ、看下备份过程吧

session1:
(root@localhost) [(none)]> truncate mysql.general_log;
Query OK, 0 rows affected (0.10 sec)(root@localhost) [(none)]> set global log_output = 'table';
Query OK, 0 rows affected (0.00 sec)(root@localhost) [(none)]> set global general_log = 1;
Query OK, 0 rows affected (0.03 sec)session2:
[root@VM_0_5_centos ~]# mysqlpump --single-transaction abc > /tmp/backup.sql
Dump completed in 592 milliseconds(root@localhost) [(none)]> select thread_id,left(argument, 64) from mysql.general_log order by event_time;
省略部分输出:
+-----------+------------------------------------------------------------------+
|         7 | root@localhost on  using Socket                                  |
|         7 | FLUSH TABLES WITH READ LOCK                                      |
|         7 | SHOW WARNINGS                                                    |
|         7 | SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ          |
|         7 | SHOW WARNINGS                                                    |
|         7 | START TRANSACTION WITH CONSISTENT SNAPSHOT                       |
|         7 | SHOW WARNINGS                                                    |
|         8 | root@localhost on  using Socket                                  |
|         8 | SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ          |
|         8 | SHOW WARNINGS                                                    |
|         8 | START TRANSACTION WITH CONSISTENT SNAPSHOT                       |
|         8 | SHOW WARNINGS                                                    |
|         9 | root@localhost on  using Socket                                  |
|         9 | SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ          |
|         9 | SHOW WARNINGS                                                    |
|         9 | START TRANSACTION WITH CONSISTENT SNAPSHOT                       |
|         9 | SHOW WARNINGS                                                    |
|         7 | UNLOCK TABLES                                                    |
|         7 | SHOW WARNINGS                                                    |
|         9 | SET SQL_QUOTE_SHOW_CREATE= 1                                     |
|         9 | SHOW WARNINGS                                                    |
|         9 | SET TIME_ZONE='+00:00'                                           |
|         8 | SET SQL_QUOTE_SHOW_CREATE= 1                                     |
|         8 | SHOW WARNINGS                                                    |
|         8 | SET TIME_ZONE='+00:00'                                           |
|         3 | set global general_log = 0                                       |
+-----------+------------------------------------------------------------------+
1.线程7 进行 FLUSH TABLES WITH READ LOCK 。对表加一个读锁
2.线程7、8、9分别开启一个事务(RR隔离级别)去备份数据,由于之前锁表了,所以这三个线程备份出的数据是具有一致性的
3.线程7 解锁 UNLOCK TABLE
整个过程没有获取二进制位置点

Ⅳ、compress-output

mysqlpump支持压缩输出,支持LZ4和ZLIB(ZLIB压缩比相对较高,但是速度较慢)

[root@VM_0_5_centos tmp]# mysqlpump --single-transaction --compress-output=lz4 abc > /tmp/backup_abc.sql
Dump completed in 511 milliseconds

Ⅴ、备份恢复

未压缩的备份

mysql < backup.sql

压缩过的备份

先解压
zlib_decompress
lz4_decompress
lz4_decompress backup_abc.sql backup.sql
再导入
mysql < backup.sql

可以看出来,这个导入是单线程

tips:

mysqlpump备份的数据恢复时会先插入数据,再建索引,而mysqldump备份的数据恢复是在建立表的时候就把索引加上了,所以前者备份的数据恢复时速度要快一点

总结:后续关注,现在用不上

转载于:https://www.cnblogs.com/---wunian/p/8992858.html

了解mysqlpump工具相关推荐

  1. 数据库备份到文件服务器,数据库文件备份到云服务器上

    数据库文件备份到云服务器上 内容精选 换一换 目前数据库服务器备份Agent安装包需要提交工单进行获取.当前仅支持x86计算类型的服务器,暂不支持鲲鹏计算类型的服务器.用户需要启用数据库备份前,需先在 ...

  2. 网站上传到服务器mysql数据库,网站上传到服务器mysql数据库吗

    网站上传到服务器mysql数据库吗 内容精选 换一换 安装MySQL本文档以"CentOS 6.5 64bit(40GB)"操作系统为例,对应MySQL版本为5.1.73.Cent ...

  3. 安卓怎么连接服务器的数据库文件,安卓怎么连接服务器的数据库文件

    安卓怎么连接服务器的数据库文件 内容精选 换一换 文档数据库服务支持开启公网访问功能,通过弹性IP进行访问.您也可通过弹性云服务器的内网访问文档数据库.要将已有的MongoDB数据库迁移到文档数据库, ...

  4. sql 服务器实例怎样显示,如何查看sql数据库的服务器名

    如何查看sql数据库的服务器名 内容精选 换一换 本手册基于华为云关系型数据库实践所编写,用于指导您完成相关设置,购买更符合业务的数据库实例. PostgreSQL支持逻辑备份.您可使用pg_dump ...

  5. MySQL入门,了解下、

    本人菜鸡一个,一份简单MySQL笔记送给大家,希望大家喜欢.(●'◡'●) Ⅰ. 数据备份与导入导出 1.1.备份基本概念介绍 1.2.mysqldump详解 1.3.mydumper浅析 1.4.M ...

  6. 如何修改mysql服务器,怎么修改mysql服务器地址

    怎么修改mysql服务器地址 内容精选 换一换 云数据库RDS服务支持开启公网访问功能,通过弹性公网IP进行访问.您也可通过弹性云服务器的内网访问云数据库RDS.准备弹性云服务器或可通过公网访问云数据 ...

  7. 服务器网站数据库如何保存,服务器怎么保存数据库

    服务器怎么保存数据库 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 华为云数据 ...

  8. 打开服务器数据库文件,如何打开服务器中的数据库文件

    如何打开服务器中的数据库文件 内容精选 换一换 云服务器新增磁盘,开机自动执行磁盘初始化脚本后,Oralce.MySQL和SQL Server等数据库系统日志Msg 823错误 .磁盘初始化脚本Win ...

  9. mysqldump单个库导出_初相识 | 全方位认识 sys 系统库

    前阵子,我们的"全方位认识performance_schema"系列为大家完整的介绍了performance_schema系统库.在我们的发布计划中为什么要把performance ...

最新文章

  1. 《细胞》:打破百年生物学法则,记忆可以遗传给下一代,甚至可能跨越多代...
  2. 高性能网络编程1----accept建立连接
  3. 相对定位android,appium相对位置定位元素----父节点/兄弟节点定位
  4. 关于API的设计和需求抽象
  5. eclipse安卓工程的构建、配置连接模拟器、安卓工程结构介绍
  6. Android深入浅出系列之实例应用—弹出消息Toast对象的使用纯文本方式(一)
  7. Github | 深度学习研究大咖有哪些?
  8. Geos库在Windows上的编译
  9. html5 页面3d显示不出来的,Word页面视图内容为什么在大纲视图上显示不出来?
  10. 小恐龙游戏制作挑战:第9天-打完大部分计分器模块的代码
  11. mach ipc 学习
  12. 777后无效 执行chmod_执行chmod -R 777 / 补救
  13. Datagrid Bind DropDownlist.....
  14. 安卓开发入门gps获取定位经纬度海拔速度
  15. 简单认识顺序表的基本操作
  16. 基于flex/bison工具生成sysY2022文法的词法/语法分析器
  17. Xilinx ISERDESE2应用笔记及仿真实操
  18. C语言,好爽(第一二三季)
  19. Java:计算圆形和长方形的面积
  20. c语言中未定义标识符IDD,一、Windows对话框—对话框及其模板

热门文章

  1. Linkis生产部署服务器配置参考指南
  2. spark mapreduce术语梳理
  3. sealos安装k8s集群注意事项:必须关闭任何形式的http_proxy代理
  4. Apollo配置发布原理
  5. kibana操作elasticsearch:创建映射字段
  6. MySQL优化关联查询
  7. 基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(七)
  8. linux环境下中文乱码问题
  9. Windows Powershell的一些常规操作命令
  10. python field readonly_Python serializers.ReadOnlyField方法代码示例