管理多源复制
以下存储过程在 RDS for MySQL 多源副本上设置和管理复制通道。有关更多信息,请参阅 为 Amazon RDS for MySQL 配置多源复制。
这些存储过程仅适用于运行以下引擎版本的 RDS for MySQL 数据库实例:
8.0.35 及更高的次要版本
5.7.44 及更高的次要版本
注意
尽管本文档将源数据库实例称为 RDS for MySQL 数据库实例,但这些过程也适用于在 Amazon RDS 外部运行的 MySQL 实例。
主题
- mysql.rds_next_source_log_for_channel
- mysql.rds_reset_external_source_for_channel
- mysql.rds_set_external_source_for_channel
- mysql.rds_set_external_source_with_auto_position_for_channel
- mysql.rds_set_external_source_with_delay_for_channel
- mysql.rds_set_source_auto_position_for_channel
- mysql.rds_set_source_delay_for_channel
- mysql.rds_skip_repl_error_for_channel
- mysql.rds_start_replication_for_channel
- mysql.rds_start_replication_until_for_channel
- mysql.rds_start_replication_until_gtid_for_channel
- mysql.rds_stop_replication_for_channel
mysql.rds_next_source_log_for_channel
将源数据库实例日志位置更改为通道的源数据库实例上下一个二进制日志的开始位置。只有在多源副本上收到复制 I/O 错误 1236 时,才能使用该过程。
语法
CALL mysql.rds_next_source_log_for_channel(
curr_master_log
,channel_name
);
参数
-
curr_master_log
-
当前源日志文件的索引。例如,如果当前文件名为
mysql-bin-changelog.012345
,则索引为 12345。要确定当前源日志文件名,请运行SHOW REPLICA STATUS FOR CHANNEL '
命令并查看channel_name
'Source_Log_File
字段。注意
以前的 MySQL 版本使用的是
SHOW SLAVE STATUS
,而不是SHOW REPLICA STATUS
。如果您使用的 MySQL 版本低于 8.0.23,那么请使用SHOW SLAVE STATUS
。 -
channel_name
-
多源副本上复制通道的名称。每个复制通道接收来自在特定主机和端口上运行的单个源 RDS for MySQL 数据库实例的二进制日志事件。
使用说明
主用户必须运行 mysql.rds_next_source_log_for_channel
过程。例如,如果出现 IO_Thread 错误,则可以使用此过程跳过当前二进制日志文件中的所有事件,并从在 channel_name
中指定的通道的下一个二进制日志文件中恢复复制。
示例
假设在多源副本的通道上复制失败。对多源副本运行 SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G
会返回以下结果:
mysql> SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G *************************** 1. row *************************** Replica_IO_State: Waiting for source to send event Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Source_User: ReplicationUser Source_Port: 3306 Connect_Retry: 60 Source_Log_File: mysql-bin-changelog.012345 Read_Source_Log_Pos: 1219393 Relay_Log_File: replica-relay-bin.000003 Relay_Log_Pos: 30223388 Relay_Source_Log_File: mysql-bin-changelog.012345 Replica_IO_Running: No Replica_SQL_Running: Yes Replicate_Do_DB:. . . Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.' Last_SQL_Errno: 0 Last_SQL_Error: . . Channel_name: channel_1 . . -- Some fields are omitted in this example output
Last_IO_Errno
字段显示该实例收到 I/O 错误 1236。Source_Log_File
字段显示文件名为 mysql-bin-changelog.012345
,这意味着日志文件索引为 12345
。要纠正该错误,您可以使用以下参数调用 mysql.rds_next_source_log_for_channel
:
CALL mysql.rds_next_source_log_for_channel(12345,'channel_1');
注意
以前的 MySQL 版本使用的是 SHOW SLAVE STATUS
,而不是 SHOW REPLICA STATUS
。如果您使用的 MySQL 版本低于 8.0.23,那么请使用 SHOW SLAVE STATUS
。
mysql.rds_reset_external_source_for_channel
停止指定通道上的复制过程,并从多源副本中移除该通道和关联的配置。
重要
要运行此过程,必须启用 autocommit
。要启用它,请将 autocommit
参数设置为 1
。有关修改参数的信息,请参阅 在 Amazon RDS 中修改数据库参数组中的参数。
语法
CALL mysql.rds_reset_external_source_for_channel (
channel_name
);
参数
-
channel_name
-
多源副本上复制通道的名称。每个复制通道接收来自在特定主机和端口上运行的单个源 RDS for MySQL 数据库实例的二进制日志事件。
使用说明
主用户必须运行 mysql.rds_reset_external_source_for_channel
过程。此过程将删除属于要移除的通道的所有中继日志。
mysql.rds_set_external_source_for_channel
在 RDS for MySQL 数据库实例上配置复制通道,以从另一个 RDS for MySQL 数据库实例复制数据。
重要
要运行此过程,必须启用 autocommit
。要启用它,请将 autocommit
参数设置为 1
。有关修改参数的信息,请参阅 在 Amazon RDS 中修改数据库参数组中的参数。
注意
您可以改用 mysql.rds_set_external_source_with_delay_for_channel 存储过程为该通道配置延迟复制。
语法
CALL mysql.rds_set_external_source_for_channel (
host_name
,host_port
,replication_user_name
,replication_user_password
,mysql_binary_log_file_name
,mysql_binary_log_file_location
,ssl_encryption
,channel_name
);
参数
-
host_name
-
RDS for MySQL 源数据库实例的主机名或 IP 地址。
-
host_port
-
RDS for MySQL 源数据库实例使用的端口。如果网络配置包括转换端口号的安全 Shell (SSH) 端口复制,请指定由 SSH 公开的端口号。
-
replication_user_name
-
对 RDS for 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,这意味着连接已加密,但未验证证书。 -
channel_name
-
复制通道的名称。每个复制通道接收来自在特定主机和端口上运行的单个源 RDS for MySQL 数据库实例的二进制日志事件。
使用说明
主用户必须运行 mysql.rds_set_external_source_for_channel
过程。此过程必须在您要创建复制通道的目标 RDS for MySQL 数据库实例上运行。
在运行 mysql.rds_set_external_source_for_channel
之前,请为源数据库实例上的复制用户配置多源副本所需的权限。要将多源副本连接到源数据库实例,必须指定对源数据库实例拥有 REPLICATION CLIENT
和 REPLICATION SLAVE
权限的复制用户的 replication_user_name
和 replication_user_password
值。
在源数据库实例上配置复制用户
通过使用所选的 MySQL 客户端,连接到源数据库实例并创建要用于复制的用户账户。示例如下:
重要
作为安全最佳实践,请指定除以下示例中所示占位符值以外的密码。
MySQL 8.0
CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY '
password
';MySQL 5.7
CREATE USER 'repl_user'@'example.com' IDENTIFIED BY '
password
';在源数据库实例上,向复制用户授予
REPLICATION CLIENT
和REPLICATION SLAVE
权限。以下示例向您所在域的“repl_user”用户授予对所有数据库的REPLICATION CLIENT
和REPLICATION SLAVE
权限。GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
要使用加密复制,请将源数据库实例配置为使用 SSL 连接。
在调用 mysql.rds_set_external_source_for_channel
以配置此复制通道后,可以在副本上调用 mysql.rds_start_replication_for_channel 以启动通道上的复制过程。您可以调用 mysql.rds_reset_external_source_for_channel 以停止通道上的复制,并从副本中移除通道配置。
当您调用 mysql.rds_set_external_source_for_channel
时,Amazon RDS 将时间、用户和 set channel source
的操作记录在 mysql.rds_history
表(不包括通道特定的详细信息)和 mysql.rds_replication_status
表中,并包含通道名称。此信息仅用于内部使用和监控目的。要记录完整的过程调用以进行审核,请考虑根据应用程序的特定要求启用审核日志或常规日志。
示例
在 RDS for MySQL 数据库实例上运行时,以下示例将此数据库实例上名为 channel_1
的复制通道配置为从由主机 sourcedb.example.com
和端口 3306
指定的源复制数据。
call mysql.rds_set_external_source_for_channel( 'sourcedb.example.com', 3306, 'repl_user', '
password
', 'mysql-bin-changelog.0777', 120, 0, 'channel_1');
mysql.rds_set_external_source_with_auto_position_for_channel
在 RDS for MySQL 数据库实例上配置一个复制通道,复制延迟为可选项。复制基于全局事务标识符(GTID)。
重要
要运行此过程,必须启用 autocommit
。要启用它,请将 autocommit
参数设置为 1
。有关修改参数的信息,请参阅 在 Amazon RDS 中修改数据库参数组中的参数。
语法
CALL mysql.rds_set_external_source_with_auto_position_for_channel (
host_name
,host_port
,replication_user_name
,replication_user_password
,ssl_encryption
,delay
,channel_name
);
参数
-
host_name
-
RDS for MySQL 源数据库实例的主机名或 IP 地址。
-
host_port
-
RDS for MySQL 源数据库实例使用的端口。如果网络配置包括转换端口号的安全 Shell (SSH) 端口复制,请指定由 SSH 公开的端口号。
-
replication_user_name
-
对 RDS for MySQL 源数据库实例具有
REPLICATION CLIENT
和REPLICATION SLAVE
权限的用户的 ID。建议您向专用于复制的账户提供源数据库实例。 -
replication_user_password
-
在
replication_user_name
中指定的用户 ID 的密码。 -
ssl_encryption
-
指定是否在复制连接中使用安全套接字层(SSL)加密的值。1 表示使用 SSL 加密,0 表示不使用加密。默认值为 0。
注意
不支持
MASTER_SSL_VERIFY_SERVER_CERT
选项。此选项设置为 0,这意味着连接已加密,但未验证证书。 -
delay
-
延迟从源数据库实例复制的最小秒数。
该参数的限制为一天(86400 秒)。
-
channel_name
-
复制通道的名称。每个复制通道接收来自在特定主机和端口上运行的单个源 RDS for MySQL 数据库实例的二进制日志事件。
使用说明
主用户必须运行 mysql.rds_set_external_source_with_auto_position_for_channel
过程。此过程必须在您要创建复制通道的目标 RDS for MySQL 数据库实例上运行。
在运行 rds_set_external_source_with_auto_position_for_channel
之前,请为源数据库实例上的复制用户配置多源副本所需的权限。要将多源副本连接到源数据库实例,必须指定对源数据库实例拥有 REPLICATION CLIENT
和 REPLICATION SLAVE
权限的复制用户的 replication_user_name
和 replication_user_password
值。
在源数据库实例上配置复制用户
通过使用所选的 MySQL 客户端,连接到源数据库实例并创建要用于复制的用户账户。示例如下:
重要
作为安全最佳实践,请指定除以下示例中所示占位符值以外的密码。
MySQL 8.0
CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY '
password
';MySQL 5.7
CREATE USER 'repl_user'@'example.com' IDENTIFIED BY '
password
';在源数据库实例上,向复制用户授予
REPLICATION CLIENT
和REPLICATION SLAVE
权限。以下示例向您所在域的“repl_user”用户授予对所有数据库的REPLICATION CLIENT
和REPLICATION SLAVE
权限。GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
要使用加密复制,请将源数据库实例配置为使用 SSL 连接。
在调用 mysql.rds_set_external_source_with_auto_position_for_channel
之前,务必调用 mysql.rds_set_external_source_gtid_purged,以便使用来自外部源的指定 GTID 范围设置 gtid_purged
系统变量。
在调用 mysql.rds_set_external_source_with_auto_position_for_channel
以将 Amazon RDS 数据库实例配置为特定通道上的只读副本后,可以在只读副本上调用 mysql.rds_start_replication_for_channel 以启动该通道上的复制过程。
在调用 mysql.rds_set_external_source_with_auto_position_for_channel
以配置此复制通道后,可以在副本上调用 mysql.rds_start_replication_for_channel 以启动通道上的复制过程。您可以调用 mysql.rds_reset_external_source_for_channel 以停止通道上的复制,并从副本中移除通道配置。
示例
在 RDS for MySQL 数据库实例上运行时,以下示例将此数据库实例上名为 channel_1
的复制通道配置为从由主机 sourcedb.example.com
和端口 3306
指定的源复制数据。它将最小复制延迟设置为一小时(3600 秒)。这意味着,来自源 RDS for MySQL 数据库实例的更改在至少一个小时内不会在多源副本上应用。
call mysql.rds_set_external_source_with_auto_position_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 0, 3600, 'channel_1');
mysql.rds_set_external_source_with_delay_for_channel
在 RDS for MySQL 数据库实例上配置一个具有指定复制延迟的复制通道。
重要
要运行此过程,必须启用 autocommit
。要启用它,请将 autocommit
参数设置为 1
。有关修改参数的信息,请参阅 在 Amazon RDS 中修改数据库参数组中的参数。
语法
CALL mysql.rds_set_external_source_with_delay_for_channel (
host_name
,host_port
,replication_user_name
,replication_user_password
,mysql_binary_log_file_name
,mysql_binary_log_file_location
,ssl_encryption
,delay
,channel_name
);
参数
-
host_name
-
RDS for MySQL 源数据库实例的主机名或 IP 地址。
-
host_port
-
RDS for MySQL 源数据库实例使用的端口。如果网络配置包括转换端口号的安全 Shell (SSH) 端口复制,请指定由 SSH 公开的端口号。
-
replication_user_name
-
对 RDS for 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,这意味着连接已加密,但未验证证书。 -
delay
-
延迟从源数据库实例复制的最小秒数。
该参数的限制为一天(86400 秒)。
-
channel_name
-
复制通道的名称。每个复制通道接收来自在特定主机和端口上运行的单个源 RDS for MySQL 数据库实例的二进制日志事件。
使用说明
主用户必须运行 mysql.rds_set_external_source_with_delay_for_channel
过程。此过程必须在您要创建复制通道的目标 RDS for MySQL 数据库实例上运行。
在运行 mysql.rds_set_external_source_with_delay_for_channel
之前,请为源数据库实例上的复制用户配置多源副本所需的权限。要将多源副本连接到源数据库实例,必须指定对源数据库实例拥有 REPLICATION CLIENT
和 REPLICATION SLAVE
权限的复制用户的 replication_user_name
和 replication_user_password
值。
在源数据库实例上配置复制用户
通过使用所选的 MySQL 客户端,连接到源数据库实例并创建要用于复制的用户账户。示例如下:
重要
作为安全最佳实践,请指定除以下示例中所示占位符值以外的密码。
MySQL 8.0
CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY '
password
';MySQL 5.7
CREATE USER 'repl_user'@'example.com' IDENTIFIED BY '
password
';在源数据库实例上,向复制用户授予
REPLICATION CLIENT
和REPLICATION SLAVE
权限。以下示例向您所在域的“repl_user”用户授予对所有数据库的REPLICATION CLIENT
和REPLICATION SLAVE
权限。GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
要使用加密复制,请将源数据库实例配置为使用 SSL 连接。
在调用 mysql.rds_set_external_source_with_delay_for_channel
以配置此复制通道后,可以在副本上调用 mysql.rds_start_replication_for_channel 以启动通道上的复制过程。您可以调用 mysql.rds_reset_external_source_for_channel 以停止通道上的复制,并从副本中移除通道配置。
当您调用 mysql.rds_set_external_source_with_delay_for_channel
时,Amazon RDS 将时间、用户和 set channel source
的操作记录在 mysql.rds_history
表(不包括通道特定的详细信息)和 mysql.rds_replication_status
表中,并包含通道名称。此信息仅用于内部使用和监控目的。要记录完整的过程调用以进行审核,请考虑根据应用程序的特定要求启用审核日志或常规日志。
示例
在 RDS for MySQL 数据库实例上运行时,以下示例将此数据库实例上名为 channel_1
的复制通道配置为从由主机 sourcedb.example.com
和端口 3306
指定的源复制数据。它将最小复制延迟设置为一小时(3600 秒)。这意味着,来自源 RDS for MySQL 数据库实例的更改在至少一个小时内不会在多源副本上应用。
call mysql.rds_set_external_source_with_delay_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000777', 120, 0, 3600, 'channel_1');
mysql.rds_set_source_auto_position_for_channel
将指定通道的复制模式设置为基于二进制日志文件位置或全局事务标识符(GTID)。
语法
CALL mysql.rds_set_source_auto_position_for_channel (
auto_position_mode
,channel_name
);
参数
-
auto_position_mode
-
该值指示是使用日志文件位置复制还是基于 GTID 的复制:
-
0
– 使用基于二进制日志文件位置的复制方法。默认为0
。 -
1
– 使用基于 GTID 的复制方法。
-
-
channel_name
-
多源副本上复制通道的名称。每个复制通道接收来自在特定主机和端口上运行的单个源 RDS for MySQL 数据库实例的二进制日志事件。
使用说明
主用户必须运行 mysql.rds_set_source_auto_position_for_channel
过程。此过程在指定的通道上重启复制,以应用指定的自动定位模式。
示例
以下示例将 channel_1 的自动定位模式设置为使用基于 GTID 的复制方法。
call mysql.rds_set_source_auto_position_for_channel(1,'channel_1');
mysql.rds_set_source_delay_for_channel
为指定的通道设置延迟从源数据库实例复制到多源副本的最小秒数。
语法
CALL mysql.rds_set_source_delay_for_channel(
delay
,channel_name
);
参数
-
delay
-
延迟从源数据库实例进行复制的最小秒数。
该参数的限制为一天(86400 秒)。
-
channel_name
-
多源副本上复制通道的名称。每个复制通道接收来自在特定主机和端口上运行的单个源 RDS for MySQL 数据库实例的二进制日志事件。
使用说明
主用户必须运行 mysql.rds_set_source_delay_for_channel
过程。要使用此过程,请首先调用 mysql.rds_stop_replication_for_channel
以停止复制。然后,调用此过程来设置复制延迟值。设置延迟后,调用 mysql.rds_start_replication_for_channel
以重启复制。
示例
以下示例将从多源副本的 channel_1
上的源数据库实例进行复制的延迟设置为至少一小时(3600 秒)。
CALL mysql.rds_set_source_delay_for_channel(3600,'channel_1');
mysql.rds_skip_repl_error_for_channel
跳过二进制日志事件并删除指定通道的 MySQL DB 多源副本上的复制错误。
语法
CALL mysql.rds_skip_repl_error_for_channel(
channel_name
);
参数
-
channel_name
-
多源副本上复制通道的名称。每个复制通道接收来自在特定主机和端口上运行的单个源 RDS for MySQL 数据库实例的二进制日志事件。
使用说明
主用户必须对只读副本运行 mysql.rds_skip_repl_error_for_channel
过程。使用此过程的方式与使用 mysql.rds_skip_repl_error
跳过只读副本上的错误的方式类似。有关更多信息,请参阅 调用 mysql.rds_skip_repl_error 过程。
注意
要跳过基于 GTID 的复制中的错误,我们建议您改用 mysql.rds_skip_transaction_with_gtid 过程。
要确定是否存在错误,请运行 MySQL SHOW REPLICA STATUS FOR CHANNEL '
命令。如果复制错误不太严重,您可以运行 channel_name
'\Gmysql.rds_skip_repl_error_for_channel
以跳过该错误。如果有多个错误,mysql.rds_skip_repl_error_for_channel
会删除指定复制通道上的第一个错误,然后警告存在其他错误。然后,您可以使用 SHOW REPLICA STATUS FOR CHANNEL '
确定要对下一个错误采取的适当操作。有关返回的值的信息,请参阅 MySQL 文档中的 SHOW REPLICA STATUS 语法channel_name
'\G
mysql.rds_start_replication_for_channel
在指定的通道上发起从 RDS for MySQL 数据库实例到多源副本的复制。
注意
您可以使用 mysql.rds_start_replication_until_for_channel 或 mysql.rds_start_replication_until_gtid_for_channel 存储过程从 RDS for MySQL 数据库实例中启动复制,并在指定的二进制日志文件位置停止复制。
语法
CALL mysql.rds_start_replication_for_channel(
channel_name
);
参数
-
channel_name
-
多源副本上复制通道的名称。每个复制通道接收来自在特定主机和端口上运行的单个源 RDS for MySQL 数据库实例的二进制日志事件。
使用说明
主用户必须运行 mysql.rds_start_replication_for_channel
过程。从源 RDS for MySQL 数据库实例导入数据后,在多源副本上运行此命令以在指定的通道上开始复制。
示例
以下示例开始在多源副本的 channel_1
上进行复制。
CALL mysql.rds_start_replication_for_channel('channel_1');
mysql.rds_start_replication_until_for_channel
在指定的通道上从 RDS for MySQL 数据库实例启动复制,并在指定的二进制日志文件位置停止复制。
语法
CALL mysql.rds_start_replication_until_for_channel (
replication_log_file
,replication_stop_point
,channel_name
);
参数
-
replication_log_file
-
源数据库实例上包含复制信息的二进制日志的名称。
-
replication_stop_point
-
replication_log_file
二进制日志中复制将停止的位置。 -
channel_name
-
多源副本上复制通道的名称。每个复制通道接收来自在特定主机和端口上运行的单个源 RDS for MySQL 数据库实例的二进制日志事件。
使用说明
主用户必须运行 mysql.rds_start_replication_until_for_channel
过程。通过此过程,复制将启动,然后在达到指定的二进制日志文件位置时停止。对于版本 8.0,该过程仅停止 SQL_Thread
。对于版本 5.7,该过程会同时停止 SQL_Thread
和 IO_Thread
。
为 replication_log_file
参数指定的文件名必须与源数据库实例二进制日志文件名匹配。
当 replication_stop_point
参数指定过去的某个停止位置时,即会立即停止复制。
示例
以下示例在 channel_1
上启动复制并复制更改,直到它到达 mysql-bin-changelog.000777
二进制日志文件中的位置 120
。
call mysql.rds_start_replication_until_for_channel( 'mysql-bin-changelog.000777', 120, 'channel_1' );
mysql.rds_start_replication_until_gtid_for_channel
在指定的通道上从 RDS for MySQL 数据库实例中启动复制,并在指定的全局事务标识符(GTID)处停止复制。
语法
CALL mysql.rds_start_replication_until_gtid_for_channel(
gtid
,channel_name
);
参数
-
gtid
-
在其之后停止复制的 GTID。
-
channel_name
-
多源副本上复制通道的名称。每个复制通道接收来自在特定主机和端口上运行的单个源 RDS for MySQL 数据库实例的二进制日志事件。
使用说明
主用户必须运行 mysql.rds_start_replication_until_gtid_for_channel
过程。该过程在指定的通道上启动复制并应用所有更改,直至指定的 GTID 值。然后,它在该通道上停止复制。
在 gtid
参数指定副本已运行的事务时,将会立即停止复制。
在运行此过程之前,必须通过将 replica_parallel_workers
或 slave_parallel_workers
的值设置为 0
来禁用多线程复制。
示例
以下示例在 channel_1
上启动复制并复制更改,直至到达 GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
。
call mysql.rds_start_replication_until_gtid_for_channel('3E11FA47-71CA-11E1-9E33-C80AA9429562:23','channel_1');
mysql.rds_stop_replication_for_channel
停止在指定的通道上从 MySQL 数据库实例进行复制。
语法
CALL mysql.rds_stop_replication_for_channel(
channel_name
);
参数
-
channel_name
-
多源副本上复制通道的名称。每个复制通道接收来自在特定主机和端口上运行的单个源 RDS for MySQL 数据库实例的二进制日志事件。
使用说明
主用户必须运行 mysql.rds_stop_replication_for_channel
过程。
示例
以下示例停止在多源副本的 channel_1
上进行复制。
CALL mysql.rds_stop_replication_for_channel('channel_1');