什么是多源复制?
首先,我们需要清楚
multi-master
与
multi-source
复制不是一样的. Multi-Master 复制通常是环形复制,你可以在任意主机上将数据复制给其他主机。

Multi-source 是不同的. MySQL在这个新版本中修复了一个复制限制 , 这限制是一个从站只能有一个主站. 这是一个在我们设计复制环境中的限制因素,也有一些极客使它正常工作了。但是现在有一个官方的解决办法了。所以。简单的说,

这将帮助我们创建一些复制的层次结构,这在过去是不可能的。 举个例子,你可以 将一个从站放在你的办公室里。在办公室里从所有主站中复制数据传播到世界各地。
它是怎么工作的呢?
现在我们有了通信渠道的概念,每一个通信渠道都是一个从服务器从主服务器获得2进制日志的链接。这意味着每个通信渠道都得有一个IO_THREAD .我们需要运行不同的CHANGE MASTER MASTER_HOST='something', MASTER_USER=...
很容易. 有一个单一的先决条件。从服务器需要在mysql5.6上配置安全功能,这意味着信息通常包含在主服务器上。信息或日志应该在一个表中,让我们开始配置吧
来个例子!
首先,我们在从服务器上实现事故安全功能。
master_info_repository=TABLE;
relay_log_info_repository=TABLE;
让后重启从服务器。我们可以开始创建通信渠道,用
slave > change master
to master_host="127.0.0.1", master_port=12047, master_user="msandbox",master_password="msandbox" for channel="master1";
slave > change master
to master_host="127.0.0.1", master_port=12048, master_user="msandbox",master_password="msandbox" for channel="master2";
按照所设定的通信名字启动从服务器。
slave > start slave
for channel="master1";
slave > start slave
for channel="master2";
slave > SHOW SLAVE STATUS
FOR CHANNEL
"master1"\G
*************************** 1. row ***************************
[...]
我们也可以检查正在运行的
slave > SHOW PROCESSLIST;
+----+-------------+-----------------------------------------------------------------------------+
| Id |
User
| State
|
+----+-------------+-----------------------------------------------------------------------------+
|
2 | system
user | Waiting
for master
to send event
|
|
3 | system
user | Slave has
read all relay log; waiting
for the slave I/O thread
to update it |
|
4 | system
user | Waiting
for master
to send event
|
|
5 | system
user | Slave has
read all relay log; waiting
for the slave I/O thread
to update it |
+----+-------------+-----------------------------------------------------------------------------+
结论
这个新的 multi-source 功能使在过去需要一些复杂操作创建的复制环境变得简单了。当然,你应用程序可以考虑这个新的特性设计和开发,使用 在每一个新的版本中,mysql的复制功能给我们更多的配置,性能和设计的可能性。所有这些新功能都可以结合起来。在你新(老)的功能中增加复制功能,你的复制环境会更加出色。举个例子:你可以配置
转自:http://www.oschina.net/translate/mysql-5-7-multi-source-replication