iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL官方导出工具mysqlpump的使用
  • 481
分享到

MySQL官方导出工具mysqlpump的使用

MySQLmysqlpumpmysqlpump的使用 2022-05-17 14:05:22 481人浏览 八月长安
摘要

目录简介使用介绍实际体验优缺点总结一下简介 Mysqlpump 是 mysqldump 的一个衍生,本身也参考了 mydumper 的思路,支持了并行导出数据,因此导出数据的效率比 mysqldump 会高很多。 使

目录
  • 简介
  • 使用介绍
  • 实际体验
  • 优缺点
  • 总结一下

简介

Mysqlpump 是 mysqldump 的一个衍生,本身也参考了 mydumper 的思路,支持了并行导出数据,因此导出数据的效率比 mysqldump 会高很多。

使用介绍

mysqlpump 的绝大多数参数与 mysqldump 是一样的,整体的使用方法和 mysqldump 没有太多的差异。这里列出一部分 mysqlpump 中比较重要且常用的参数。

参数

说明

--default-parallelism=#

设置并行导出的并发度,与 single-transaction 冲突

--single-transaction

创建一个单独的事务来导出所有的表

--exclude-databases=name

导出时排除掉某些库,多个库以逗号分隔

--exclude-tables=name

导出时排除掉某些表,多个表以逗号分隔

--include-databases=name

导出时包含某些库,多个库以逗号分隔

--include-tables=name

导出时包含某些表,多个表以逗号分隔

实际体验

这里对 mysqlpump 做一次简单的试用,目标实例选择 MySQL 5.7,参数中同时采用了single-transaction和default-parallelism,试试看这个冲突的效果。

mysqlpump 侧的输出参考如下信息:


root@VM-64-10-debian:~# mysqlpump -h172.100.10.10 -uroot -p --single-transaction --default-parallelism=16 --set-gtid-purged=OFF -B sbtest > sbtest.sql
Dump progress: 0/1 tables, 250/987400 rows
Dump progress: 0/5 tables, 117250/3946600 rows
Dump progress: 1/5 tables, 258750/3946600 rows
Dump progress: 1/5 tables, 385500/3946600 rows
Dump progress: 1/5 tables, 516750/3946600 rows
Dump progress: 1/5 tables, 639250/3946600 rows
Dump progress: 1/5 tables, 757000/3946600 rows
Dump progress: 1/5 tables, 885000/3946600 rows
Dump progress: 1/5 tables, 1005750/3946600 rows
Dump progress: 1/5 tables, 1114250/3946600 rows
Dump progress: 1/5 tables, 1223250/3946600 rows
Dump progress: 2/5 tables, 1312500/3946600 rows
Dump progress: 2/5 tables, 1430750/3946600 rows
Dump progress: 2/5 tables, 1553000/3946600 rows
Dump progress: 2/5 tables, 1680250/3946600 rows
Dump progress: 2/5 tables, 1809500/3946600 rows
Dump progress: 2/5 tables, 1940750/3946600 rows
Dump progress: 2/5 tables, 2060000/3946600 rows
Dump progress: 2/5 tables, 2175250/3946600 rows
Dump progress: 2/5 tables, 2295250/3946600 rows
Dump progress: 3/5 tables, 2413500/3946600 rows
Dump progress: 3/5 tables, 2554500/3946600 rows
Dump progress: 3/5 tables, 2693500/3946600 rows
Dump progress: 3/5 tables, 2818750/3946600 rows
Dump progress: 3/5 tables, 2941500/3946600 rows
Dump progress: 4/5 tables, 3056000/3946600 rows
Dump progress: 4/5 tables, 3172750/3946600 rows
Dump progress: 4/5 tables, 3280000/3946600 rows
Dump progress: 4/5 tables, 3372000/3946600 rows
Dump progress: 4/5 tables, 3444750/3946600 rows
Dump completed in 126555 milliseconds

可以看到当这两个参数同时启用的时候,mysqlpump 实际上还是在一个一个表的导出。single-transaction的优先级会高于default-parallelism。

去掉single-transaction再进行测试的时候,会发现一个比较有意思的现象,观察 MySQL 的 processlist,会有如下结果:


mysql> show processlist;
+---------+------+--------------------+------+---------+------+-------------------+----------------------------------------------------+
| Id      | User | Host               | db   | Command | Time | State             | Info                                               |
+---------+------+--------------------+------+---------+------+-------------------+----------------------------------------------------+
| 2763496 | root | 172.100.10.10:49086 | NULL | Query   |    0 | starting          | show processlist                                   |
| 2763585 | root | 172.100.10.10:49192 | NULL | Sleep   |  126 |                   | NULL                                               |
| 2763586 | root | 172.100.10.10:49194 | NULL | Sleep   |  126 |                   | NULL                                               |
| 2763587 | root |172.100.10.10:49196 | NULL | Sleep   |  126 |                   | NULL                                               |
| 2763588 | root | 172.100.10.10:49198 | NULL | Sleep   |  126 |                   | NULL                                               |
| 2763589 | root | 172.100.10.10:49200 | NULL | Sleep   |  126 |                   | NULL                                               |
| 2763590 | root | 172.100.10.10:49202 | NULL | Sleep   |  126 |                   | NULL                                               |
| 2763591 | root | 172.100.10.10:49204 | NULL | Sleep   |  126 |                   | NULL                                               |
| 2763592 | root | 172.100.10.10:49206 | NULL | Sleep   |  126 |                   | NULL                                               |
| 2763593 | root | 172.100.10.10:49208 | NULL | Sleep   |  126 |                   | NULL                                               |
| 2763594 | root | 172.100.10.10:49210 | NULL | Sleep   |  126 |                   | NULL                                               |
| 2763595 | root | 172.100.10.10:49212 | NULL | Query   |  125 | Sending to client | SELECT `id`,`k`,`c`,`pad`  FROM `sbtest`.`sbtest5` |
| 2763596 | root | 172.100.10.10:49214 | NULL | Query   |  125 | Sending to client | SELECT `id`,`k`,`c`,`pad`  FROM `sbtest`.`sbtest4` |
| 2763597 | root | 172.100.10.10:49216 | NULL | Query   |  125 | Sending to client | SELECT `id`,`k`,`c`,`pad`  FROM `sbtest`.`sbtest3` |
| 2763598 | root | 172.100.10.10:49218 | NULL | Query   |  125 | Sending to client | SELECT `id`,`k`,`c`,`pad`  FROM `sbtest`.`sbtest2` |
| 2763599 | root | 172.100.10.10:49220 | NULL | Query   |  125 | Sending to client | SELECT `id`,`k`,`c`,`pad`  FROM `sbtest`.`sbtest1` |
| 2763600 | root | 172.100.10.10:49222 | NULL | Sleep   |  125 |                   | NULL                                               |
| 2763601 | root | 172.100.10.10:49224 | NULL | Sleep   |  125 |                   | NULL                                               |
+---------+------+--------------------+------+---------+------+-------------------+----------------------------------------------------+
18 rows in set (0.00 sec)

mysql>

可以很明显的看出来,mysqlpump 的“并行导出”实际上只是基于表级别的并行导出,当存在单个大表的时候,导出的时间会被严重的影响,存在短板效应。

额外的疑问:如果default-parallelism和single-transaction有冲突的话,那么并行导出的时候是不是无法确认数据一致性?

实践出真实,打开 general_log 看一下导出时的操作:


2021-05-12T11:54:09.033215Z        75 Connect   root@172.100.10.10 on  using SSL/TLS
2021-05-12T11:54:09.075347Z        75 Query     FLUSH TABLES WITH READ LOCK //开始表
2021-05-12T11:54:09.103132Z        75 Query     SHOW WARNINGS
2021-05-12T11:54:09.106382Z        75 Query     SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
2021-05-12T11:54:09.106553Z        75 Query     SHOW WARNINGS
2021-05-12T11:54:09.106640Z        75 Query     START TRANSACTION WITH CONSISTENT SNAPSHOT
2021-05-12T11:54:09.108115Z        75 Query     SHOW WARNINGS
2021-05-12T11:54:09.127277Z        76 Connect   root@172.100.10.10 on  using SSL/TLS
2021-05-12T11:54:09.127452Z        76 Query     SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
2021-05-12T11:54:09.127590Z        76 Query     SHOW WARNINGS
2021-05-12T11:54:09.127680Z        76 Query     START TRANSACTION WITH CONSISTENT SNAPSHOT
2021-05-12T11:54:09.127790Z        76 Query     SHOW WARNINGS
......
2021-05-12T11:54:10.018813Z        90 Connect   root@172.100.10.10 on  using SSL/TLS
2021-05-12T11:54:10.018944Z        90 Query     SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
2021-05-12T11:54:10.019047Z        90 Query     SHOW WARNINGS
2021-05-12T11:54:10.019150Z        90 Query     START TRANSACTION WITH CONSISTENT SNAPSHOT
2021-05-12T11:54:10.019226Z        90 Query     SHOW WARNINGS
2021-05-12T11:54:10.025833Z        91 Connect   root@172.100.10.10 on  using SSL/TLS
2021-05-12T11:54:10.025934Z        91 Query     SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
2021-05-12T11:54:10.026048Z        91 Query     SHOW WARNINGS
2021-05-12T11:54:10.026141Z        91 Query     START TRANSACTION WITH CONSISTENT SNAPSHOT
2021-05-12T11:54:10.026219Z        91 Query     SHOW WARNINGS
2021-05-12T11:54:10.026293Z        75 Query     UNLOCK TABLES  //结束锁表
2021-05-12T11:54:10.026406Z        75 Query     SHOW WARNINGS

可以看到并行导出之前,有一个线程加上了全局读锁,然后等所有的并发线程打开事务之后才解锁了表,因此并行导出的时候也是数据一致的。

优缺点

  • 优点:
    • 并行备份数据库数据库中的对象,比 mysqldump 更高效。
    • 更好的控制数据库和数据库对象(表,存储过程,用户帐户)的备份。
    • 备份进度可视化
  • 缺点:  
    • 只能并行到表级别,如果有一个表数据量特别大那么会存在非常严重的短板效应。
    • 导出的数据保存在一个文件中,导入仍旧是单线程,效率较低。
    • 无法获取当前备份对应的binlog位置。

总结一下

尽管 mysqlpump 还有非常多的不足,但是相比较于原始的 mysqldump 已经有了非常大的进步,从这个工具的发布也可以看出来 oracle 终于开始重视 MySQL 的生态工具了,期待官方提供更多的更优秀的生态工具。

以上就是MySQL官方导出工具mysqlpump的使用的详细内容,更多关于mysqlpump的使用的资料请关注自学编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL官方导出工具mysqlpump的使用

本文链接: https://www.lsjlt.com/news/10348.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL官方导出工具mysqlpump的使用
    目录简介使用介绍实际体验优缺点总结一下简介 mysqlpump 是 mysqldump 的一个衍生,本身也参考了 mydumper 的思路,支持了并行导出数据,因此导出数据的效率比 mysqldump 会高很多。 使...
    99+
    2022-05-17
    MySQL mysqlpump mysqlpump的使用
  • 用mysql工具导出表的方法
    这篇文章将为大家详细讲解有关用mysql工具导出表的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。导出方法:1、使用mysql的navicat工具进入到源数据库系统中...
    99+
    2022-10-18
  • 使用navicat工具导出mysql表的步骤
    首先选择需要导出的表2.在选择的表右键点击“导出向导”,根据需要选择保存的文件格式。3.点击“下一步”逐个将所要保存的文件保存到指定位置4.点击“下一步”、“开始”即可。 ...
    99+
    2022-10-18
  • MySQL数据导入和导出的方法与工具介绍
    这篇文章主要介绍“MySQL数据导入和导出的方法与工具介绍”,在日常操作中,相信很多人在MySQL数据导入和导出的方法与工具介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-10-18
  • 数据泵EXPDP导出工具和IMPDP导入工具的使用
    数据泵EXPDP导出工具和IMPDP导入工具的使用  一、EXPDP和IMPDP使用说明Oracle Database 10g引入了最新的数据泵(Data Dump)技术,数据泵导出导入(EXPD...
    99+
    2022-10-18
  • Mysql官方性能测试工具mysqlslap的使用简介
    目录简介使用介绍实际体验小结简介 MySQL 作为最流行的开源数据库,在各个领域都有相当广泛的应用,作为一个 MySQL DBA,经常会对数据库进行一些性能测试来主动(或者是被动的)对业务压力做一个评估,来判断数据...
    99+
    2022-05-26
    MySQL mysqlslap mysqlslap的使用
  • Oracle官方工具SQLDeveloper的简单使用
    1、下载地址: https://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/ 下载解压后可直...
    99+
    2022-11-13
  • ETL数据导入导出工具HData使用
    注:近期因朋友的请求协助了解Hdata工具的使用,抽空进行了摸索,特整理此文;该ETL数据交换工具开发者已经有三、四年没有更新维护记录了,不确定该项目是否会继续维护,因此选择该工具应用于项目时,请考虑后续的技术支持与问题处理等所需要的解...
    99+
    2016-08-25
    ETL数据导入导出工具HData使用
  • Oracle官方工具SQL Developer如何使用
    这篇文章主要介绍“Oracle官方工具SQL Developer如何使用”,在日常操作中,相信很多人在Oracle官方工具SQL Developer如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-06-30
  • 简单易用的MySQL官方压测工具是什么
    本篇内容主要讲解“简单易用的MySQL官方压测工具是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“简单易用的MySQL官方压测工具是什么”吧! 一...
    99+
    2022-10-18
  • 官方压测工具mysqlslap介绍及使用
    mysqlslap是官方的一款做压力测试的工具,可以模拟多个客户端进行并发测试。 比如可以模拟多少并发,执行多少次,针对某个存储引擎……等等 比如对myisam引擎做并发量为100,查询次数为1000...
    99+
    2022-10-18
  • Linux不安装Oracle使用exp导出工具
    应用场景:    有时候我们需要对ORACLE定时导出DMP文件,但无需安装Oracle软件。1、准备    1.1 ...
    99+
    2022-10-18
  • elasticsearch导入导出工具elasticdump安装和使用小记
    首选需要安装npm工具,具体可参考: https://www.runoob.com/nodejs/nodejs-npm.html 开始安装elasticdump: # npm insta...
    99+
    2022-10-18
  • 使用Java导入、导出excel详解(附有封装好的工具类)
    😜作           者:是江迪呀✒️本文关键词:Java、Excel、导出、工具类、后端☀️每日   一言:有些事情不是对的才去坚持,而是坚持了它才是对的! 前言 我们在日常开发中,一定遇到过要将数据导出为Exc...
    99+
    2023-08-18
    java excel 开发语言
  • 使用mysql自带工具的方法
    下文给大家带来关于使用mysql自带工具的方法,感兴趣的话就一起来看看这篇文章吧,相信看完使用mysql自带工具的方法对大家多少有点帮助吧。1)mysql命令:mysql命令事是使用最多的命令工具了,为用户...
    99+
    2022-10-18
  • mysql使用sql导出成excel的方法
    这篇文章主要介绍“mysql使用sql导出成excel的方法”,在日常操作中,相信很多人在mysql使用sql导出成excel的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-18
  • Go语言官方依赖注入工具Wire的使用教程
    目录1. 前言2. 依赖注入(DI)是什么3. Wire Come3.1 简介3.2 快速使用3.3 基础概念4. Wire使用实践4.1 基础使用4.2 高级特性4.3 高阶使用5...
    99+
    2022-11-11
  • mysql数据库怎么用工具和命令行实现导出导入备份
    这篇文章主要讲解了“mysql数据库怎么用工具和命令行实现导出导入备份”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql数据库怎么用工具和命令行实现导...
    99+
    2022-10-18
  • Java使用excel工具类导出对象功能示例
    本文实例讲述了Java使用excel工具类导出对象功能。分享给大家供大家参考,具体如下:package com.gcloud.common;import org.apache.poi.ss.usermodel.Cell;import org...
    99+
    2023-05-30
    java excel 工具类
  • MySql使用mysqldump 导入与导出方法总结
    导出数据库数据: 首先打开cmd进入MySQL的bin文件夹下 1.导出education数据库里面的users表的表数据和表结构(下面以users表为例) mysqldump -u[用户名] -h[ip] -p...
    99+
    2022-05-23
    mysqldump 导入导出 MySql mysqldump
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作