Amazon Relational Database Service
用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

mysql.rds_set_external_master_with_auto_position

将 Amazon RDS MySQL 数据库实例配置为在 Amazon RDS 之外运行的 MySQL 实例的只读副本。该过程还会配置延迟复制和基于全局事务标识符 (GTID) 的复制。

语法

CALL mysql.rds_set_external_master_with_auto_position ( host_name , host_port , replication_user_name , replication_user_password , ssl_encryption , delay );

参数

host_name

在 Amazon RDS 之外运行以变为复制主实例的 MySQL 实例的主机名或 IP 地址。

host_port

在 Amazon RDS 之外运行的要配置为复制主实例的 MySQL 实例使用的端口。如果网络配置包括转换端口号的安全 Shell (SSH) 端口复制,请指定由 SSH 公开的端口号。

replication_user_name

对 Amazon RDS 外部运行的 MySQL 实例具有 REPLICATION CLIENT 和 REPLICATION SLAVE 权限的用户的 ID。建议您向专用于复制的账户提供外部实例。

replication_user_password

replication_user_name 中指定的用户 ID 的密码。

ssl_encryption

目前未实施该选项。默认值为 0。

delay

从主实例中延迟复制的最短秒数。

该参数的限制为一天(86400 秒)。

使用说明

主用户必须运行 mysql.rds_set_external_master_with_auto_position 过程。必须在要配置为在 Amazon RDS 外部运行的 MySQL 实例的只读副本的 MySQL 数据库实例上运行该过程。

对于 Amazon RDS MySQL 5.7,MySQL 5.7.23 和更高的 MySQL 5.7 版本支持该过程。Amazon RDS MySQL 5.5、5.6 或 8.0 不支持该过程。

运行 mysql.rds_set_external_master_with_auto_position 之前,您必须先将在 Amazon RDS 之外运行的 MySQL 实例配置为复制主实例。要连接到在 Amazon RDS 外部运行的 MySQL 实例,您必须指定 replication_user_namereplication_user_password 值。这些值必须指示具有外部 MySQL 实例的 REPLICATION CLIENTREPLICATION SLAVE 权限的复制用户。

将 MySQL 的外部实例配置为复制主实例

  1. 通过使用所选的 MySQL 客户端,连接到 MySQL 的外部实例并创建要用于复制的用户账户。以下是示例。

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. 对于 MySQL 的外部实例,向复制用户授予 REPLICATION CLIENTREPLICATION SLAVE 权限。以下示例为您的域的 'repl_user' 用户授予所有数据库的 REPLICATION CLIENTREPLICATION SLAVE 权限。

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

有关更多信息,请参阅 利用 Amazon RDS 外部运行的 MySQL 或 MariaDB 实例进行复制

注意

我们建议您尽可能使用只读副本管理两个 Amazon RDS 数据库实例之间的复制。在执行该操作时,我们建议您仅使用该存储过程以及其他与复制相关的存储过程。这些做法可以在 Amazon RDS 数据库实例之间实现更复杂的复制拓扑。我们提供这些存储过程主要是为了与在 Amazon RDS 外部运行的 MySQL 实例之间启用复制。有关管理 Amazon RDS 数据库实例之间的复制的信息,请参阅使用 MariaDB、MySQL 和 PostgreSQL 数据库实例的只读副本

在调用 mysql.rds_set_external_master_with_auto_position 将 Amazon RDS 数据库实例配置为只读副本后,可对该只读副本调用 mysql.rds_start_replication 开始复制过程。您可以调用 mysql.rds_reset_external_master 删除只读副本配置。

在调用 mysql.rds_set_external_master_with_auto_position 时,Amazon RDS 在 mysql.rds_historymysql.rds_replication_status 表中记录时间、用户和 "set master" 操作。

对于灾难恢复,您可以将该过程与 mysql.rds_start_replication_untilmysql.rds_start_replication_until_gtid 存储过程一起使用。要将延迟只读副本的更改向前滚动到发生灾难之前的时间,您可以运行 mysql.rds_set_external_master_with_auto_position 过程。在 mysql.rds_start_replication_until_gtid 过程停止复制后,您可以通过使用将只读副本提升为独立的数据库实例中的说明将只读副本提升为新的主数据库实例。

要使用 mysql.rds_rds_start_replication_until_gtid 过程,必须启用基于 GTID 的复制。要跳过已知会导致灾难的特定基于 GTID 的事务,您可以使用 mysql.rds_skip_transaction_with_gtid 存储过程。有关使用基于 GTID 的复制的更多信息,请参阅在 Amazon RDS MySQL 中使用基于 GTID 的复制

示例

在 MySQL 数据库实例上运行时,下例将该数据库实例配置为在 Amazon RDS 之外运行的某个 MySQL 实例的只读副本。它在 MySQL 数据库实例上将最短复制延迟时间设置为一小时(3600 秒)。在 Amazon RDS 外部运行的 MySQL 主实例的更改在至少一个小时内不会在 MySQL 数据库实例只读副本上应用。

call mysql.rds_set_external_master_with_auto_position( 'Externaldb.some.com', 3306, 'repl_user'@'mydomain.com', 'SomePassW0rd', 0, 3600);

本页内容: