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

Posted

技术标签:

【中文标题】如何将本地 MySQL 数据库导入 RDS 数据库实例?【英文标题】:How do I import a local MySQL db to RDS db instance? 【发布时间】:2012-07-28 17:22:29 【问题描述】:

我创建了一个名为 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 的经验。

谢谢! 丹麦

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 凭据,第二个 acme 是我在 RDS 中创建的数据库的名称。

谢谢!

【问题讨论】:

看起来这可能很简单as a PATH env variable problem. 怕我帮不上忙。我不是 Windows 用户。 【参考方案1】:

这就是我对几个在 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;

【讨论】:

第一个链接已失效。请检查一下好吗? @David Csonka 我需要在哪里保存我的 backupfile.sql? @DD77 您可以将其保存在本地文件系统的任何位置,或者您正在运行mysql 的任何位置。 mysql CLI 只需要它的路径;命令mysql -h host.address.for.rds.server -u rdsusername -p rdsdatabase &lt; backupfile.sql 假设您从backupfile.sql 所在的目录运行它,但您也可以轻松运行mysql ... &lt; /some/random/path/to/backupfile.sql @acobster 不幸的是,我在本地没有该文件。我的 AWS S3 上存储了一个 15 GB 的 .sql 文件。无论如何要将该 sql 文件从我的 S3 服务器加载到我的 RDB 服务器? 我有所有数据库的转储文件,如何通过创建自动数据库来恢复所有文件,而不是转储到 rdsdatabase【参考方案2】:

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

它提供了一个简单的 GUI。

MySQL 工作台或 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 文件导出到该数据库。转到-> 服务器。点击数据导入。

15) 只需打开一个空白 SQL 文件并输入基本 SQL 命令,如使用数据库、从表中选择 *,即可检查数据是否已迁移;

就是这样。中提琴。

【讨论】:

当您使用向导创建 RDS 实例时,系统会自动为您创建一个具有您机器 IP 地址的安全组,其中包含 rds-launch-wizard 之类的组。【参考方案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

输入密码:passwd_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 的备份。所以我也尝试过逐个表格。它显示过程已完成,但大型表缺少一些数据。所以我不得不写一个 DB 到 DB 的数据迁移脚本。

【讨论】:

【参考方案4】:

使用工作台:

    设置连接

    进入管理选项卡,点击数据导入/恢复

    点击自包含文件导入。

    选择您的 mysqlbackup.sql 文件。

    选择默认数据库。

    点击开始导入按钮。

使用命令行(在 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

希望对你有帮助。

【讨论】:

【参考方案5】:

step by step 说明如何将 mysql/mariadb 上已有的数据库迁移到已经运行的 RDS 实例。

【讨论】:

【参考方案6】:

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

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

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

【讨论】:

以上是关于如何将本地 MySQL 数据库导入 RDS 数据库实例?的主要内容,如果未能解决你的问题,请参考以下文章

如何将RDS的数据同步到本地自建数据库

将数据从 CSV 文件导入 Amazon Web Services RDS MySQL 数据库

如何将本地 MySQL 数据库同步到 Amazon RDS 数据库?

如何将阿里云的mysql(RDS)数据备份到本地

如何为 AWS RDS 加载数据 infile mysql 工作台?

如何将自建库迁移到阿里云RDS