将数据从外部 MySQL 数据库导入到 Amazon RDS for MySQL 数据库实例
您可以将数据从现有 MySQL 数据库导入到 RDS for MySQL 数据库实例。为此,请使用 mysqldumpmysqldump 命令行实用程序通常用于创建备份以及将数据从一个 MySQL 服务器传输到另一个 MySQL 服务器。该实用程序包含在 MySQL 客户端软件中。
注意
如果您使用 MySQL 数据库实例导入或导出大量数据,则可以使用 xtrabackup 备份文件和 Amazon S3 更可靠、更块地将数据移入和移出 Amazon RDS。有关更多信息,请参阅 将备份还原到 Amazon RDS for MySQL 数据库实例。
将数据从外部数据库移动到 Amazon RDS 数据库实例的典型 mysqldump 命令类似以下示例。将值替换为您自己的信息。
mysqldump -ulocal_user\ --databasesdatabase_name\ --single-transaction \ --compress \ --order-by-primary \ --routines=0 \ --triggers=0 \ --events=0 \ -plocal_password| mysql -uRDS_user\ --port=port_number\ --host=host_name\ -pRDS_password
重要
确保 -p 选项和输入的密码之间不留空格。
作为安全最佳实践,请指定此示例中显示的提示以外的凭证。
确保您了解以下建议和注意事项:
-
从转储文件中排除以下架构:
-
sys -
performance_schema -
information_schema
默认情况下,
mysqldump实用工程序包括这些架构。 -
-
如果您需要迁移用户和权限,请考虑使用生成数据控制语言 (DCL) 的工具 (如 pt-show-grants
实用程序) 来重新创建用户和权限。 -
要执行导入,请确保执行此操作的用户有权访问数据库实例。有关更多信息,请参阅 使用安全组控制访问权限。
所用参数如下所示:
-
-u– 用于指定用户名。在第一次使用该参数时,请指定您使用local_user--databases参数确定的本地 MySQL 数据库中的用户账户名称。 -
--databases– 用于指定本 MySQL 实例上您要导入 Amazon RDS 的数据库的名称。database_name -
--single-transaction– 用于确保从本地数据库加载的所有数据都与单一时间点保持一致。如果在mysqldump读取数据期间有其他进程更改数据,使用该参数有助于保持数据完整性。 -
--compress– 用于降低网络带宽消耗,方式为将数据从本地数据库发送到 Amazon RDS 之前压缩数据。 -
--order-by-primary– 用于减少加载时间,方式为根据主键对每个表中的数据进行排序。 -
--routines:如果您要复制的数据库中存在诸如存储过程或函数之类的例程,则使用此参数。将此参数设置为0,这将在导入过程中排除例程。稍后在 Amazon RDS 数据库中手动重新创建例程。 -
--triggers:如果要复制的数据库中存在触发器,则使用此参数。将此参数设置为0,这将在导入过程中排除触发器。稍后在 Amazon RDS 数据库中手动重新创建触发器。 -
--events:如果要复制的数据库中存在事件,则使用此参数。将此参数设置为0,这将在导入过程中排除事件。稍后在 Amazon RDS 数据库中手动重新创建事件。 -
-p– 用于指定密码。在第一次使用该参数时,请为您使用第一个local_password-u参数标识的用户账户指定密码。 -
-u– 用于指定用户名。在第二次使用该参数时,请为您使用RDS_user--host参数标识的 MySQL 数据库实例指定默认数据库上的用户账户的名称。 -
--port– 用于为您的 MySQL 数据库实例指定端口。默认情况下该值为 3306,除非您在创建数据库实例时更改了该值。port_number -
--host– 用于从 Amazon RDS 数据库实例端点指定域名系统 (DNS) 名称,例如,host_namemyinstance.123456789012.us-east-1.rds.amazonaws.com。您可以在 Amazon RDS 控制台上的数据库实例详细信息中找到端点值。 -
-p– 用于指定密码。在第二次使用该参数时,您为第二个RDS_password-u参数确定的用户账户指定密码。
确保在 Amazon RDS 数据库中手动创建任何存储过程、触发器、函数或事件。如果您所复制的数据库中有上述任一对象,则在运行 mysqldump 时排除这些对象。为此,使用 mysqldump 命令时请包含以下参数:
-
--routines=0 -
--triggers=0 -
--events=0
示例:
以下示例将本地主机上的 world 示例数据库复制到 RDS for MySQL 数据库实例中。将值替换为您自己的信息。
对于 Linux、macOS 或 Unix:
sudo mysqldump -ulocal_user\ --databasesworld\ --single-transaction \ --compress \ --order-by-primary \ --routines=0 \ --triggers=0 \ --events=0 \ -plocal_password| mysql -urds_user\ --port=3306\ --host=my_instance.123456789012.us-east-1.rds.amazonaws.com\ -pRDS_password
对于:Windows
在已通过右键单击 Windows 程序菜单上的命令提示符并选择以管理员身份运行打开的命令提示符中,运行以下命令:将值替换为您自己的信息。
mysqldump -ulocal_user^ --databasesworld^ --single-transaction ^ --compress ^ --order-by-primary ^ --routines=0 ^ --triggers=0 ^ --events=0 ^ -plocal_password| mysql -uRDS_user^ --port=3306^ --host=my_instance.123456789012.us-east-1.rds.amazonaws.com^ -pRDS_password
注意
作为安全最佳实践,请指定示例中显示的提示以外的凭证。