小智 24
由于我碰巧自己正在研究这个,这里是我发现的摘要。
根据MySQL 开发团队 2015 年的一篇博客文章,mysqlpump 的主要优点是它可以并行使用多个线程来加速转储,并且它不共享 mysqldump 的向后兼容性要求,这应该为进一步打开大门改进。
但是,该帖子警告说 mysqlpump “目前作为通用备份替代品是不安全的”,因为各个线程可能会从数据库的不同状态生成它们的转储部分。它没有提到任何弃用 mysqldump 的计划。
Giuseppe Masia 在 2015 年尝试了 mysqlpump,发现转储加速相当小。他赞赏精确选择要转储的对象的新功能,但指出将转储加载回只能单线程完成,并且(与 mysqldump 不同)转储只能加载回同名的数据库中。
Sol*_*zky 16
我也一直在研究这两个实用程序之间的差异,除了@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--skip-quick--skip-quote-names--skip-triggers--skip-tz-utc--verbose--where--xml另一方面,mysqlpump有以下mysqldump所没有的选项
--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在dump中不存在于pump 中,但它的同义词 -- --skip-set-charset-- 存在于两者中--ignore-table=in dump主要是--exclude-tables=在pump 中,除了--exclude-tables可以指定所有表,用逗号分隔,并允许通配符(%和_)--tablesin dump主要--include-tables=在pump 中,除了--include-tables可以指定所有表,用逗号分隔,并允许通配符(%和_)。此外,在dump 中--tables覆盖,而在pump中没有。--databases--include-tables=--databases在dump和pump中主要是--include-databases=在pump 中,除了--include-databases可以指定所有数据库,用逗号分隔,并允许通配符(%和_)。以下是我对这两种备份工具的理解的总结。
\n\n手册页中给出了 mysqldump 的定义
\n\n\n\n\nmysqldump 客户端实用程序执行逻辑备份,生成一组可以执行以重现原始数据库对象定义和表数据的 SQL 语句。它转储一个或多个 MySQL 数据库以进行备份或传输到另一台 SQL 服务器。mysqldump 命令还可以生成 CSV、其他分隔文本或 XML 格式的输出。
\n
mysqldump非常容易使用,语法也很简单。当我们执行此命令时,它将所有行转换为 SQL 查询并将其打印在标准输出中。我们可以将此输出重定向到 outfile(>) 或使用选项 \xe2\x80\x94 结果文件。
\n\n默认情况下,mysqldump 不会转储 information_schema 表,也从不获取 Performance_schema。mysqldump 的主要缺点是它在进行备份和恢复时仅使用一个线程。
\n\nMysqlpump 是 MySQL 5.7 中引入的另一个实用程序,与 mysqldump 相比,它具有更多功能
\n\n手册页中给出了 mysqlpump 的定义
\n\n\n\n\nmysqlpump 客户端实用程序执行逻辑备份,生成一组可以执行以重现原始数据库对象定义和表数据的 SQL 语句。它转储一个或多个 MySQL 数据库以进行备份或传输到另一台 SQL 服务器。
\n
主要特点是
\n\n并行处理(多线程)以加快备份速度
进度指示器
将用户帐户转储为(创建、授予语句,而不是 MySQL 系统数据库的插入)
默认情况下,mysqlpump 不会备份系统数据库,例如信息模式、性能模式和一些 MySQL 系统表,除非明确提及。
\n\n它还具有选项 \xe2\x80\x93include-database、\xe2\x80\x93exclude-database、\xe2\x80\x93include-table、\xe2\x80\x93exclude-table 以及模式匹配(%)。
\n\n对于只想备份整个数据集中的少数对象的用户来说,这些选项更加方便。
\n\n一般来说,mysqlpump 将其工作分成块,并将每个块分配给一个多线程队列。
\n\n这个多线程队列由 N 个线程处理(默认情况下使用 2 个线程)。
我们可以使用此选项 \xe2\x80\x93default-parallelism 和 \xe2\x80\x93parallel-schemas 定义多个线程。
恢复时,它使用单线程,与 mysqldump 相同,它缺乏并行恢复。
作为附加组件,我们还有一个工具可以在备份和恢复中执行并行化(mysqlpump 和 mysqldump 缺乏),称为mydumper 和 myloader。这在恢复大型数据集时将被大量使用。
\n\n您可以在此博客\n mysqldump vs mysqlpump vs mydumper中找到这些工具的更多详细信息及其有用选项。
\n| 归档时间: |
|
| 查看次数: |
15196 次 |
| 最近记录: |