这些步骤假定源上启用了二进制日志记录(这是默认设置),副本正在使用
TABLE
基于复制应用程序元数据存储库(这是 MySQL 8.0 中的默认设置),并且您已启用复制用户并记录当前二进制文件日志文件名和位置。
使用CHANGE REPLICATION SOURCE
TO
语句(从 MySQL 8.0.23 开始)或
CHANGE MASTER TO
语句(在 MySQL 8.0.23 之前)为副本上的每个源配置复制通道(请参阅第 17.2.2 节,“复制通道”)。该
FOR CHANNEL
子句用于指定通道。例如,要将source1
和
source2
作为源添加到副本,请使用
mysql客户端在副本上发出两次语句,如下所示:
mysql> CHANGE MASTER TO MASTER_HOST="source1", MASTER_USER="ted", MASTER_PASSWORD="password", \
MASTER_LOG_FILE='source1-bin.000006', MASTER_LOG_POS=628 FOR CHANNEL "source_1";
mysql> CHANGE MASTER TO MASTER_HOST="source2", MASTER_USER="ted", MASTER_PASSWORD="password", \
MASTER_LOG_FILE='source2-bin.000018', MASTER_LOG_POS=104 FOR CHANNEL "source_2";
Or from MySQL 8.0.23:
mysql> CHANGE REPLICATION SOURCE TO SOURCE_HOST="source1", SOURCE_USER="ted", SOURCE_PASSWORD="password", \
SOURCE_LOG_FILE='source1-bin.000006', SOURCE_LOG_POS=628 FOR CHANNEL "source_1";
mysql> CHANGE REPLICATION SOURCE TO SOURCE_HOST="source2", SOURCE_USER="ted", SOURCE_PASSWORD="password", \
SOURCE_LOG_FILE='source2-bin.000018', SOURCE_LOG_POS=104 FOR CHANNEL "source_2";
要使副本仅从 复制数据库db1
,source1
并且仅从
db2
复制数据库source2
,请使用
mysqlCHANGE REPLICATION FILTER
客户端为每个通道
发出
语句,如下所示:
mysql> CHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE = ('db1.%') FOR CHANNEL "source_1";
mysql> CHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE = ('db2.%') FOR CHANNEL "source_2";
有关该CHANGE REPLICATION
FILTER
语句和其他可用选项的完整语法,请参阅
第 13.4.2.2 节,“CHANGE REPLICATION FILTER 语句”。