Fariman Kashani Asked: 2021-09-11 02:22:11 +0800 CST2021-09-11 02:22:11 +0800 CST 2021-09-11 02:22:11 +0800 CST mysql - 仅从完整转储中导入数据? 772 我有一个来自数据库 A 的完整转储。我只想将此转储的数据导入数据库 B。数据库 B 的结构与数据库 A 相同,只是它缺少一些表。我怎样才能做到这一点? 我不导入完整转储并删除额外表的原因是数据库 B 在 RDS 上,当我将转储文件导入其中时,导入作业将在其中停止。我试了三遍,数据库很大。每三次,它就停在同一个地方。RDS 日志没有显示任何内容。所以我决定只从转储文件中导入数据。 mysql mysqldump 1 个回答 Voted Best Answer Bill Karwin 2021-09-11T03:31:52+08:002021-09-11T03:31:52+08:00 sed您可以使用orperl或其他东西过滤掉转储文件中的 DDL 语句。但这需要一些时间来编写代码并对其进行测试。 如果您可以准备另一个跳过 DDL 语句的转储文件会更容易。阅读mysqldump 上的文档,有一个选项--no-create-info可以做到这一点。 但是,如果问题是无法完成大型转储文件的恢复,我不确定仅导入数据有什么帮助。省略 DDL 语句不会大大减少转储文件的大小。 这是另一种选择:根本不使用转储文件。最近 RDS 宣布支持导入使用 Percona XtraBackup 制作的物理备份:https ://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.html 您将使用 Percona XtraBackup 创建原始数据库的备份,然后将其上传到 S3,然后调用将该备份导入到 RDS 实例。它更快、更可靠,但需要注意的是,它会覆盖 RDS 实例上的所有表。
sed
您可以使用orperl
或其他东西过滤掉转储文件中的 DDL 语句。但这需要一些时间来编写代码并对其进行测试。如果您可以准备另一个跳过 DDL 语句的转储文件会更容易。阅读mysqldump 上的文档,有一个选项
--no-create-info
可以做到这一点。但是,如果问题是无法完成大型转储文件的恢复,我不确定仅导入数据有什么帮助。省略 DDL 语句不会大大减少转储文件的大小。
这是另一种选择:根本不使用转储文件。最近 RDS 宣布支持导入使用 Percona XtraBackup 制作的物理备份:https ://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.html
您将使用 Percona XtraBackup 创建原始数据库的备份,然后将其上传到 S3,然后调用将该备份导入到 RDS 实例。它更快、更可靠,但需要注意的是,它会覆盖 RDS 实例上的所有表。