更新时间:2023-09-04
您可以将数据从现有 MySQL 或 MariaDB 数据库导入到 RDS MySQL 或 MariaDB 数据库实例。 为此,请使用 mysqldump 复制数据库,然后通过管道将其直接传输到 RDS MySQL 或 MariaDB 数 据库实例。mysqldump 命令行实用程序通常用于创建备份以及将数据从一个 MySQL 或 MariaDB 服务器传 输到另一个 MySQL 或 MariaDB 服务器。该实用程序包含在 MySQL 和 MariaDB 客户端软件中。
将数据从外部数据库移动到 RDS 数据库实例的典型 mysqldump 命令与下类似:
mysqldump -u <local_user> \
--databases <database_name> \
--single-transaction \
--compress \
--order-by-primary \
-p<local_password> | mysql -u <RDS_user> \
--port=<port_number> \
--host=<host_name> \
-p<RDS_password>
确保 -p 选项和输入的密码之间不留空格。
注意⚠️:
•从转储文件中排除以下架构:sys、performance_schema 和 information_schema。默认情况下,mysqldump 实用工程序包括这些架构。
• 如果您需要迁移用户和权限,请考虑使用生成数据控制语言 (DCL) 的工具 (如 pt-show-grants 实 用程序) 来重新创建用户和权限。
所用参数如下所示:
•-u <local_user> – 用于指定用户名。在第一次使用该参数时,您指定由 --databases 参数确定的本 地 MySQL 或 MariaDB 数据库中的用户账户名称。
•--databases <database_name> – 用于指定本地 MySQL 或 MariaDB 实例上您要导入 RDS 的数据库的名称。
•--single-transaction – 用于确保从本地数据库加载的所有数据都与单一时间点保持一致。如果在
mysqldump 读取数据期间有其他进程更改数据,使用该选项有助于保持数据完整性。
•--compress – 用于降低网络带宽消耗,方式为将数据从本地数据库发送到 RDS 之前压缩数 据。
•--order-by-primary – 用于减少加载时间,方式为根据主键对每个表中的数据进行排序。
•-p<local_password> – 用于指定密码。在第一次使用该参数时,您为第一个 -u 参数确定的用户账户指 定密码。
•-u <RDS_user> – 用于指定用户名。在第二次使用该参数时,您指定由 --host 参数确定的
RDS MySQL 或 MariaDB 数据库实例中的默认数据库的用户账户名称。
•--port <port_number> – 用于为您的 RDS MySQL 或 MariaDB 数据库实例指定端口。默认 情况下该值为 3306,除非您在创建实例时进行了更改。
•--host <host_name> – 用于从 RDS 数据库实例终端节点指定 DNS 名称,例 如,myinstance.123456789012.us-east-1.rds.sangforrds.com。您可以在 RDS 管理 控制台上的实例详细信息中找到终端节点值。
•-p<RDS_password> – 用于指定密码。在第二次使用该参数时,您为第二个 -u 参数确定的用户账户指定 密码。
您必须在 RDS 数据库中手动创建任何存储过程、触发器、函数或事件。如果您所复制的数据库中 有上述任一对象,则在运行 mysqldump 时排除这些对象,方式是将以下参数与 mysqldump 命令一起包 含:--routines=0 --triggers=0 --events=0。
以下示例将本地主机上的 world 示例数据库复制到 RDS MySQL 数据库实例中。 对于 Linux、macOS 或 Unix:
mysqldump -u localuser \
--databases world \
--single-transaction \
--compress \
--order-by-primary \
-plocalpassword | mysql -u rdsuser \
--port=3306 \
--host=myinstance.123456789012.us-east-1.rds.sangforrds.com \
-prdspassword
对于 Windows,右键单击 Windows 程序菜单上的 Command Prompt 并选择 Run as administrator 打开命令 提示符,运行以下命令:
mysqldump -u localuser \
--databases world \
--single-transaction \
--compress \
--order-by-primary \
-plocalpassword | mysql -u rdsuser \
--port=3306 \
--host=myinstance.123456789012.us-east-1.rds.sangforrds.com \
-prdspassword