将数据导入 Amazon RDS for MySQL 数据库实例并减少停机时间
有时,您可能需要将数据从支持活动应用程序的外部 MariaDB 或 MySQL 数据库导入到 RDS for MariaDB 数据库实例、RDS for MySQL 数据库实例或 RDS for MySQL 多可用区数据库集群。使用以下过程可最大程度地减小对应用程序可用性产生的影响。如果使用非常大的数据库,该步骤也很有用。使用该过程,您可以通过减少跨网络传送到 AWS 的数据量以降低导入成本。
在该过程中,您将数据库数据的副本传输到 Amazon EC2 实例,并将数据导入到新的 Amazon RDS 数据库中。然后,使用复制功能使 Amazon RDS 数据库与活动的外部实例保持同步,再将应用程序重新导向到 Amazon RDS 数据库。如果外部实例是 MariaDB 10.0.24 或更高版本,并且目标实例是 RDS for MariaDB,则基于全局事务标识符(GTID)配置 MariaDB 复制。否则,将基于二进制日志坐标配置复制。如果您的外部数据库支持基于 GTID 的复制,我们建议使用它,因为基于 GTID 复制是一种更可靠的方法。有关更多信息,请参阅 MariaDB 文档中的全局事务处理 ID
注意
如果您想要将数据导入到 RDS for MySQL 数据库实例中且您的方案支持此操作,则建议使用备份文件和 Amazon S3 将数据移入和移出 Amazon RDS。有关更多信息,请参阅 将备份还原到 Amazon RDS for MySQL 数据库实例。
下图显示将外部 MySQL 数据库导入到 Amazon RDS 上的 MySQL 数据库。

任务 1:创建现有数据库的副本
要将大量数据迁移到停机时间最少的 RDS for MariaDB 或 RDS for MySQL 数据库,第一步是创建源数据的副本。
下图显示了创建 MySQL 数据库的备份。

您可以使用 mysqldump
实用程序创建 SQL 或分隔的文本格式的数据库备份。在 MariaDB 10.5 中,客户端被称为 mariadb-dumpmariadb-dump
而不是 mysqldump
。建议您在非生产环境中对每种格式运行测试,以便了解哪种方法能最大程度地减少 mysqldump 运行的时间。
我们还建议您对照将分隔文本格式用于加载所获得的好处来权衡 mysqldump
性能。使用分隔的文本格式的备份将为所转储的每个表创建制表符分隔的文本文件。为减少导入数据库所需的时间,您可以使用 LOAD DATA LOCAL INFILE
命令并行加载这些文件。有关更多信息,请参阅加载数据(适用于 MariaDB)或加载数据(适用于 MySQL)。
在开始备份操作之前,确保对将复制到 Amazon RDS 的 MariaDB 或 MySQL 数据库设置复制选项。复制选项包括开启二进制日志记录和设置唯一的服务器 ID。设置这些选项将促使您的服务器开始记录数据库事务,并做好在该过程的后面充当源复制实例的准备。
确保您了解以下建议和注意事项:
-
将
--single-transaction
选项与mysqldump
结合使用,因为它会转储数据库的一致状态。为确保转储文件有效,请勿在mysqldump
运行时运行数据定义语言 (DDL) 语句。您可以为这些操作计划维护时段。 -
从转储文件中排除以下架构:
-
sys
-
performance_schema
-
information_schema
默认情况下,
mysqldump
和mariadb-dump
实用程序排除这些架构。 -
-
如果您需要迁移用户和权限,请考虑使用生成数据控制语言 (DCL) 的工具 (如 pt-show-grants
实用程序) 来重新创建用户和权限。
设置复制选项
-
编辑
my.cnf
文件。此文件通常位于/etc
下。sudo vi /etc/my.cnf
将
log_bin
和server_id
选项添加到[mysqld]
节。log_bin
选项为二进制日志文件提供文件名标识符。server_id
选项为源-副本关系中的服务器提供唯一标识符。以下示例显示
my.cnf
文件已更新的[mysqld]
部分:[mysqld] log-bin=mysql-bin server-id=1
有关更多信息,请参阅 MySQL 文档中的 Setting the Replication Source Configuration
。 -
要使用多可用区数据库集群进行复制,请将
ENFORCE_GTID_CONSISTENCY
和GTID_MODE
参数设置为ON
。mysql> SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
mysql> SET @@GLOBAL.GTID_MODE = ON;
使用数据库实例进行复制不需要这些设置。
-
重新启动
mysql
服务。sudo service mysqld restart
创建现有数据库的备份副本
-
使用
mysqldump
实用程序或mariadb-dump
实用程序创建数据的备份,并指定 SQL 或分隔文本格式。对于 MySQL 8.0.25 及更低版本,指定
--master-data=2
以创建可用于启动服务器间复制的备份文件。对于 MySQL 8.0.26 及更高版本,指定--source-data=2
以创建可用于启动服务器间复制的备份文件。有关更多信息,请参阅 MySQL 文档中的 mysqldump — A Database Backup Program。 要提高性能和确保数据完整性,请对于
mysqldump
使用--order-by-primary
和--single-transaction
选项。要避免在备份中包括 MySQL 系统数据库,请不要将
--all-databases
选项与mysqldump
结合使用。有关更多信息,请参阅 MySQL 文档中的 Creating a Data Snapshot Using mysqldump。 如有必要,可使用
chmod
来确保要在其中创建备份文件的目录是可写的。重要
在 Windows 中,以管理员身份运行命令窗口。
-
要生成 SQL 输出,请使用以下命令:
对于 Linux、macOS 或 Unix:
sudo mysqldump \ --databases
database_name
\ --master-data=2 \ --single-transaction \ --order-by-primary \ -r backup.sql \ -ulocal_user
\ -ppassword
注意
作为安全最佳实践,请指定示例中显示的提示以外的凭证。
对于 Windows:
mysqldump ^ --databases
database_name
^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -r backup.sql ^ -ulocal_user
^ -ppassword
注意
作为安全最佳实践,请指定示例中显示的提示以外的凭证。
-
要生成分隔文本输出,请使用以下命令:
对于 Linux、macOS 或 Unix:
sudo mysqldump \ --tab=
target_directory
\ --fields-terminated-by ',' \ --fields-enclosed-by '"' \ --lines-terminated-by 0x0d0a \database_name
\ --master-data=2 \ --single-transaction \ --order-by-primary \ -ppassword
对于 Windows:
mysqldump ^ --tab=
target_directory
^ --fields-terminated-by "," ^ --fields-enclosed-by """ ^ --lines-terminated-by 0x0d0a ^database_name
^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -ppassword
注意
作为安全最佳实践,请指定示例中显示的提示以外的凭证。
确保在 Amazon RDS 数据库中手动创建任何存储过程、触发器、函数或事件。如果您所复制的数据库中有上述任一对象,则在运行
mysqldump
时排除这些对象。为此,请在mysqldump
命令中包含以下参数:-
--routines=0
-
--triggers=0
-
--events=0
对于 MySQL 8.0.22 及更低版本以及 MariaDB 版本,当您运行
mysqldump
并指定分隔文本格式时,将返回CHANGE MASTER TO
注释。此注释包含主日志文件名称和位置。对于 MySQL 8.0.23 及更高版本,如果您使用分隔文本格式运行mysqldump
,将返回CHANGE REPLICATION SOURCE TO
注释。此注释包含源日志文件名称和位置。如果外部实例不是 MariaDB 10.0.24 和更高版本,也不是 MySQL 8.0.23 和更高版本,请注意MASTER_LOG_FILE
和MASTER_LOG_POS
的值。设置复制时需要这些值。对于 MariaDB 版本和 MySQL 8.0.22 及更低版本,将返回以下输出:
-- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;
对于 MySQL 8.0.23 及更高版本,将返回以下输出:
-- Position to start replication or point-in-time recovery from -- -- CHANGE SOURCE TO SOURCE_LOG_FILE='mysql-bin-changelog.000031', SOURCE_LOG_POS=107;
对于 MySQL 8.0.22 及更低版本,如果您使用的是 SQL 格式,则可以在备份文件的
CHANGE MASTER TO
注释中获得主日志文件名称和位置。对于 MySQL 8.0.23 及更高版本,如果您使用的是 SQL 格式,则可以在备份文件的CHANGE REPLICATION SOURCE TO
注释中获得源日志文件名称和位置。如果外部实例是 MariaDB 10.0.24 或更高版本,则可在下一个步骤中获得 GTID。 -
-
-
如果您使用的外部实例是 MariaDB 10.0.24 或更高版本,请使用基于 GTID 的复制。在外部 MariaDB 实例上运行
SHOW MASTER STATUS
以获取二进制日志文件名称和位置,然后通过在外部 MariaDB 实例上运行BINLOG_GTID_POS
将它们转换为 GTID。SELECT BINLOG_GTID_POS('
binary_log_file_name
',binary_log_file_position
);请记下返回的 GTID。您需要此 GTID 来配置复制。
-
压缩复制后的数据可减少将数据复制到 Amazon RDS 数据库所需的网络资源量。记下备份文件的大小。您在确定要创建的 Amazon EC2 实例的大小时需要此信息。完成操作后,请使用 GZIP 或您的首选压缩实用程序来压缩备份文件。
-
要压缩 SQL 输出,请使用以下命令:
gzip backup.sql
-
要压缩分隔文本输出,请使用以下命令:
tar -zcvf backup.tar.gz
target_directory
-
任务 2:创建 Amazon EC2 实例和复制压缩的数据库
将压缩的数据库备份文件复制到 Amazon EC2 实例所占用的网络资源少于直接在数据库实例之间复制未压缩的数据所占用的网络资源。当您的数据位于 Amazon EC2 中后,可以直接从中将数据复制到 MariaDB 或 MySQL 数据库。要节省网络资源成本,您的 Amazon EC2 实例必须与 Amazon RDS 数据库实例位于同一 AWS 区域内。使 Amazon EC2 实例位于 Amazon RDS 数据库所在的相同 AWS 区域内,还可以减少导入期间的网络延迟。
下图显示了将数据库备份复制到 Amazon EC2 实例。

创建 Amazon EC2 实例并复制数据
-
在您打算在其中创建 Amazon RDS 数据库的 AWS 区域中,创建虚拟私有云(VPC)、VPC 安全组和 VPC 子网。确保您的 VPC 安全组的入站规则允许应用程序连接到 AWS 所需的 IP 地址。您可以指定一系列 IP 地址(例如
203.0.113.0/24
)或另一个 VPC 安全组。可以使用 Amazon VPC 控制台来创建和管理 VPC、子网和安全组。有关更多信息,请参阅《Amazon Virtual Private Cloud 用户指南》中的 Amazon VPC 入门。 -
打开 Amazon EC2 控制台
,并选择将包含 Amazon EC2 实例和 Amazon RDS 数据库的 AWS 区域。使用您在步骤 1 中创建的 VPC、子网和安全组来启动 Amazon EC2 实例。在数据库备份文件未压缩的情况下,确保为该文件选择具有足够存储空间的实例类型。有关 Amazon EC2 实例的详细信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的开始使用 Amazon EC2。 -
要从 Amazon EC2 实例连接到 Amazon RDS 数据库,请编辑 VPC 安全组。添加指定 EC2 实例的私有 IP 地址的入站规则。您可以在 EC2 控制台窗口中的 Instance 窗格的 Details 选项卡上找到私有 IP 地址。要编辑 VPC 安全组并添加入站规则,请在 EC2 控制台导航窗格中选择 Security Groups(安全组),然后为 MySQL 或 Aurora 添加指定 EC2 实例的私有 IP 地址的入站规则。要了解如何向 VPC 安全组添加入站规则,请参阅《Amazon Virtual Private Cloud 用户指南》中的安全组规则。
-
将压缩后的数据库备份文件从本地系统复制到 Amazon EC2 实例中。如有必要,可使用
chmod
来确保您具有 Amazon EC2 实例目标目录的写入权限。您可以使用scp
或 Secure Shell (SSH) 客户端复制文件。以下命令是一个示例scp
命令:scp -r -i
key pair
.pem backup.sql.gz ec2-user@EC2 DNS
:/target_directory
/backup.sql.gz重要
复制敏感数据时,务必使用安全网络传输协议。
-
连接到 Amazon EC2 实例,并使用以下命令安装最新更新和 MySQL 客户端工具:
sudo yum update -y sudo yum install mysql -y
有关更多信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的连接到您的实例(适用于 Linux 实例)。
重要
此示例介绍了如何在适用于 Amazon Linux 发行版的 Amazon Machine Image (AMI) 上安装 MySQL 客户端。此示例不在其它发行版(例如 Ubuntu 或 Red Hat Enterprise Linux)上安装 MySQL 客户端。有关安装 MySQL 的信息,请参阅 MySQL 文档中的 Installing MySQL
。 -
在连接到 Amazon EC2 实例时,请解压缩数据库备份文件。下面是一些命令示例。
-
要解压缩 SQL 输出,请使用以下命令:
gzip backup.sql.gz -d
-
要解压缩分隔的文本输出,请使用以下命令:
tar xzvf backup.tar.gz
-
任务 3:创建 MySQL 或 MariaDB 数据库,并从 Amazon EC2 实例导入数据
通过在 Amazon EC2 实例所在的相同 AWS 区域中创建 RDS for MariaDB 数据库实例、RDS for MySQL 数据库实例或 RDS for MySQL 多可用区数据库集群,与通过互联网相比,可以更快地从 Amazon EC2 导入数据库备份文件。
下图显示了将备份从 Amazon EC2 实例导入到 MySQL 数据库。

创建 MariaDB 或 MySQL 数据库并导入数据
-
确定支持此 Amazon RDS 数据库的预期工作负载所需的数据库实例类和存储空间量。作为过程的一部分,确定数据加载过程所需的足够空间量和处理能力。此外,确定处理生产工作负载所需的项目。可以根据源 MariaDB 或 MySQL 数据库的大小和资源来进行估计。有关更多信息,请参阅 数据库实例类。
-
在包含您的 Amazon EC2 实例的 AWS 区域中创建数据库实例或多可用区数据库集群。
要创建 RDS for MySQL 多可用区数据库集群,请按创建 Amazon RDS 的多可用区数据库集群中的说明操作。
要创建 RDS for MariaDB 或 RDS for MySQL 数据库实例,请按照创建 Amazon RDS 数据库实例中的说明操作并使用以下准则:
-
指定与源数据库实例兼容的数据库引擎版本。
-
如果源实例是 MySQL 5.5.x,则 Amazon RDS 数据库实例必须是 MySQL。
-
如果源实例是 MySQL 5.6.x 或 5.7.x,则 Amazon RDS 数据库实例必须是 MySQL 或 MariaDB。
-
如果源实例是 MySQL 8.0.x,则 Amazon RDS 数据库实例必须是 MySQL 8.0.x。
-
如果源实例是 MySQL 8.4.x,则 Amazon RDS 数据库实例必须是 MySQL 8.4.x。
-
如果源实例是 MariaDB 5.5 或更高版本,则 Amazon RDS 数据库实例必须是 MariaDB。
-
-
指定用于 Amazon EC2 实例的相同虚拟私有云(VPC)和 VPC 安全组。此方式将确保 Amazon EC2 实例和 Amazon RDS 实例通过网络相互可见。确保您的数据库实例可公开访问。要按下一节所述设置源数据库的复制,您的数据库实例必须可公开访问。
-
在导入数据库备份之前,不要配置多个可用区、备份保留或只读副本。在完成该导入操作后,您可以为生产实例配置多可用区和备份保留期。
-
-
检查 Amazon RDS 数据库的默认配置选项。如果数据库的默认参数组没有所需的配置选项,请查找具有这些选项的参数组,或创建新的参数组。有关创建参数组的详细信息,请参阅 Amazon RDS 的参数组。
-
以主用户身份连接到新 Amazon RDS 数据库。创建为需要访问数据库实例的管理员、应用程序和服务提供支持所需的用户。Amazon RDS 数据库的主机名为此数据库实例的端点值(不包含端口号),例如
mysampledb.123456789012.us-west-2.rds.amazonaws.com
。您可以在 Amazon RDS 控制台上的数据库详细信息中找到端点值。 -
连接到 Amazon EC2 实例。有关更多信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的连接到您的实例(适用于 Linux 实例)。
-
使用
mysql
命令以远程主机身份从 Amazon EC2 实例连接到 Amazon RDS 数据库。以下命令是一个示例:mysql -h
host_name
-P 3306 -udb_master_user
-phost_name
是 Amazon RDS 数据库端点。 -
在
mysql
提示符下,运行source
命令并向它传递您的数据库转储文件名。此命令将数据加载到 Amazon RDS 数据库实例。-
对于 SQL 格式,请使用以下命令:
mysql> source backup.sql;
-
对于分隔文本格式,请先创建数据库(如果它不是您在设置 Amazon RDS 数据库时创建的默认数据库)。
mysql> create database
database_name
; mysql> usedatabase_name
;然后,创建表。
mysql> source
table1
.sql mysql> sourcetable2
.sql etc...然后,导入数据。
mysql> LOAD DATA LOCAL INFILE 'table1.txt' INTO TABLE table1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; mysql> LOAD DATA LOCAL INFILE 'table2.txt' INTO TABLE table2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; etc...
要提高性能,您可以从多个连接并行执行这些操作,以便同时创建并加载所有表。
注意
如果您在最初转储表时已将任何数据格式化选项与
mysqldump
结合使用,则务必将相同的选项与LOAD DATA LOCAL INFILE
结合使用,来确保正确地解读数据文件内容。
-
-
对导入的数据库中的一个或两个表运行简单
SELECT
查询,来验证导入是否成功。
如果您不再需要该过程中使用的 Amazon EC2 实例,请终止 EC2 实例以减少AWS资源使用。要终止 EC2 实例,请参阅《Amazon Elastic Compute Cloud 用户指南》中的终止实例。
任务 4:将数据从外部数据库复制到新的 Amazon RDS 数据库
在将数据复制并传输到 MariaDB 或 MySQL 数据库期间,您的源数据库可能已更新。这样,您可以使用复制功能使复制的数据库与源数据库保持同步。

对 Amazon RDS 数据库启动复制功能所需的权限受到限制且对 Amazon RDS 主用户不可用。因此,请使用适用于您的主要引擎版本的 Amazon RDS 存储过程:
启动复制
在任务 1 中,当您设置复制选项时,您开启了二进制日志记录,并为源数据库设置了唯一服务器 ID。现在您可以将 Amazon RDS 数据库设置为副本,并将活动数据库作为源数据库实例。
-
在 Amazon RDS 控制台中,将托管源数据库的服务器的 IP 地址添加到 Amazon RDS 数据库的 VPC 安全组。有关配置 VPC 安全组的更多信息,请参阅《Amazon Virtual Private Cloud 用户指南》中的配置安全组规则。
您可能还需要配置本地网络,以允许来自 Amazon RDS 数据库的 IP 地址的连接,以便它能与源实例进行通信。要查找 Amazon RDS 数据库的 IP 地址,请使用
host
命令:host
host_name
host_name
是 Amazon RDS 数据库端点中的 DNS 名称,例如myinstance.123456789012.us-east-1.rds.amazonaws.com
。您可以在 Amazon RDS 控制台上的数据库实例详细信息中找到端点值。 -
通过使用所选的客户端,连接到源实例并创建将用于复制的用户。此账户仅用于复制,并且必须仅供您的域使用以增强安全性。以下命令是一个示例:
CREATE USER 'repl_user'@'
mydomain.com
' IDENTIFIED BY 'password
';注意
作为安全最佳实践,请指定除此处所示提示以外的凭证。
-
对于源 实例,向复制用户授予
REPLICATION CLIENT
和REPLICATION SLAVE
权限。例如,要为您的域的“repl_user
”用户授予对所有数据库的REPLICATION CLIENT
和REPLICATION SLAVE
权限,请发出以下命令。GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '
repl_user
'@'mydomain.com
'; -
如果您使用 SQL 格式创建备份文件,并且外部实例不是 MariaDB 10.0.24 或更高版本,请通过运行以下命令查看该文件的内容:
cat backup.sql
该文件包括
CHANGE MASTER TO
注释,其中包含主日志文件名称和位置。在将--master-data
选项与mysqldump
结合使用时,此注释将包含在备份文件中。请注意MASTER_LOG_FILE
和MASTER_LOG_POS
的值。-- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;
如果您使用分隔文本格式创建备份文件,并且外部实例不是 MariaDB 10.0.24 或更高版本,您应该已在任务 1 下“创建现有数据库的备份副本”过程的步骤 1 中获得二进制日志坐标。
如果外部实例是 MariaDB 10.0.24 或更高版本,您应该已在任务 1 下“创建现有数据库的备份副本”过程的步骤 2 中获得作为复制起点的 GTID。
-
将 Amazon RDS 数据库设置为副本。如果外部实例不是 MariaDB 10.0.24 或更高版本,请使用适当的 Amazon RDS 存储过程,以主用户身份连接到 Amazon RDS 数据库,并将源数据库标识为源复制实例。
如果您具有 SQL 格式的备份文件,则使用您在步骤 4 中确定的主日志文件名和主日志位置。如果您使用的是分隔文本格式,则使用您在创建备份文件时确定的名称和位置。下面是一些命令示例:
MySQL 8.4 及更高版本
CALL mysql.rds_set_external_source ('myserver.mydomain.com', 3306, 'repl_user', '
password
', 'mysql-bin-changelog.000031', 107, 1);MariaDB 以及 MySQL 8.0 和更低版本
CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306, 'repl_user', '
password
', 'mysql-bin-changelog.000031', 107, 1);注意
作为安全最佳实践,请指定除此处所示提示以外的凭证。
如果外部实例是 MariaDB 10.0.24 或更高版本,请使用 mysql.rds_set_external_master_gtid 命令以主用户身份连接到 Amazon RDS 数据库,并将源数据库标识为源复制实例。使用您在任务 1 下“创建现有数据库的备份副本”过程的步骤 2 中确定的 GTID。以下命令是一个示例:
CALL mysql.rds_set_external_master_gtid ('
source_server_ip_address
', 3306, 'ReplicationUser', 'password
', 'GTID
', 1);
是源复制实例的 IP 地址。当前不支持 EC2 私有 DNS 地址。source_server_ip_address
注意
作为安全最佳实践,请指定除此处所示提示以外的凭证。
-
在 Amazon RDS 数据库上,要开始复制,请运行以下 mysql.rds_start_replication 命令:
CALL mysql.rds_start_replication;
-
在 Amazon RDS 数据库上,要确定副本何时与源复制实例实现同步,请运行 SHOW REPLICA STATUS
命令。 SHOW REPLICA STATUS
命令的结果包括Seconds_Behind_Master
字段。当Seconds_Behind_Master
字段返回 0 时,副本将与源复制实例保持同步。注意
以前的 MySQL 版本使用的是
SHOW SLAVE STATUS
,而不是SHOW REPLICA STATUS
。如果您使用的 MySQL 版本低于 8.0.23,那么请使用SHOW SLAVE STATUS
。对于 MariaDB 10.5、10.6 或 10.11 数据库实例,请运行 mysql.rds_replica_status 存储过程而不是 MySQL 命令。
-
在 Amazon RDS 数据库同步后,开启自动备份以便您可以在需要时还原该数据库。您可以使用 Amazon RDS 控制台
开启或修改 Amazon RDS 数据库的自动备份。有关更多信息,请参阅 备份简介。
任务 5:将您的活动应用程序重定向到 Amazon RDS 实例
在 MariaDB 或 MySQL 数据库与源复制实例保持同步后,您现在可以更新活动的应用程序以使用 Amazon RDS 实例。

将活动应用程序重新导向到 MariaDB 或 MySQL 数据库并停止复制
-
要添加 Amazon RDS 数据库的 VPC 安全组,请添加托管应用程序的服务器的 IP 地址。有关修改 VPC 安全组的更多信息,请参阅《Amazon Virtual Private Cloud 用户指南》中的配置安全组规则。
-
验证 SHOW REPLICA STATUS
命令结果中的 Seconds_Behind_Master
字段是否为 0,这表示副本与源复制实例保持同步。SHOW REPLICA STATUS;
注意
以前的 MySQL 版本使用的是
SHOW SLAVE STATUS
,而不是SHOW REPLICA STATUS
。如果您使用的 MySQL 版本低于 8.0.23,那么请使用SHOW SLAVE STATUS
。对于 MariaDB 10.5、10.6 或 10.11 数据库实例,请运行 mysql.rds_replica_status 过程而不是 MySQL 命令。
-
在事务完成后关闭与源的所有连接。
-
更新应用程序以使用 Amazon RDS 数据库。此更新通常涉及更改连接设置以标识 Amazon RDS 数据库的主机名和端口、用于进行连接的用户账户和密码以及要使用的数据库。
-
连接到数据库实例。
对于多可用区数据库集群,连接至写入器数据库实例。
-
使用以下 mysql.rds_stop_replication 命令停止 Amazon RDS 实例的复制:
CALL mysql.rds_stop_replication;
-
在 Amazon RDS 数据库上运行相应的 Amazon RDS 存储过程以重置复制配置,以便不再将该实例标识为副本。
MySQL 8.4 及更高版本
CALL mysql.rds_reset_external_source;
MariaDB 以及 MySQL 8.0 和更低版本
CALL mysql.rds_reset_external_master;
-
开启其他 Amazon RDS 特征,例如多可用区支持和只读副本。有关更多信息,请参阅配置和管理 Amazon RDS 的多可用区部署和使用数据库实例只读副本。