本文為您介紹如何使用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。