These steps assume that binary logging is enabled on the source
(which is the default), the replica is using
TABLE
based replication applier metadata
repositories (which is the default in MySQL 8.0), and
that you have enabled a replication user and noted the current
binary log file name and position.
Use the CHANGE REPLICATION SOURCE
TO
statement (from MySQL 8.0.23) or
CHANGE MASTER TO
statement (before
MySQL 8.0.23) to configure a replication channel for each source
on the replica (see Section 19.2.2, “Replication Channels”). The
FOR CHANNEL
clause is used to specify the
channel. For example, to add source1
and
source2
as sources to the replica, use the
mysql client to issue the statement twice on
the replica, like this:
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";
To make the replica replicate only database db1
from source1
, and only database
db2
from source2
, use the
mysql client to issue the
CHANGE REPLICATION FILTER
statement
for each channel, like this:
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";
For the full syntax of the CHANGE REPLICATION
FILTER
statement and other available options, see
Section 15.4.2.2, “CHANGE REPLICATION FILTER Statement”.