本文介绍如何使用CHANGE MASTER TO语句建立主从复制链路,将当前PolarDB-X作为MySQL或PolarDB-X的从实例。
语法
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] ... ]
注意事项
PolarDB-X的5.4.19及以上版本的实例支持该SQL。
受限于网络,在通过阿里云控制台购买的PolarDB-X实例上,用户无法创建复制链路,该功能主要面向自建场景。
执行CHANGE MASTER TO需要为当前实例的高权限账号。
执行CHANGE MASTER TO连接主实例,语句中填写的主实例账号需要为高权限账号。
参数说明
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';