将数据导入到停机时间更少的 Amazon RDS MariaDB 或 MySQL 实例 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将数据导入到停机时间更少的 Amazon RDS MariaDB 或 MySQL 实例

有时,您可能需要将数据从支持活动应用程序的外部 MariaDB 或 MySQL 数据库导入到 MariaDB 数据库实例、MySQL 数据库实例或 MySQL 多可用区数据库集群。使用以下过程可最大程度地减小对应用程序可用性产生的影响。如果使用非常大的数据库,该步骤也很有用。使用该过程,您可以通过减少跨网络传送到 Amazon 的数据量以降低导入成本。

在该过程中,您将数据库数据的副本传输到 Amazon EC2 实例,并将数据导入到新的 Amazon RDS 数据库中。然后,使用复制功能使 Amazon RDS 数据库与活动的外部实例保持同步,再将应用程序重新导向到 Amazon RDS 数据库。如果外部实例是 MariaDB 10.0.24 或更高版本,并且目标实例是 RDS for MariaDB,则基于全局事务标识符(GTID)配置 MariaDB 复制。否则,将基于二进制日志坐标配置复制。如果您的外部数据库支持基于 GTID 的复制,我们建议使用它,因为基于 GTID 复制是一种更可靠的方法。有关更多信息,请参阅 MariaDB 文档中的全局事务处理 ID

注意

如果想要将数据导入到 MySQL 数据库实例中且您的方案支持,则建议使用备份文件和 Amazon S3 将数据移入和移出 Amazon RDS。有关更多信息,请参阅将备份还原到 MySQL 数据库实例


                    将外部 MySQL 数据库导入到 RDS 上的 MySQL 数据库
注意

由于潜在的复制问题,建议您不要将该过程用于 5.5 版本之前的 MySQL 版本中的源 MySQL 数据库。有关更多信息,请参阅 MySQL 文档中的 MySQL 版本之间的复制兼容性

创建现有数据库的副本

要将大量数据迁移到停机时间最少的 RDS for MariaDB 或 RDS for MySQL 数据库,第一步是创建源数据的副本。


                        创建 MySQL 数据库的备份

您可以使用 mysqldump 实用程序创建 SQL 或分隔的文本格式的数据库备份。我们建议您在非生产环境中对每种格式运行测试,以便了解哪种方法能最大程度地减少 mysqldump 运行的时间。

我们还建议您针对将分隔文本格式用于加载所获得的好处来权衡 mysqldump 性能。使用分隔的文本格式的备份将为所转储的每个表创建制表符分隔的文本文件。为减少导入数据库所需的时间,您可以使用 LOAD DATA LOCAL INFILE 命令并行加载这些文件。有关选择 mysqldump 格式然后加载数据的更多信息,请参阅 MySQL 文档中的使用 mysqldump 进行备份

在开始备份操作之前,确保对将复制到 Amazon RDS 的 MariaDB 或 MySQL 数据库设置复制选项。复制选项包括开启二进制日志记录和设置唯一的服务器 ID。设置这些选项将促使您的服务器开始记录数据库事务,并做好在该过程的后面充当源复制实例的准备。

注意

--single-transaction 选项与 mysqldump 结合使用,因为它会转储数据库的一致状态。为确保转储文件有效,请勿在 mysqldump 运行时运行数据定义语言 (DDL) 语句。您可以为这些操作计划维护时段。

从转储文件中排除以下架构:sysperformance_schemainformation_schema。默认情况下,mysqldump 实用程序包括这些架构。

要迁移用户和权限,请考虑使用生成数据控制语言 (DCL) 的工具(如 pt-show-grants 实用程序)来重新创建用户和权限。

设置复制选项

  1. 编辑 my.cnf 文件(此文件通常位于 /etc 下)。

    sudo vi /etc/my.cnf

    log_binserver_id 选项添加到 [mysqld] 节。log_bin 选项为二进制日志文件提供文件名标识符。server_id 选项为源-副本关系中的服务器提供唯一标识符。

    以下示例显示 my.cnf 文件已更新的 [mysqld] 部分:

    [mysqld] log-bin=mysql-bin server-id=1

    有关更多信息,请参阅 MySQL 文档

  2. 要使用多可用区数据库集群进行复制,请将 ENFORCE_GTID_CONSISTENCYGTID_MODE 参数设置为 ON

    mysql> SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
    mysql> SET @@GLOBAL.GTID_MODE = ON;

    使用数据库实例进行复制不需要这些设置。

  3. 重新启动 mysql 服务。

    sudo service mysqld restart

创建现有数据库的备份副本

  1. 使用 mysqldump 实用程序创建数据备份,并指定 SQL 或分隔的文本格式。

    指定 --master-data=2 以创建可用于启动服务器间复制的备份文件。有关更多信息,请参阅 mysqldump 文档。

    要提高性能和确保数据完整性,请使用 --order-by-primary 的 mysqldump 和 --single-transaction 选项。

    要避免在备份中包括 MySQL 系统数据库,请不要将 --all-databases 选项与 mysqldump 结合使用。有关更多信息,请参阅 MySQL 文档中的使用 mysqldump 创建数据快照

    如有必要,可使用 chmod 确保要在其中创建备份文件的目录可写。

    重要

    在 Windows 中,以管理员身份运行命令窗口。

    • 要生成 SQL 输出,请使用以下命令。

      对于 Linux、macOS 或 Unix:

      sudo mysqldump \ --databases database_name \ --master-data=2 \ --single-transaction \ --order-by-primary \ -r backup.sql \ -u local_user \ -p password
      注意

      作为安全最佳实践,请指定除此处所示提示以外的凭证。

      对于 Windows:

      mysqldump ^ --databases database_name ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -r backup.sql ^ -u local_user ^ -p password
      注意

      作为安全最佳实践,请指定除此处所示提示以外的凭证。

    • 要生成分隔的文本输出,请使用以下命令。

      对于 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 \ -p password

      对于 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 ^ -p password
      注意

      作为安全最佳实践,请指定除此处所示提示以外的凭证。

      确保在 Amazon RDS 数据库中手动创建任何存储过程、触发器、函数或事件。如果您所复制的数据库中有上述任一对象,则在运行 mysqldump 时排除这些对象。为此,请在 mysqldump 命令中包含以下参数:--routines=0 --triggers=0 --events=0

      如果使用的是分隔的文本格式,则在您运行 mysqldump 时,将返回 CHANGE MASTER TO 注释。此注释包含主日志文件名称和位置。如果外部实例不是 MariaDB 版本 10.0.24 或更高版本,请注意 MASTER_LOG_FILEMASTER_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;

      如果您使用的是 SQL 格式,则可以在备份文件的 CHANGE MASTER TO 注释中获得主日志文件名称和位置。如果外部实例是 MariaDB 10.0.24 或更高版本,则可在下一个步骤中获得 GTID。

  2. 如果您使用的外部实例是 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,您需要它来配置复制。

  3. 压缩复制后的数据可减少将数据复制到 Amazon RDS 数据库所需的网络资源量。记下备份文件的大小。您在确定要创建的 Amazon EC2 实例的大小时需要此信息。完成操作后,请使用 GZIP 或您的首选压缩实用程序来压缩备份文件。

    • 要压缩 SQL 输出,请使用以下命令。

      gzip backup.sql
    • 要压缩分隔的文本输出,请使用以下命令。

      tar -zcvf backup.tar.gz target_directory

创建 Amazon EC2 实例和复制压缩的数据库

将压缩的数据库备份文件复制到 Amazon EC2 实例所占用的网络资源少于直接在数据库实例之间复制未压缩的数据所占用的网络资源。当您的数据位于 Amazon EC2 中后,可以直接从中将数据复制到 MariaDB 或 MySQL 数据库。要节省网络资源成本,您的 Amazon EC2 实例必须与 Amazon RDS 数据库实例位于同一Amazon区域内。使 Amazon EC2 实例位于 Amazon RDS 数据库所在的相同 Amazon 区域内,可以减少导入期间的网络延迟。


                        将数据库备份复制到 EC2 实例

创建 Amazon EC2 实例并复制数据

  1. 在您打算在其中创建 RDS 数据库的 Amazon Web Services 区域 中,创建虚拟私有云(VPC)、VPC 安全组和 VPC 子网。确保您的 VPC 安全组的入站规则允许应用程序连接到 Amazon 所需的 IP 地址。您可以指定一系列 IP 地址(例如 203.0.113.0/24)或另一个 VPC 安全组。您可以使用 Amazon VPC 管理控制台创建和管理 VPC、子网和安全组。有关更多信息,请参阅 Amazon Virtual Private Cloud 入门指南 中的 Amazon VPC 入门

  2. 打开 Amazon EC2 管理控制台,选择将包含您的 Amazon EC2 实例和 Amazon RDS 数据库的 Amazon 区域。使用您在步骤 1 中创建的 VPC、子网和安全组来启动 Amazon EC2 实例。在数据库备份文件未压缩的情况下,确保为该文件选择具有足够存储空间的实例类型。有关 Amazon EC2 实例的详细信息,请参阅适用于 Linux 的 Amazon Elastic Compute Cloud 用户指南 中的 Amazon EC2 Linux 实例入门

  3. 要从 Amazon EC2 实例连接到 Amazon RDS 数据库,请编辑 VPC 安全组。添加指定 EC2 实例的私有 IP 地址的入站规则。您可以在 EC2 控制台窗口中的 Instance 窗格的 Details 选项卡上找到私有 IP 地址。要编辑 VPC 安全组并添加入站规则,请在 EC2 控制台导航窗格中选择 Security Groups(安全组),然后为 MySQL 或 Aurora 添加指定 EC2 实例的私有 IP 地址的入站规则。要了解如何向 VPC 安全组添加入站规则,请参阅 Amazon VPC 用户指南中的添加并删除规则

  4. 将压缩后的数据库备份文件从本地系统复制到 Amazon EC2 实例中。如有必要,可使用 chmod 确保您具有 Amazon EC2 实例目标目录的写入权限。您可以使用 scp 或 Secure Shell (SSH) 客户端复制文件。以下是示例。

    $ scp -r -i key pair.pem backup.sql.gz ec2-user@EC2 DNS:/target_directory/backup.sql.gz
    重要

    务必使用安全网络传输协议来复制敏感数据。

  5. 连接到 Amazon EC2 实例,并使用以下命令安装最新更新和 MySQL 客户端工具。

    sudo yum update -y sudo yum install mysql -y

    有关更多信息,请参阅适用于 Linux 的 Amazon Elastic Compute Cloud 用户指南 中的连接到您的实例

    重要

    此示例介绍了如何在适用于 Amazon Linux 发行版的 Amazon Machine Image (AMI) 上安装 MySQL 客户端。要在其他发行版(例如 Ubuntu 或 Red Hat Enterprise Linux)上安装 MySQL 客户端,则此示例将不适用。有关安装 MySQL 的信息,请参阅 MySQL 文档中的安装和升级 MySQL

  6. 在连接到 Amazon EC2 实例时,请解压缩数据库备份文件。示例如下。

    • 要解压缩 SQL 输出,请使用以下命令。

      gzip backup.sql.gz -d
    • 要解压缩分隔的文本输出,请使用以下命令。

      tar xzvf backup.tar.gz

创建 MySQL 或 MariaDB 数据库,并从 Amazon EC2 实例导入数据

通过在 Amazon EC2 实例所在的相同 Amazon 区域中创建 MariaDB 数据库实例、MySQL 据库实例或 MySQL 多可用区数据库集群,与通过互联网相比,可以更快地从 EC2 导入数据库备份文件。


                        将备份从 EC2 实例导入到 MySQL 数据库

创建 MariaDB 或 MySQL 数据库并导入数据

  1. 确定支持此 Amazon RDS 数据库的预期工作负载所需的数据库实例类和存储空间量。作为过程的一部分,确定数据加载过程所需的足够空间量和处理能力。还要确定处理生产工作负载所需的项。可以根据源 MariaDB 或 MySQL 数据库的大小和资源来进行估计。有关更多信息,请参阅 数据库实例类

  2. 在包含您的 Amazon EC2 实例的 Amazon 区域中创建数据库实例或多可用区数据库集群。

    要创建 MySQL 多可用区数据库集群,请按 创建多可用区数据库集群 中的说明操作。

    要创建 MariaDB 或 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。

      • 如果源实例是 MariaDB 5.5 或更高版本,则 Amazon RDS 数据库实例必须是 MariaDB。

    • 指定用于 Amazon EC2 实例的相同虚拟私有云(VPC)和 VPC 安全组。此方式将确保 Amazon EC2 实例和 Amazon RDS 实例通过网络相互可见。确保您的数据库实例可公开访问。要如前所述设置源数据库的复制,您的数据库实例必须可公开访问。

    • 在导入数据库备份之前,不要配置多个可用区、备份保留或只读副本。在完成该导入操作后,您可以为生产实例配置多可用区和备份保留期。

  3. 检查 Amazon RDS 数据库的默认配置选项。如果数据库的默认参数组没有所需的配置选项,请查找具有这些选项的参数组,或创建新的参数组。有关创建参数组的更多信息,请参阅使用参数组

  4. 以主用户身份连接到新 Amazon RDS 数据库。创建支持需要访问实例的管理员、应用程序和服务所需的用户。Amazon RDS 数据库的主机名为此实例的 Endpoint(端点)值(不包含端口号)。例如,mysampledb.123456789012.us-west-2.rds.amazonaws.com。您可以在 Amazon RDS 管理控制台上的数据库详细信息中找到端点值。

  5. 连接到您的 Amazon EC2 实例。有关更多信息,请参阅适用于 Linux 的 Amazon Elastic Compute Cloud 用户指南 中的连接到您的实例

  6. 使用 mysql 命令以远程主机身份从 Amazon EC2 实例连接到 Amazon RDS 数据库。以下是示例。

    mysql -h host_name -P 3306 -u db_master_user -p

    主机名是 Amazon RDS 数据库端点。

  7. mysql 提示符处,运行 source 命令并将其传递给您的数据库转储文件名,以便将数据加载到 Amazon RDS 数据库实例中:

    • 对于 SQL 格式,请使用以下命令。

      mysql> source backup.sql;
    • 对于分隔的文本格式,请先创建数据库(如果它不是您在设置 Amazon RDS 数据库时创建的默认数据库)。

      mysql> create database database_name; $ mysql> use database_name;

      然后,创建表。

      mysql> source table1.sql $ mysql> source table2.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 结合使用,则必须将相同的选项与 mysqlimport 或 LOAD DATA LOCAL INFILE 结合使用以确保对数据文件内容的正确解读。

  8. 对导入的数据库中的一个或两个表运行简单 SELECT 查询以验证导入是否成功。

如果您不再需要该过程中使用的 Amazon EC2 实例,请终止 EC2 实例以减少Amazon资源使用。要终止 EC2 实例,请参阅 Amazon EC2 用户指南中的终止实例

在外部数据库和新的 Amazon RDS 数据库之间进行复制

在将数据复制并传输到 MariaDB 或 MySQL 数据库期间,您的源数据库可能已更新。这样,您可以使用复制功能使复制的数据库与源数据库保持同步。


                        将数据从外部 MySQL 数据库复制到 RDS 上的数据库

对 Amazon RDS 数据库启动复制功能所需的权限受到限制且对 Amazon RDS 主用户不可用。为此,确保使用 Amazon RDS mysql.rds_set_external_master 命令或 mysql.rds_set_external_master_gtid 命令配置复制,并使用 mysql.rds_start_replication 命令启动活动数据库和 Amazon RDS 数据库之间的复制。

启动复制

之前,您已开启二进制日志记录并为源数据库设置唯一服务器 ID。现在您可以将 Amazon RDS 数据库设置为副本,并将活动数据库作为源数据库实例。

  1. 在 Amazon RDS 管理控制台中,将托管源数据库的服务器的 IP 地址添加到 Amazon RDS 数据库的 VPC 安全组。有关修改 VPC 安全组的更多信息,请参阅 Amazon Virtual Private Cloud 用户指南 中的您的 VPC 的安全组

    您可能还需要配置本地网络,以允许来自 Amazon RDS 数据库的 IP 地址的连接,以便它能与源实例进行通信。要查找 Amazon RDS 数据库的 IP 地址,请使用 host 命令。

    host rds_db_endpoint

    主机名是 Amazon RDS 数据库端点中的 DNS 名称,例如 myinstance.123456789012.us-east-1.rds.amazonaws.com。您可以在 Amazon RDS 管理控制台上的实例详细信息中找到终端节点值。

  2. 通过使用所选的客户端,连接到源实例并创建将用于复制的用户。此账户仅用于复制,并且必须仅供您的域使用以增强安全性。以下是示例。

    MySQL 5.5、5.6 和 5.7

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    MySQL 8.0

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED WITH mysql_native_password BY 'password';
    注意

    作为安全最佳实践,请指定除此处所示提示以外的凭证。

  3. 对于源 实例,向复制用户授予 REPLICATION CLIENTREPLICATION SLAVE 权限。例如,要为您的域的“REPLICATION CLIENT”用户授予对所有数据库的 REPLICATION SLAVErepl_user 权限,请发出以下命令。

    MySQL 5.5、5.6 和 5.7

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    MySQL 8.0

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
    注意

    作为安全最佳实践,请指定除此处所示提示以外的凭证。

  4. 如果您使用 SQL 格式创建备份文件,并且外部实例不是 MariaDB 10.0.24 或更高版本,请查看该文件的内容。

    cat backup.sql

    该文件包括 CHANGE MASTER TO 注释,其中包含主日志文件名称和位置。在将 --master-data 选项与 mysqldump 结合使用时,此注释将包含在备份文件中。请注意 MASTER_LOG_FILEMASTER_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 中获得二进制日志坐标。

    如果外部实例是 MariaDB 10.0.24 或更高版本,您应该已在本主题中“创建现有数据库的备份副本”过程的步骤 2 中获得作为复制的起始点的 GTID。

  5. 将 Amazon RDS 数据库设置为副本。如果外部实例不是 MariaDB 10.0.24 或更高版本,请使用 mysql.rds_set_external_master 命令以主用户身份连接到 Amazon RDS 数据库,并将源数据库标识为源复制实例。如果您具有 SQL 格式的备份文件,则使用您在上一步骤中确定的主日志文件名和主日志位置。或者,如果您使用的是分隔的文本格式,则使用您在创建备份文件时确定的名称和位置。以下是示例。

    CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0);
    注意

    作为安全最佳实践,请指定除此处所示提示以外的凭证。

    如果外部实例是 MariaDB 10.0.24 或更高版本,请使用 mysql.rds_set_external_master_gtid 命令以主用户身份连接到 Amazon RDS 数据库,并将源数据库标识为源复制实例。使用您在本主题中“创建现有数据库的备份副本”过程的步骤 2 中确定的 GTID。以下是示例。

    CALL mysql.rds_set_external_master_gtid ('source_server_ip_address', 3306, 'ReplicationUser', 'password', 'GTID', 0);

    source_server_ip_address 是源复制实例的 IP 地址。当前不支持 EC2 专用 DNS 地址。

    注意

    作为安全最佳实践,请指定除此处所示提示以外的凭证。

  6. 在 Amazon RDS 数据库上,发出 mysql.rds_start_replication 命令以启动复制。

    CALL mysql.rds_start_replication;
  7. 在 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 命令。

  8. 在 Amazon RDS 数据库同步后,开启自动备份以便您可以在需要时还原数据库。您可以使用 Amazon RDS 管理控制台开启或修改 Amazon RDS 数据库的自动备份。有关更多信息,请参阅使用备份

将您的活动应用程序重定向到 Amazon RDS 实例

在 MariaDB 或 MySQL 数据库与源复制实例保持同步后,您现在可以更新活动的应用程序以使用 Amazon RDS 实例。


                        停止复制并将活动应用程序定向到 RDS 上的数据库

将活动应用程序重新导向到 MariaDB 或 MySQL 数据库并停止复制

  1. 要添加 Amazon RDS 数据库的 VPC 安全组,请添加托管应用程序的服务器的 IP 地址。有关修改 VPC 安全组的更多信息,请参阅 Amazon Virtual Private Cloud 用户指南 中的您的 VPC 的安全组

  2. 验证 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 命令。

  3. 在事务完成后关闭与源的所有连接。

  4. 更新应用程序以使用 Amazon RDS 数据库。此更新通常涉及更改连接设置以标识 Amazon RDS 数据库的主机名和端口、用于进行连接的用户账户和密码以及要使用的数据库。

  5. 连接到数据库实例。

    对于多可用区数据库集群,连接至写入器数据库实例。

  6. 使用 mysql.rds_stop_replication 命令停止复制 Amazon RDS 实例。

    CALL mysql.rds_stop_replication;
  7. 对 Amazon RDS 数据库运行 mysql.rds_reset_external_master 命令以重置复制配置,因此该实例不再标识为副本。

    CALL mysql.rds_reset_external_master;
  8. 开启其他 Amazon RDS 特征,例如多可用区支持和只读副本。有关更多信息,请参阅 配置和管理多可用区部署使用数据库实例只读副本