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

mysql.rds_set_external_master

将 MySQL 数据库实例配置为在 Amazon RDS 之外运行的 MySQL 实例的只读副本。

重要

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

注意

您可以使用 mysql.rds_set_external_master_with_delay 存储过程配置外部源数据库实例和延迟复制。

语法

CALL mysql.rds_set_external_master ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption );

参数

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 的密码。

mysql_binary_log_file_name

源数据库实例上包含复制信息的二进制日志的名称。

mysql_binary_log_file_location

mysql_binary_log_file_name 二进制日志中复制将开始读取复制信息的位置。

您可以通过在源数据库实例上运行 SHOW MASTER STATUS 来确定二进制日志文件名和位置。

ssl_encryption

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

注意

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

使用说明

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

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

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

    MySQL 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';
  2. 对于 MySQL 的外部实例,向复制用户授予 REPLICATION CLIENTREPLICATION SLAVE 权限。以下示例向您所在域的“repl_user”用户授予对所有数据库的 REPLICATION CLIENTREPLICATION SLAVE 权限。

    MySQL 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';

要使用加密复制,请将源数据库实例配置为使用 SSL 连接。此外,使用 mysql.rds_import_binlog_ssl_material 过程,将证书颁发机构证书、客户端证书和客户端密钥导入到数据库实例或数据库集群中。

注意

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

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

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

示例

在 MySQL 数据库实例上运行时,下例将该数据库实例配置为在 Amazon RDS 之外运行的某个 MySQL 实例的只读副本。

call mysql.rds_set_external_master( 'Externaldb.some.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.0777', 120, 0);