mysql.rds_set_external_master_gtid
配置从在 Amazon RDS 外部运行的 MariaDB 实例到 MariaDB 数据库实例的基于 GTID 的复制。仅当外部 MariaDB 实例的版本为 10.0.24 或更高版本时,才支持此存储过程。在设置复制时,如果其中的一个或两个实例不支持 MariaDB 全局事务标识符 (GTID),请使用 mysql.rds_set_external_master。
使用 GTID 进行复制提供了二进制日志复制无法提供的崩溃安全功能,因此,我们建议在复制实例支持 GTID 的情况下使用它。
语法
CALL mysql.rds_set_external_master_gtid( host_name , host_port , replication_user_name , replication_user_password , gtid , ssl_encryption );
参数
- host_name
-
字符串。在 Amazon RDS 外部运行并将变为源实例的 MariaDB 实例的主机名或 IP 地址。
- host_port
-
整数。在 Amazon RDS 外部运行的要配置为源实例的 MariaDB 实例使用的端口。如果网络配置包括转换端口号的 SSH 端口复制,则指定由 SSH 公开的端口号。
- replication_user_name
-
字符串。在要配置为只读副本的 MariaDB 数据库实例中具有
REPLICATION SLAVE
权限的用户的 ID。 - replication_user_password
-
字符串。在
replication_user_name
中指定的用户 ID 的密码。 - gtid
-
字符串。应作为复制的起始点的源实例上的全局事务 ID。
如果源实例在您配置复制时已被锁定,则可以使用
@@gtid_current_pos
获取当前 GTID,以便让二进制日志在您获得 GTID 和复制开始之间的这一段时间内不会改变。否则,如果您使用
mysqldump
版本 10.0.13 或更高版本在开始复制前填充副本实例,则可以使用--master-data
或--dump-slave
选项获取输出中的 GTID 位置。如果您不使用mysqldump
10.0.13 版或更高版本,则可以运行SHOW MASTER STATUS
或使用这些相同的mysqldump
选项来获取二进制日志文件名称和位置,然后通过对外部 MariaDB 实例运行BINLOG_GTID_POS
来将这些名称和位置转换为 GTID:SELECT BINLOG_GTID_POS('<binary log file name>', <binary log file position>);
有关 GTID 的 MariaDB 实施的更多信息,请参阅 MariaDB 文档中的全局事务 ID
。 - ssl_encryption
-
指定是否在复制连接中使用安全套接字层(SSL)加密的值。1 表示使用 SSL 加密,0 表示不使用加密。默认值为 0。
注意
不支持
MASTER_SSL_VERIFY_SERVER_CERT
选项。此选项设置为 0,这意味着连接已加密,但未验证证书。
使用说明
mysql.rds_set_external_master_gtid
过程必须由主用户运行。它必须在 MariaDB 数据库实例(由您配置为在 Amazon RDS 外部运行的 MariaDB 实例的副本)上运行。在运行 mysql.rds_set_external_master_gtid
之前,必须将在 Amazon RDS 外部运行的 MariaDB 实例配置为源实例。有关更多信息,请参阅“将数据导入到 MariaDB 数据库实例”。
警告
请勿使用 mysql.rds_set_external_master_gtid
管理两个 Amazon RDS 数据库实例之间的复制。仅当使用在 RDS 外部运行的 MariaDB 实例进行复制时,才能使用它。有关管理 Amazon RDS 数据库实例之间的复制的信息,请参阅使用数据库实例只读副本。
在调用 mysql.rds_set_external_master_gtid
将 Amazon RDS 数据库实例配置为只读副本后,可对该副本调用 mysql.rds_start_replication 开始复制过程。您可以调用 mysql.rds_reset_external_master 删除只读副本配置。
调用 mysql.rds_set_external_master_gtid
时,Amazon RDS 将时间、用户和“设置主体”的操作记录在 mysql.rds_history
和 mysql.rds_replication_status
表中。
示例
在 MariaDB 数据库实例上运行时,以下示例将该数据库实例配置为在 Amazon RDS 外部运行的某个 MariaDB 实例的副本。
call mysql.rds_set_external_master_gtid ('Sourcedb.some.com',3306,'ReplicationUser','SomePassW0rd','0-123-456',0);