如何将本地MySQL数据库导入到RDS数据库实例?

28

我创建了一个名为realcardiodb的RDS实例(引擎是mysql) 并从我的本地主机导出了数据库。文件名为localhostrealcardio.sql,保存在本地。

大多数研究都建议使用mysqldump将数据从本地系统导入Web服务器,但我的系统甚至无法识别mysqldump。

C:\xampp\mysql>mysqldump
'mysqldump' is not recognized as an internal or external command, operable program or batch   file. 

我该如何解决这个错误?我应该使用mysqldump吗?(我系统中肯定安装了mysql)

是否有更好的工具可供使用?

非常感谢任何帮助,特别是如果您在将mysql导入aws rds方面有经验。

谢谢! DK

更新7/31/2012 所以我已经解决了这个错误。mysqldump在bin目录下 C:\xampp\mysql\bin>mysqldump AWS提供了以下上传本地数据库到RDS的说明:

mysqldump acme | mysql --host=hostname --user=username --password acme

能否有人为我分解一下?

1)第一个“acme”(在mysqldump命令之后)是我的本地数据库的名称还是我保存在本地的导出SQL文件的名称?

2)主机名是IP地址、公共DNS、RDS终端节点还是两者都不是?

3)我假设用户名和密码是RDS凭据,第二个acme是我在RDS中创建的数据库的名称。

谢谢!


看起来这可能只是一个 PATH 环境变量的问题。恐怕我无法提供更多帮助,因为我不是 Windows 用户。 - Christopher
6个回答

50

以下是我为在MySQL表中具有数据的一些实例所做的方法。

创建RDS数据库实例的步骤:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.html

注意:确保RDS实例已配置与EC2安全组相关联的安全组。 http://docs.amazonwebservices.com/AmazonRDS/latest/UserGuide/USER_Workin...

在我们继续之前,让我提供一些占位符的列表:

  • host.address.for.rds.server = 这将是您的RDS描述/设置页面中所谓的“端点”。
  • rdsusername = 您在RDS设置期间创建的主用户帐户。
  • rdsdatabase = 您在RDS实例上的服务器内创建的空数据库。
  • backupfile.sql = 您为现有安装程序的数据库制作的sql转储文件。

一旦您创建了一个新的RDS数据库实例,并配置了其安全设置,请登录此服务器(从EC2服务器的ssh会话内部),然后使用基本的SQL命令在实例内创建一个空数据库。

mysql -h host.address.for.rds.server -P 3306 -u rdsusername -p
(enter your password)
create database rdsdatabase;

然后退出RDS服务器内的MySQL环境。

\q

本教程假设您已经有了来自旧数据库的备份。如果没有,请现在创建一个备份。之后,您即可将该SQL转储文件导入到等待在RDS服务器上的空数据库中。

mysql -h host.address.for.rds.server -u rdsusername -p  rdsdatabase < backupfile.sql

根据SQL转储文件的大小,可能需要几秒钟才能完成。您可以通过bash命令提示符重新出现来确认其已完成。

注意:“mysqlimport”命令用于直接导入数据到数据库内现有表中。尽管看起来像是在“导入”数据,但这并不是我们在此情况下实际执行的操作。我们要迁移到的数据库还没有表格,而我们使用的SQL转储文件包含生成所需表格的SQL命令。

确认转移

如果您没有收到任何错误消息,则您的SQL转移可能已成功。如果需要,您可以连接到RDS数据库服务器,查找您创建的数据库,并检查表格是否已经存在。

mysql -h host.address.for.rds.server -P 3306 -u rdsusername -p
(enter your password)
use rdsdatabase;
show tables;

第一个链接已经失效,请您检查一下? - SkyWalker
@David Csonka 我需要把我的备份文件 backupfile.sql 存放在哪里? - DD77
@DD77,你可以将它保存在本地文件系统的任何位置,或者你运行mysql的任何位置。mysql CLI只需要路径;命令mysql -h host.address.for.rds.server -u rdsusername -p rdsdatabase < backupfile.sql假设你是从backupfile.sql所在的目录运行它,但你也可以轻松地运行mysql ... < /some/random/path/to/backupfile.sql - acobster
@acobster,不幸的是我没有本地文件。我有一个15GB的.sql文件存储在我的AWS S3上。有没有办法从我的S3服务器加载该SQL文件到我的RDB服务器? - jhub1
我有所有数据库的转储文件,如何通过创建自动数据库来恢复所有内容,而不是将它们转储到RDS数据库中? - Chintan7027
这是唯一帮我解决问题的方法,非常感谢!读了各种版本的文档,下载并尝试编译某些Linux软件来备份数据库(就像文档中建议的那样),却被AWS惹怒了。他们为什么不直接告诉我们做这个呢? - user115014

27
我更喜欢使用MySQL Workbench。 它比命令行方式更易于使用和用户友好。
它提供了一个简单的GUI界面。
MySQL Workbench或SQL Yog。
这是我所做的步骤。
1)安装MySQL Workbench。
2)在AWS控制台中,必须为您的RDS实例设置安全组。 向该组添加入站规则以允许来自您的计算机的连接。 这很简单。 添加您的IP地址。
3)打开MySQL Workbench,添加新连接。
4)给连接取一个您喜欢的名称。
5)选择连接方法-标准TCP / IP
6)在主机名字段中输入您的RDS端点。
7)端口:3306
8)用户名:主用户名(在创建RDS实例期间创建的用户名)
9)密码:主密码
10)单击“测试连接”以检查您的连接。
11)如果连接成功,请单击“确定”。
12)打开连接。
13)您将在那里看到您的数据库'realcardiodb'。
14)现在,您可以将mysqldump文件导出到此数据库。 转到->服务器。 点击数据导入。
15)您可以通过打开空SQL文件并键入基本SQL命令(例如use database,select * from table;)来检查数据是否已迁移;
就是这样。 Voila.

当您使用向导创建 RDS 实例时,将自动为您创建一个安全组,其中包含您的计算机 IP 地址,并带有类似于 rds-launch-wizard 的组名。 - johnnieb

4
如果您的电脑上有一个 backup.sql 文件,就无需将其传输到 EC2 上。只需在您的电脑终端中输入以下命令即可:
$ mysql -h rdsinstance-hostaddress-ending.rds.amazonaws.com -u rds_username -p  rds_database < /path/to/your/backup.sql

输入密码:paswd_mysql_user

就这些。

直接从现有远程服务器导入备份

通过SSH连接到您的远程服务器

获取远程服务器mysql备份(backup/path/backupfile.sql)

在远程服务器shell中将备份文件导入RDS mysql

mysql -h your-mysql-instance.region.rds.amazonaws.com -u db_username -p db_name < backup/path/backupfile.sql

注意:

我已经尝试了以上所有标准将我的现有备份导入新的RDS数据库,包括在AWS文档中介绍的通过EC2的方法。备份文件大小为10GB。因此我也尝试了逐个表格导入。虽然显示进程已完成,但是大型表格中仍有部分数据丢失。因此,我不得不编写一个从数据库到数据库的数据迁移脚本。


2
使用工作台:
  1. 建立连接

  2. 转到管理选项卡,点击数据导入/还原

  3. 点击从自包含文件导入

  4. 选择您的 mysqlbackup.sql 文件

  5. 选择默认数据库

  6. 点击开始导入按钮

使用命令行(在Windows上):
mysqldump -u <localuser>

--databases world 
--single-transaction 
--compress 
--order-by-primary  
-p<localpassword> | mysql -u <rds-user-name>
    --port=3306 
    --host=ednpoint 
    -p<rds-password>

请参考以下链接以获取更详细信息: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.SmallExisting.html 或者 https://docs.bitnami.com/aws/how-to/migrate-database-rds/#using-phpmyadmin-110 希望对您有所帮助。

1

这是一份关于如何将已存在的mysql/mariadb数据库迁移到正在运行的RDS实例的逐步指南


0

这里是AWS RDS Mysql文档,用于将客户数据导入RDS

http://aws.amazon.com/articles/2933

  • 创建包含要加载数据的平面文件
  • 停止任何访问目标DB实例的应用程序
  • 创建DB快照
  • 禁用Amazon RDS自动备份
  • 使用mysqlimport加载数据
  • 再次启用自动备份

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