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

时间:2012-07-31 00:56:43

标签: amazon-web-services mysqldump amazon-rds

我创建了一个名为realcardiodb的RDS实例(引擎是mysql) 我从我的localhost导出了我的数据库。文件在本地保存,名为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

2012年7月31日更新 所以我解决了错误。 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凭证,第二个极致是我在RDS中创建的数据库的名称。

谢谢!

6 个答案:

答案 0 :(得分:40)

这就是我在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数据库实例并配置了其安全设置,请登录此服务器(从ssh会话到EC2服务器),然后使用基本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;

答案 1 :(得分:20)

我更喜欢使用MySQL工作台。它更容易和更容易用户友好的命令行方式。

它提供了一个简单的GUI。

MySQL workbench或SQL Yog。

这些是我所做的步骤。

1)安装MySQL Workbench。

2)在AWS控制台中,您的RDS实例必须有一个安全组。    将入站规则添加到该组以允许来自您的计算机的连接。    这很简单。添加您的IP地址。

3)打开MySQL工作台,添加新连接。

4)为连接指定一个您喜欢的名称。

5)选择连接方法 - 标准TCP / IP

6)在主机名字段中输入您的RDS端点。

7)港口:3306

8)用户名:主用户名(您在创建RDS实例期间创建的用户名)

9)密码:主密码

10)单击“测试连接”以检查连接。

11)如果连接成功,请单击“确定”。

12)打开连接。

13)你会在那里看到你的数据库'realcardiodb'。

14)现在您可以将mysqldump文件导出到此数据库。转到 - &gt;服务器。单击“数据导入”。

15)您只需打开一个空白的SQL文件即可检查数据是否已迁移。输入基本的SQL命令,比如use database,select * from table;

就是这样。中提琴。

答案 2 :(得分:3)

如果您的PC中有backup.sql,则无需转移到EC2。只需在PC上的终端下面给出一行。

$ 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数据库,包括通过EC2,如AWS文档中所示。这是一个10GB的备份。所以我也按表格尝试了表格。它显示了完成的过程,但是大型表缺少一些数据。所以我不得不写一个DB到DB数据迁移脚本。

答案 3 :(得分:1)

使用工作台:

  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

希望有帮助。

答案 4 :(得分:1)

关于如何将mysql / mariadb上的现有数据库迁移到已运行的RDS实例的step by step指令。

答案 5 :(得分:0)

以下是将客户数据导入RDS的AWS RDS Mysql文档

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

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