mysql.rds_set_external_master_with_auto_position - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

mysql.rds_set_external_master_with_auto_position

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

重要

要运行此过程,必须启用 autocommit。要启用它,请将 autocommit 参数设置为 1。有关修改参数的信息,请参阅 修改数据库参数组中的参数

语法

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 CLIENTREPLICATION SLAVE 权限的用户的 ID。建议您向专用于复制的账户提供外部实例。

replication_user_password

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

ssl_encryption

指定是否在复制连接中使用安全套接字层(SSL)加密的值。1 表示使用 SSL 加密,0 表示不使用加密。默认值为 0。

注意

不支持 MASTER_SSL_VERIFY_SERVER_CERT 选项。此选项设置为 0,这意味着连接已加密,但未验证证书。

delay

延迟从源数据库实例复制的最小秒数。

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

使用说明

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

对于 RDS for MySQL 5.7,MySQL 5.7.23 和更高的 MySQL 5.7.x 版本、以及 RDS for MySQL 8.0.26 和更高的 8.0.x 版本支持此过程。RDS for MySQL 5.6 不支持此过程。

运行 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 权限。以下示例为您的域的 REPLICATION CLIENT 用户授予所有数据库的 REPLICATION SLAVE'repl_user' 权限。

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

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

注意

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

在调用 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 在 set mastermysql.rds_history 表中记录时间、用户和 mysql.rds_replication_status 操作。

对于灾难恢复,您可以将该过程与 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 的复制的更多信息,请参阅将基于 GTID 的复制用于 RDS for MySQL

示例

在 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', 'SomePassW0rd', 0, 3600);