CHANGE MASTER TO

本文介绍如何使用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';