将基于二进制日志的复制主数据库添加到多源复制从数据库
这些步骤假定在主服务器上启用了二进制日志记录(这是默认设置),从属服务器正在使用TABLE
基于复制的存储库(在MySQL 8.0中是默认设置),并且您已启用复制用户并记录了当前的二进制日志位置。您需要知道当前MASTER_LOG_FILE
和MASTER_LOG_POSITION
。
使用该CHANGE MASTER TO
语句为复制从属服务器上的每个主服务器配置一个复制通道(请参见“复制通道”)。该FOR CHANNEL
子句用于指定通道。例如,要向复制从属服务器添加master1
并master2
作为主服务器,请使用mysql客户端CHANGE MASTER TO
在从属服务器上两次发出该语句,如下所示:
mysql>CHANGE MASTER TO MASTER_HOST ="master1",MASTER_USER ="ted",MASTER_PASSWORD ="password", \MASTER_LOG_FILE ='master1-bin.000006',MASTER_LOG_POS =628FOR CHANNEL "master_1"; mysql>CHANGE MASTER TO MASTER_HOST ="master2",MASTER_USER ="ted",MASTER_PASSWORD ="password", \MASTER_LOG_FILE ='master2-bin.000018',MASTER_LOG_POS =104FOR CHANNEL "master_2";
有关该CHANGE MASTER TO
语句的完整语法和其他可用选项的信息,请参见“ CHANGE MASTER TO语句”。
为了使复制从服务器只复制数据库db1
的master1
,只有数据库db2
的master2
,使用MySQL的客户端发出的CHANGE REPLICATION FILTER
每个通道,类似这样的语句:
mysql>CHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE = ('db1.%')FOR CHANNEL "master_1"; mysql>CHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE = ('db2.%')FOR CHANNEL "master_2";
有关该CHANGE REPLICATION FILTER
语句的完整语法和其他可用选项的信息,请参见“ CHANGE REPLICATION FILTER语句”。