I have setup a Master-Master-Slave replication where say A B and C, I want to replicate data from A to B (which is working) and B to C (also working) and from A to C which is not working with two masters since one slave is configured to accept only one master.My query is how to configure slave to accept multiple masters.
I want to achieve the following structure :
Tables in Master 1 +--------------+ | Master1-DB | +--------------+ | Table1 | | Table2 | | Table5 | +--------------+
Tables in Master 2 where table 2 is replicated form master 1 +---------------------------+ | Master2-DB | +---------------------------+ | Table1 From Master1 | | Table3 | | Table4 | +---------------------------+
Tables in master 3 where table 1 is from Master 1 and table 2 is from Master 2 must be replicated. +--------------------------+ | Slave-DB | +--------------------------+ | Table1 From Master1 | | Table3 From Master2 | | Table4 From Master2 | | Table5 From Master1 | +--------------------------+
Best Answer
You can't configure a MySQL server to connect to multiple masters as a replication slave.
You can configure Master B with
log_slave_updates
enabled, Master A withbinlog_format
=ROW
and declare table 2 usingEngine=BLACKHOLE
on Master B, and the replication events from Master A's binary log will cascade through Master B onto Slave C, which would be connected only to Master B (not directly to A).Otherwise, your alternative is Multi-Source Replication in MariaDB, which (unlike Oracle MySQL) does allow a single server to connect to multiple upstream masters simultaneously, as long as there are no conflicting combinations of schema+table names being replicated. This configuration should work whether the master servers are actually running MariaDB or if they're running MySQL.