本文为您介绍如何使用MySQL作为PolarDB-X的Slave。
说明
PolarDB-X兼容MySQL的复制协议,因此可以将MySQL配置为PolarDB-X的Slave,在MySQL上执行如下示例中的SQL可以对从PolarDB-X到MySQL的复制链路进行管理,更多数据复制相关SQL可参看MySQL官方文档。
如果您的PolarDB-X实例是兼容MySQL 5.7的版本,请使用5.7版本的MySQL作为PolarDB-X的Slave;如果您的PolarDB-X实例是兼容MySQL 8.0的版本,请使用8.0版本的MySQL作为PolarDB-X的Slave,推荐使用8.0.27及以上的版本。
如果您开通了binlog多流服务,当基于binlog多流服务配置MySQL作为PolarDB-X的Slave时,需要为每条binlog日志流分别创建复制链路,可以在单个MySQL实例上配置多条复制链路,也可以选择为每条binlog日志流配置一个独立的MySQL Slave实例。如果选择在单个MySQL实例上配置多条复制链路,DDL的广播复制是一个难点问题。
操作方法
创建主从复制链路
语法
CHANGE MASTER TO option [, option] ... [ channel_option ] option: { MASTER_HOST = 'host_name' | MASTER_USER = 'user_name' | MASTER_PASSWORD = 'password' | MASTER_PORT = port_num | MASTER_LOG_FILE = 'source_log_name' | MASTER_LOG_POS = source_log_pos | MASTER_LOG_TIME_SECOND = source_log_time | SOURCE_HOST_TYPE = {RDS|POLARDBX|MYSQL} | STREAM_GROUP = 'stream_group_name' | WRITE_SERVER_ID = write_server_id | TRIGGER_AUTO_POSITION = {FALSE|TRUE} | WRITE_TYPE = {SPLIT|SERIAL|TRANSACTION} | MODE = {INCREMENTAL|IMAGE} | CONFLICT_STRATEGY = {OVERWRITE|INTERRUPT|IGNORE|DIRECT_OVERWRITE} | IGNORE_SERVER_IDS = (server_id_list) } channel_option: FOR CHANNEL channel server_id_list: [server_id [, server_id] ... ]
参数说明
MASTER_HOST:主实例地址。
MASTER_USER:主实例用户。
MASTER_PASSWORD:主实例密码。
MASTER_PORT:主实例端口。
MASTER_LOG_FILE:主实例文件名。
MASTER_LOG_POS:主实例文件内位点,从该位点开始进行binlog复制。
MASTER_LOG_TIME_SECOND:主实例时间位点,采用unix标准时间戳,单位为秒。当指定MASTER_LOG_FILE和MASTER_LOG_POS作为精确位点时,MASTER_LOG_TIME_SECOND将被忽略。
SOURCE_HOST_TYPE:主实例的类型,默认为MYSQL,如主实例为PolarDB-X 2.0,需显示设置该参数为POLARDBX。
STREAM_GROUP:开通多流服务时指定的流组名称,如主实例为PolarDB-X 2.0且需要对接主实例的多流binlog服务,则需要填入该选项。
WRITE_SERVER_ID:写入server_id。
TRIGGER_AUTO_POSITION:是否自动采用主实例最新位点,默认为false。
WRITE_TYPE:写入方式,默认为 SPLIT,表示非事务完整的并行复制;SERIAL表示非事务完整的串行复制;TRANSACTION表示事务完整的串行复制。
MODE:模式,INCREMENTAL表示仅增量同步,IMAGE表示结构,全量以及增量同步。
CONFLICT_STRATEGY:冲突策略,默认为OVERWRITE(覆盖),表示对于约束冲突的数据会采取Replace Into写入;INTERRUPT表示复制中断;IGNORE表示忽略。
IGNORE_SERVER_IDS:需要忽略的server_id。
channel_option:指定该链路的名字,需要与当前已存在的链路名不同。
示例1
执行以下语句,可根据创建复制链路,并从binlog中1713159938(2024-04-15 13:45:38)开始同步。
CHANGE MASTER TO MASTER_HOST='pxc-YOURENDPOINT.com', MASTER_PORT=3306, MASTER_USER='polardbx', MASTER_PASSWORD='123456', SOURCE_HOST_TYPE=polardbx, MASTER_LOG_TIME_SECOND=1713159938, write_server_id=1944903859 FOR CHANNEL 'pxc-bjrcsnbyagcdxh';
示例2
执行以下语句,可根据创建复制链路,并从主实例binlog.000001的offset 4处开始同步。
CHANGE MASTER TO MASTER_HOST='pxc-YOURENDPOINT.com', MASTER_PORT=3306, MASTER_USER='polardbx', MASTER_PASSWORD='123456', SOURCE_HOST_TYPE=polardbx, MASTER_LOG_FILE='binlog.000001', MASTER_LOG_POS=4, write_server_id=1944903859 FOR CHANNEL 'pxc-bjrcsnbyagcdxh';
更多信息,请参见CHANGE MASTER TO。
启动主从复制链路
语法
START SLAVE [ channel_option ] channel_option: FOR CHANNEL channel
示例1
执行以下语句,可启动所有由CHANGE MASTER TO语句创建的主从复制链路。
START SLAVE;
示例2
执行以下语句,可启动channel name为'TEST' 的主从复制链路。
START SLAVE for channel 'TEST';
更多信息,请参见START SLAVE。
暂停主从复制链路
语法
STOP SLAVE [ channel_option ] channel_option: FOR CHANNEL channel
示例1
执行以下语句,可暂停所有由CHANGE MASTER TO语句创建的主从复制链路。
STOP SLAVE;
示例2
执行以下语句,可暂停channel name为'TEST' 的主从复制链路。
STOP SLAVE for channel 'TEST';
更多信息,请参见STOP SLAVE。
删除主从复制链路
执行之前需要先停止数据复制进程。
语法
RESET SLAVE ALL [ channel_option ] channel_option: FOR CHANNEL channel
示例1
执行以下语句,可删除所有由CHANGE MASTER TO语句创建的主从复制链路。
RESET SLAVE ALL;
示例2
执行以下语句,可删除channel name为'TEST' 的主从复制链路。
RESET SLAVE ALL for channel 'TEST';
更多信息,请参见RESET SLAVE ALL。