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


75

AWS文档的本页讨论了从MySQL服务器导入和导出数据,但主要涉及导入。我在他们的文档中唯一看到的是使用复制导出5.6数据的方法,该方法在此处记录。我想知道是否有使用mysqldump导出数据并在本地数据库中加载的更简单方法。我要导出的数据库不是很大,可能是1GB,因此大小不是问题。

Answers:


121

当然。

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

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

当提示您输入密码时,请提供user = remote_user_name的密码(远程服务器)

将其上传到本地mySql实例:

mysql -u local_user_name -p local_db < dump.sql

另外,如果您ec2在同一地区拥有一台服务器,我建议在那里进行转储。压缩文件,然后将scp其压缩到本地计算机。通常,文件的压缩版本会小得多,您可以更快地进行传输。


12
或者,将--compress选项添加到mysqldump以便从远程服务器更快地进行传输。生成的输出文件未压缩,但是通过电线您可以看到大量的带宽节省和更快的传输。
Michael-sqlbot

1
但是您可能必须添加一些标志来进行补偿,例如-K,这样就不会在导入时出现外键问题
nafg 2015年

1
如果无法连接,则可能需要将IP添加到安全组。它位于EC2仪表板>网络和安全性>安全组
本地品牌

22

从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

当提示您输入密码时,请提供密码


4

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


4

从RDS导出数据的最佳方法是创建新的EC2实例以连接和转储mysql。

  1. 创建新的EC2 Linux2实例
  2. 连接SSH
  3. 安装Docker

    • 更新实例上已安装的软件包和软件包缓存。

      sudo yum更新-y

    • 安装最新的Docker社区版软件包。
    • 亚马逊Linux 2。

      sudo amazon-linux-extras安装docker

    • Amazon Linux。

      sudo yum安装docker

    • 启动Docker服务。

      sudo服务docker start

    • 将ec2-user添加到docker组,以便无需使用sudo即可执行Docker命令。

      sudo usermod -a -G docker ec2-user

    • 注销并再次登录以获取新的Docker组权限。您可以通过关闭当前的SSH终端窗口并在新的实例中重新连接到实例来完成此操作。您的新SSH会话将具有适当的Docker组权限。

    • 验证ec2-user是否可以在没有sudo的情况下运行Docker命令。

      码头工人信息

  4. 运行mysql容器

    docker运行-it --network some-network --rm mysql mysql -h some-mysql -u example-user -p

  5. 运行转储SQL

    mysqldump -h主机-u use_name -P 3306 -p-数据库db_name | gzip> db_name.gz

  6. 将文件从容器复制到主机

    泊坞窗cp container_id:/ home / home / ec2-user / sql_backup


7
您是否可以编辑该帖子以说明为什么在docker容器中运行它比仅在主机ec2实例上运行更好?
enharmonic

我相信这是因为mysql客户端。有时安装mysql客户端不是那么容易,特别是如果它是特定版本。
卡米洛J
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.