1. 程式人生 > >MySQL雙主(master-master)+半同步(Semisync Replication)

MySQL雙主(master-master)+半同步(Semisync Replication)

架構:

1、mysqlA和mysqlB互為主備,即雙主架構Master-Master。

2、使用semisync半同步機制,保證雙主資料一致。

3、只有一個Master承擔寫操作,另一個備用,可承擔讀操作,配合應用實現讀寫分離。

4、雙主加上Keepavlied可搭建高可用MySQL叢集,實現單點故障切換。(本文不涉及)

  高可用部分參考 http://blog.csdn.net/qq_16177481/article/details/70241439 

  修改一下haproxy的配置檔案連結就可以了 親測可用

一、準備工作

1)安裝最新版MySQL5.7

參考我的上一篇文章http://blog.csdn.net/qq_16177481/article/details/70269774

MySQL5.7改善了半同步複製,降低了主從資料不一致的風險。


2)修改MySQL配置檔案

啟動MySQL之前先修改/etc/my.cnf,增加下面的配置。

mysqlA的配置檔案:

1 2 3 4 5 6 7 8 9 10 server-id = 1 log-bin=mysql-bin    # 開啟二進位制日誌功能,作為主庫時必須設定
log-slave-updates    # 做為從庫時,資料庫的修改也會寫到bin-log裡 binlog-ignore-db = mysql binlog-ignore-db = information_schema binlog-ignore-db = performance_schema replicate-wild-ignore-table = mysql.% replicate-wild-ignore-table = information_schema.% replicate-wild-ignore-table = performance_schema.%
expire_logs_days=5   # 表示自動刪除5天以前的binlog,可選

mysqlB的配置檔案:

1 2 3 4 5 6 7 8 9 10 server-id = 2 log-bin=mysql-bin log-slave-updates binlog-ignore-db = mysql binlog-ignore-db = information_schema binlog-ignore-db = performance_schema replicate-wild-ignore-table = mysql.% replicate-wild-ignore-table = information_schema.% replicate-wild-ignore-table = performance_schema.% expire_logs_days=5

3)在mysqlA和mysqlB上建立專門用於Replication的賬戶

1 2 GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'172.16.4.%' IDENTIFIED