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 CLIENT
和REPLICATION 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_name
和 replication_user_password
值,这些值指示对 MySQL 的外部实例具有 REPLICATION CLIENT
和 REPLICATION SLAVE
权限的复制用户。
将 MySQL 的外部实例配置为源数据库实例
通过使用所选的 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
';-
对于 MySQL 的外部实例,向复制用户授予
REPLICATION CLIENT
和REPLICATION SLAVE
权限。以下示例向您所在域的“repl_user”用户授予对所有数据库的REPLICATION CLIENT
和REPLICATION 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_history
和 mysql.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);