使用MySQL作为PolarDB-X的Slave

本文为您介绍如何使用MySQL作为PolarDB-XSlave。

说明

  • PolarDB-X兼容MySQL的复制协议,因此可以将MySQL配置为PolarDB-XSlave,MySQL执行如下示例中的SQL可以对从PolarDB-XMySQL的复制链路进行管理,更多数据复制相关SQL可参看MySQL官方文档。

  • 如果您的PolarDB-X实例是兼容MySQL 5.7的版本,请使用5.7版本的MySQL作为PolarDB-XSlave;如果您的PolarDB-X实例是兼容MySQL 8.0的版本,请使用8.0版本的MySQL作为PolarDB-XSlave,推荐使用8.0.27及以上的版本。

  • 如果您开通了binlog多流服务,当基于binlog多流服务配置MySQL作为PolarDB-XSlave时,需要为每条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_FILEMASTER_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

    执行以下语句,可根据创建复制链路,并从binlog1713159938(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.000001offset 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