MySQL多元复制_MySQL多源复制解决方案
MySQL輕松實現一主多從,但要將多個實例的數據復制到一個實例中就比較難啦,幸好在MariaDB中已經實現multi-master replication 功能;
在介紹MariaDB的功能前,我們先看看一些開源的解決方案:
1、Tungsten replicator 支持異構數據復制,java實現,成本較高;
2、使用mysqlbinlog或者類似工具拉取binlog,實現較為簡單;
3、采用級聯復制,比如在兩個master之間實現復制,M1->M2,M2上對應的表存儲引擎使用Blackhole引擎,并且開啟log-slave-update選項;最后在M2之后再掛一臺slave即可;
4、采用Federated存儲引擎,在一臺實例上創建遠端數據表的“軟鏈接”
5、其他各種patch或者工具
以上幾種方式,大家可能已經都接觸過,最近MariaDB 10.0.5 beta版中已經集成這個功能:
實現方式:
多個復制通道管理:
MySQL管理每個復制通道都是通過Master_Info類,這些函數: start_slave|change_master|stop_slave|show_slave函數都需要一個Master_info指針即可;所以添加通道標示:
CHANGE MASTER ‘connection-name’ TO,START SLAVE ‘connection-name’,STOP SLAVE ‘connection-name’,SHOW SLAVE ‘connection-name’ STATUS;
其中可以通過設置默認connection name :
set @@default_master_connection='';
通道信息保存(暫不考慮類似5.6中的功能):
文件:
multi-master-info-file (master.info帶上了multi-前綴),存儲使用中的master connection name;
master-info-connection-name.info 當前slave連接master的信息;
relay-log-connection-name.seq-num 從master讀取的復制信息;
這些文件的名稱均被轉換為小寫;
此時,show slave status 顯示為空,只能單個查看 show slave 'connection name';或者 show all slaves status 來查看狀態;
其中binlog為做更改,全部記錄在一起;
其他:
如果使用這種方案的話,業務數據不能重疊;
相關限制:
1、目前最多只能擁有64個master;
2、復制線程只能是兩個:IO,SQL (解決中。。。);
3、xtradb innodb-recovery-update-relay-log 這個選項需要關閉;
4、slave_net_timeout 影響的是所有connection;
5、slave_heartbeat_period 不起作用;
6、半同步復制不能使用(解決中。。。。)
總結
以上是生活随笔為你收集整理的MySQL多元复制_MySQL多源复制解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: mysql读取整张表_mysql 一个表
 - 下一篇: mysql insert 主键冲突_in