《如何將MySQL GR 設(shè)置為多主模式》要點(diǎn):
本文介紹了如何將MySQL GR 設(shè)置為多主模式,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
在MySQL 5.7.17版本中發(fā)布的MySQL Group Replication(后文簡(jiǎn)稱為MGR)被很多人稱為MySQL復(fù)制方案的正規(guī)軍,可以一舉取代現(xiàn)在的MySQL Replication,Semisynchronous replication,甚至是可以取代之前最成功的MySQL集群方案Galera.
MGR有兩種模式,一種是Single-Primary,一種是Multi-Primary,單主或者多主.
在前一種模式Single-Primary中,無論集群中有多少個(gè)節(jié)點(diǎn),只有一個(gè)節(jié)點(diǎn)允許寫入,其它節(jié)點(diǎn)都是只讀的,這個(gè)允許寫入的節(jié)點(diǎn)被稱為主節(jié)點(diǎn),只有當(dāng)這個(gè)主節(jié)點(diǎn)出現(xiàn)問題從集群中被踢出,才會(huì)在剩余的節(jié)點(diǎn)中選舉出另外一個(gè)節(jié)點(diǎn)成為新的主節(jié)點(diǎn),并且將該節(jié)點(diǎn)置為可寫模式.這個(gè)過程可以通過log清晰地看到.
在5.7.17的官方文檔中有詳細(xì)地描述如何設(shè)置Single-Primary MGR的方法.
而在后一種模式Multi-Primary中,所有的節(jié)點(diǎn)都是主節(jié)點(diǎn),都可以同時(shí)被讀寫,看上去這似乎更好,但是因?yàn)槎嘀鞯膹?fù)雜性,在功能上如果設(shè)置了多主模式,則會(huì)有一些使用的限制,比如不支持Foreign Keys with Cascading Constraints.
在多主模式下,集群中的節(jié)點(diǎn)退出集群,也不再會(huì)出現(xiàn)重新選舉的動(dòng)作,因?yàn)楸緛硭械墓?jié)點(diǎn)都是Primary節(jié)點(diǎn).
但是不確認(rèn)是什么原因,在官方文檔中沒有單獨(dú)的章節(jié)來描述如何設(shè)置集群為Multi-Primary模式.只是在最后語焉不詳?shù)靥峒傲艘痪洌篗ulti-primary mode groups (members all configured with group_replication_single_primary_mode=OFF) 讓讀者可以知道跟group_replication_single_primary_mode參數(shù)有關(guān).
以下為設(shè)置Multi-Primary MGR的方法.假設(shè)集群之前已經(jīng)處于Single-Primary模式.
group_replication_single_primary_mode=ON,表示啟動(dòng)了Single-Primary模式,那么修改為OFF就意味著要啟動(dòng)Multi-Primary模式.
如果MGR已經(jīng)啟動(dòng),則無法動(dòng)態(tài)修改該參數(shù)
首先停止復(fù)制
root@lh> stop GROUP_REPLICATION;
Query OK, 0 rows affected (8.67 sec)
設(shè)置單主模式參數(shù)為off
root@lh > set global group_replication_single_primary_mode=off;
Query OK, 0 rows affected (0.00 sec)
該參數(shù)設(shè)置為ON,則禁用了在多主模式下一些可能產(chǎn)生未知數(shù)據(jù)沖突的操作
(root@lh) > set global group_replication_enforce_update_everywhere_checks=ON;
Query OK, 0 rows affected (0.00 sec)
設(shè)置為第一個(gè)準(zhǔn)備啟動(dòng)MGR(bootstrap)的節(jié)點(diǎn)
root@lh> SET GLOBAL group_replication_bootstrap_group=ON;
Query OK, 0 rows affected (0.00 sec)
啟動(dòng)復(fù)制
root@lh> START GROUP_REPLICATION;
Query OK, 0 rows affected (1.29 sec)
為了防止后續(xù)由于意外再啟動(dòng)另外一個(gè)復(fù)制組,關(guān)閉bootstrap參數(shù)
root@lh]> SET GLOBAL group_replication_bootstrap_group=OFF;
Query OK, 0 rows affected (0.00 sec)
此時(shí)可以從視圖中看到整個(gè)集群只有一個(gè)節(jié)點(diǎn)是ONLINE
可以加入第二個(gè)節(jié)點(diǎn)了.
同樣設(shè)置單主模式參數(shù)為off
root@lh> set global group_replication_single_primary_mode=off;
Query OK, 0 rows affected (0.00 sec)
設(shè)置update檢查參數(shù)為on
root@lh> set global group_replication_enforce_update_everywhere_checks=ON;
Query OK, 0 rows affected (0.00 sec)
啟動(dòng)復(fù)制
root@lh> start group_replication;
Query OK, 0 rows affected (5.42 sec)
此時(shí)檢查視圖,可以發(fā)現(xiàn)集群中已經(jīng)存在兩個(gè)節(jié)點(diǎn)
group_replication_primary_member值為空,表示啟動(dòng)的是Multi-Primary Mode,否則該參數(shù)顯示的是單主模式中的Primary節(jié)點(diǎn).
同樣的方法可以加入第三個(gè)節(jié)點(diǎn),在當(dāng)前版本中MGR最多支持一個(gè)集群中擁有9個(gè)節(jié)點(diǎn).
如果需要在MySQL重啟之后這些參數(shù)仍然生效,那么需要將這些參數(shù)加入到my.cnf文件中,一個(gè)典型的配置了MGR的my.cnf如下所示
文章來自微信公眾號(hào):數(shù)據(jù)和云
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/4245.html