如何将Amazon RDS MySQL实例中的数据库导出到本地实例?

93

AWS文档有这个页面介绍如何从MySQL服务器导入和导出数据,但大部分内容都是关于导入。在他们的文档中,我所看到的唯一导出5.6数据的方法是使用复制,详见此处。我想知道是否有更简单的方法可以使用mysqldump导出数据并加载到本地数据库中。我要导出的数据库不是很大,可能只有1GB,因此大小不是问题。

4个回答

159

好的。

从远程RDS服务器获取转储文件:

mysqldump -h rds.host.name -u remote_user_name -p remote_db > dump.sql
当提示输入密码时,请提供用户remote_user_name(远程服务器)的密码。
将其上传到您本地的MySQL实例中:
mysql -u local_user_name -p local_db < dump.sql

此外,如果您拥有在同一区域的 ec2 服务器,则建议将转储文件放在那里。压缩文件,然后使用 scp 将其传输到本地计算机。通常,文件的压缩版本会更小,传输速度也会更快。


22
在从远程服务器传输数据时,可以在 mysqldump 命令中添加 --compress 选项以提高传输速度。虽然输出文件并不是压缩的,但通过网络传输时可以显著节省带宽并加快传输速度。 - Michael - sqlbot
1
但是你可能需要添加一些额外的标志来补偿,比如 -K,这样在导入时就不会出现外键问题。 - nafg
1
如果您无法连接,则可能需要将您的IP添加到安全组中。它在EC2仪表板>网络和安全>安全组中。 - homebrand
是的。https://dev59.com/THA75IYBdhLWcg3w_uqD#2987371 - TJ-

34

导出 RDS 数据库

mysqldump -h rds.host.name -u remote_user_name -p remote_db > remote_db.sql

当提示输入密码时,请输入密码。

导入 RDS 数据库

mysql -h rds.host.name -u remote_user_name -p remote_db < remote_db.sql

当提示输入密码时,请输入密码。


6
另一个非常简单的选择是使用MySQL Workbench。在工具栏中选择“数据库”和“数据导出”。选择正确的选项、目标文件...就完成了!非常容易!

不幸的是,即使是中等大小的数据集,这也可能会非常缓慢。 - JohnW
现在这个选项在服务器标签下。2023年仍然可用!编辑:在macOS上。 - undefined

4
这是一个老话题,但如果您遇到以下错误:

警告:从具有GTID的服务器导出的部分转储默认情况下将包括所有事务的GTID,即使那些更改了数据库的抑制部分。如果不想恢复GTID,请传递--set-gtid-purged=OFF。要进行完整的转储,请传递--all-databases --triggers --routines --events。

mysqldump: 无法执行'SELECT COLUMN_NAME,JSON_EXTRACT(HISTOGRAM,'$."number-of-buckets-specified"')FROM information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME='db_name' AND TABLE_NAME='wp_actionscheduler_actions';': 在information_schema中未知表'COLUMN_STATISTICS'

简单地使用以下命令:
mysqldump -uUSER -p DATABASE --host=WriterEndpointNOport --set-gtid-purged=OFF --column-statistics=0 > bd_export.sql

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接