mariadb互為主從,讀寫分離
阿新 • • 發佈:2018-12-25
上一篇我寫了一篇主從同步的文章,主要是1主多從這種模式。但這種模式隨著訪問流量的過大,也會把從庫給拖垮,因此為了解決這個問題,又出現一種新的方法-----主主互備,互為主從。這樣的好處是做到了訪問量的壓力分流,同時也決絕單點故障的問題,任何一臺傳送故障,都還有另一臺可供使用。
這種設計的缺點是隻能適用於兩臺機器的場景。如果後期快速拓展業務的話,可以選擇將業務分離,建立多個主主互備的資料庫。
互為主從的設定其實很簡單,只要看過我之前寫的那篇主從同步的文章,你就想到互為主從的做法。
1.首先在A伺服器上開啟my.cnf,並輸入一下內容
server-id=1 binlog-ignore-db = mysql binlog-ignore-db = information_schema log-bin=master-bin relay-log=relay-bin sync-binlog = 1
2.在B伺服器上開啟my.cnf
server-id=2
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
relay-log=relay-bin
log-bin=master-bin
sync-binlog = 1
3.重啟服務
systemctl restart mariadb.service
4.清空A,B伺服器的master和slave日誌(若之前有開啟過同步的,需要先停止同步:stop slave;)
reset master;
reset slave;
5.分別給AB伺服器建立授權的同步賬戶
A:給B建立一個使用者:127.0.0.2為B伺服器的地址(需要改成自己的伺服器地址)
grant replication slave on *.* to 'slaveuser'@'127.0.0.2' identified by 'slaveuser';
B:給A建立一個使用者:127.0.0.1為A伺服器的地址(需要改成自己的伺服器地址)
grant replication slave on *.* to 'slaveuser'@'127.0.0.1' identified by 'slaveuser';
6.分別給A,B資料庫鎖表(不能終止mysql程序)
FLUSH TABLES WITH READ LOCK;
7.分別檢視A,B伺服器的主機狀態。日誌記錄的二進位制檔案:
SHOW MASTER STATUS;
8.根據上面的圖來修改A,B伺服器的配置
A:Host為B伺服器地址
CHANGE MASTER TO MASTER_HOST='127.0.0.2',MASTER_USER='slaveuser', MASTER_PASSWORD='slaveuser',MASTER_LOG_FILE='master-bin.000002',MASTER_LOG_POS=245;
B:Host為A伺服器地址
CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_USER='slaveuser', MASTER_PASSWORD='slaveuser',MASTER_LOG_FILE='master-bin.000002',MASTER_LOG_POS=245;
9.A,B分別開啟同步
start slave;
10.分別檢視A,B的同步狀態是否正常,紅框兩個都為yes代表同步成功
SHOW SLAVE STATUS\G;
11.解鎖
UNLOCK TABLES;
12.可以自行測試了,這個時候同步是成功的了,我這裡設定的是出了mysql和information_schema不同步之外,其他資料庫都同步