会为mysqlpump淘汰mysqldump吗?
#1 楼
由于我碰巧自己对此进行了研究,因此这里总结了我发现的内容。根据MySQL开发团队2015年的一篇博客文章,mysqlpump的主要优点是它可以在多个线程中使用多个线程。同时加快了转储速度,并且不共享mysqldump的向后兼容性要求,这应该为进一步改进打开方便之门。
但是,该帖子警告mysqlpump“目前普遍不安全备份替换”,因为各个线程可能会从数据库的不同状态生成转储部分。它没有提及任何弃用mysqldump的计划。
Giuseppe Maxia在2015年试用了mysqlpump,发现转储速度非常小。他赞赏能够精确选择要转储的对象的新功能,但是指出,只能以单线程方式将转储加载回去,并且(与mysqldump不同)转储只能以相同的名称重新加载到数据库中。 >
评论
警告:mysqlpump是封闭源代码软件(将来无法确定)。 mysqlpump的开源替代方案是github.com/maxbube/mydumper mydumper
–伊万诺夫
18年8月20日在6:43
#2 楼
我也一直在研究这两个实用程序之间的区别,除了@Neil的答案中提到的内容外,似乎mysqlpump还比mysqldump具有更少的选项,例如不允许以下操作:--compatible=
--tab
及其相关选项: --fields-terminated-by=
--fields-enclosed-by=
--fields-optionally-enclosed-by=
--fields-escaped-by=
--lines-terminated-by=
--quote-names
--add-drop-trigger
--allow-keywords
--apply-slave-statements
--comments
--compact
--compatible
--create-options
--delete-master-logs
--disable-keys
--dump-date
--dump-slave
--enable-cleartext-plugin
--flush-logs
--flush-privileges
--force
--ignore-error
--include-master-host-port
--lock-all-tables
--lock-tables
--master-data
--no-autocommit
--no-tablespaces
--opt
--order-by-primary
--pipe
--quick
--quote-names
--set-gtid-purged
--shared-memory-base-name
--skip-add-drop-table
--skip-add-locks
--skip-comments
--skip-compact
--skip-disable-keys
--skip-extended-insert
--skip-opt
另一方面,mysqlpump具有以下选项,这些选项在mysqldump中不可用
--skip-quick
--skip-quote-names
--skip-triggers
--skip-tz-utc
--verbose
--where
--xml
--compress-output
--default-parallelism
--defer-table-indexes
--exclude-databases=
--exclude-events=
--exclude-routines=
--exclude-triggers=
--exclude-users=
--include-events=
重命名或类似名称:
--include-routines=
在转储== --include-triggers=
在泵中转储中的
--include-users=
在泵中不存在,但两者的同义词---parallel-schemas=
-在两个泵中都存在转储中的
--skip-definer
在泵中主要是--users
,但可以指定--watch-progress
所有表,用逗号分隔,并允许使用通配符(--no-data
和--skip-dump-rows
)转储中的
--no-set-names
在泵中主要是--skip-set-charset
,但--ignore-table=
可以指定所有表,并用逗号分隔,并允许使用通配符(--exclude-tables=
和--exclude-tables
)。同样,%
会覆盖转储中的_
,而pump中的--tables
则不会。 (--include-tables=
和--include-tables
)。#3 楼
这是我对这两种备份工具的了解的摘要。手册页中给出的mysqldump定义
mysqldump客户端实用程序执行逻辑备份,生成一组SQL语句,可以执行这些语句来重现原始数据库对象定义和表数据。它转储一个或多个MySQL数据库以进行备份或传输到另一台SQL服务器。 mysqldump命令还可以生成CSV,其他定界文本或XML格式的输出。
Mysqldump非常易于使用,语法也非常简单。当我们执行此操作时,它将所有行转换为SQL查询并将其打印在标准输出中。我们可以将此输出重定向到outfile(>)或使用选项-结果文件。
默认情况下,mysqldump不会转储information_schema表,并且它永远不会使用performance_schema。 mysqldump的主要缺点是在进行备份和还原时仅使用一个线程。
Mysqlpump是MySQL 5.7中引入的另一个实用程序,与mysqldump相比,它具有更多功能
手册页中给出的mysqlpump定义
mysqlpump客户端实用程序执行逻辑备份,生成一组SQL语句,可以执行这些语句以重现原始数据库对象定义和表数据。它转储一个或多个MySQL数据库以进行备份或转移到另一台SQL Server。
主要功能是并行处理(多线程)加快备份
进度指示器
将用户帐户转储为(创建,授予语句,而不作为MySQL系统数据库的插入内容)
默认情况下,mysqlpump不会备份系统数据库,例如信息模式,性能模式和一些MySQL系统表,除非明确提及。
它还具有带模式匹配(%)的选项–include-database,-exclude-database,-include-table,-exclude-table。
对于希望仅从整个数据集中备份少量对象的用户,这些选项更为方便。
通常,mysqlpump将其工作划分为多个块,每个块都分配给一个多线程队列。
该多线程队列由N个线程处理(默认情况下,它使用2个线程)。
我们可以使用此选项–default-parallelism和–parallel-schemas来定义多个线程。
恢复时,它使用与mysqldump相同的单个线程,但缺少并行恢复。 br />
作为附加组件,我们还有一个工具在备份和还原(缺少mysqlpump和mysqldump)中执行并行化,称为mydumper和myloader。
您可以在此博客中找到这些工具的更多详细信息及其有用的选项
mysqldump vs mysqlpump vs mydumper。
评论
这只是意味着要几乎相同地命名两个相似的工具。@Erik似乎是一个“并行转储”,它可以更快地泵送数据..但我同意。
您可能也对MyDumper感兴趣。看来mysqlpump从中汲取了一些想法-这不是一件坏事,因为该项目已经进行了一年多了:-(
我希望看到一些性能测试!
XtradbBackup是另一个严重的竞争者。