mysql MGR集羣

介紹

MySQL Group Replication(簡稱MGR)是MySQL官方於2016年12月推出的一個全新的高可用與高擴展的解決方案。MySQL Group Replication提供了高可用、高擴展、高可靠的MySQL集羣服務

MGR基礎結構要求:

1、引擎必須爲innodb,因爲需事務支持在commit時對各節點進行衝突檢查
2、每個表必須有主鍵,在進行事務衝突檢測時需要利用主鍵值對比
3、必須開啓binlog且爲row格式
4、開啓GTID,且主從狀態信息存於表中(–master-info-repository=TABLE 、–relay-log-info-repository=TABLE),–log-slave-updates打開
5.一致性檢測設置–transaction-write-set-extraction=XXHASH64

部署MGR集羣

1.準備三臺mysql,三臺都設置hostname和ip映射
vim /etc/hosts 輸入以下

192.168.100.10   master
192.168.100.20   slave1
192.168.100.30   slave2

2.配置master主配置文件
vim /etc/my.cnf 添加以下 ##紅色部分修改組名和自己主機名

server_id=100  #服務ID
gtid_mode=ON  #全局事務
enforce_gtid_consistency=ON  #強制GTID的一致性
master_info_repository=TABLE  #將master.info元數據保存在系統表中
relay_log_info_repository=TABLE  #將relay.info元數據保存在系統表中
binlog_checksum=NONE  #禁用二進制日誌事件校驗
log_slave_updates=ON  #級聯複製
log_bin=binlog   #開啓二進制日誌記錄
binlog_format=ROW  #以行的格式記錄
3.transaction_write_set_extraction=XXHASH64 #使用哈希算法將其編碼爲散列
loose-group_replication_group_name='ce9be252-2b71-11e6-b8f4-00212844f856' #加入的組名
loose-group_replication_start_on_boot=off     #不自動啓用組複製集羣
loose-group_replication_local_address='cong11:33061'
#以本機端口33061接受來自組中成員的傳入連接
loose-group_replication_group_seeds='cong11:33061,cong12:33061,cong13:33061'
#組中成員訪問表
loose-group_replication_bootstrap_group=off #不啓用引導組

Uuidgen 可以自動生成組名
Systemctl restart mysqld ##重啓
3,授權賬戶
進入mysql裏

mysql> set SQL_LOG_BIN=0;   #停掉日誌記錄
mysql> grant replication slave on *.* to repl@' 192.168.1.%' identified by '123456';
mysql> flush privileges;
mysql> set SQL_LOG_BIN=1;  #開啓日誌記錄
mysql>change master to master_user='repl',master_password='123456'  for channel 'group_replication_recovery';  #構建group replication集羣,如果報錯,重啓mysql,再執行。

在這裏插入圖片描述
4,安裝group replication

install PLUGIN group_replication SONAME 'group_replication.so';

查看

Show plugins

在這裏插入圖片描述
5,啓動master上mysql的group replication
Set global group_replication_bootstrap_group=ON; ##group_replication_bootstrap_group爲ON是爲了標示以後加入集羣的服務器以這臺服務器爲基準,以後加入的就不需要設置。

start group_replication;
set global group_replication_bootstrap_group=OFF;

查看mgr狀態

select * from performance_schema.replication_group_members;

在這裏插入圖片描述

測試插入一些數據

在這裏插入圖片描述
在這裏插入圖片描述

6,複製組添加新實例slave1,修改配置文件

第二臺虛擬機配置
vim /etc/my.cnf ##添加以下 注意,ip不一樣,組名三臺都要一樣

server_id=101   #注意服務ID不一樣
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name='ce9be252-2b71-11e6-b8f4-00212844f856'
loose-group_replication_start_on_boot=off
loose-group_replication_local_address='cong12:33061'
loose-group_replication_group_seeds='cong11:33061,cong12:33061,cong13:33061'
loose-group_replication_bootstrap_group=off

在這裏插入圖片描述

Systemctl restart mysqld ##重啓
7,授權,和上面一樣
在這裏插入圖片描述
8,安裝group replication 插件
和上面一樣
把實例添加到之前的複製組

set global group_replication_allow_local_disjoint_gtids_join=ON;
start group_replication;

在這裏插入圖片描述
查看複製組狀態

select * from performance_schema.replication_group_members;

在這裏插入圖片描述
在這裏插入圖片描述
9,複製組添加新實例slave2,修改配置文件,添加以下
vim /etc/my.cnf ##組名,主機名和id

server_id=102   #注意服務ID不一樣
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name='ce9be252-2b71-11e6-b8f4-00212844f856'
loose-group_replication_start_on_boot=off
loose-group_replication_local_address='cong13:33061'
loose-group_replication_group_seeds='cong11:33061,cong12:33061,cong13:33061'
loose-group_replication_bootstrap_group=off

systemctl restart mysqld ##重啓

配置slave2

10,授權
同上
在這裏插入圖片描述
安裝group replication
同上
在這裏插入圖片描述
查看狀態

select * from performance_schema.replication_group_members;

在這裏插入圖片描述
同步完成
11,查看集羣參數設置列表

show variables like 'group_replication%';

在這裏插入圖片描述
查看主服務器id

SHOW STATUS LIKE 'group_replication_primary_member';

在這裏插入圖片描述

multi-primary模式(多主master模式)

1,由單主改爲多主
在原來單主的主節點上
進入mysql

stop GROUP_REPLICATION;
set global group_replication_single_primary_mode=off;         #關閉單master模式
set global group_replication_enforce_update_everywhere_checks=ON;          #這個參數設置多主模式下各個節點嚴格一致性檢查
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;         #加入到複製組
SET GLOBAL group_replication_bootstrap_group=OFF;

在這裏插入圖片描述

2,在slave1和slave2上配置

配置兩個一樣
進入mysql

 stop GROUP_REPLICATION;      ##停止複製組
set global group_replication_allow_local_disjoint_gtids_join=ON;               #即使含有組中不存在的事務,也允許當前server加入組
set global group_replication_single_primary_mode=off;          #關閉單master模式
set global group_replication_enforce_update_everywhere_checks=ON;                  #這個參數設置多主模式下各個節點嚴格一致性檢查
 start group_replication;    #加入到複製組

在這裏插入圖片描述
在這裏插入圖片描述

3,搭建多主master模式 在master上

vim /etc/my.cnf ##進入添加 , 再把主機名改一下

#roup Replication
server_id = 100  #服務ID
gtid_mode = ON  #全局事務
enforce_gtid_consistency = ON  #強制GTID的一致性
master_info_repository = TABLE  #將master.info元數據保存在系統表中
relay_log_info_repository = TABLE  #將relay.info元數據保存在系統表中
binlog_checksum = NONE  #禁用二進制日誌事件校驗
log_slave_updates = ON  #級聯複製
log_bin = binlog   #開啓二進制日誌記錄
binlog_format= ROW  #以行的格式記錄

transaction_write_set_extraction = XXHASH64 #使用哈希算法將其編碼爲散列
loose-group_replication_group_name = 'ce9be252-2b71-11e6-b8f4-00212844f856' #加入的組名
loose-group_replication_start_on_boot = off #不自動啓用組複製集羣
loose-group_replication_local_address = 'cong11:33061' #以本機端口33061接受來自組中成員的傳入連接
loose-group_replication_group_seeds = 'cong11:33061,cong12:33062,cong13:33063' #組中成員訪問表
loose-group_replication_bootstrap_group = off  #不啓用引導組
loose-group_replication_single_primary_mode = off  #關閉單master模式
loose-group_replication_enforce_update_everywhere_checks = ON  #多主一致性檢查

在這裏插入圖片描述

進入mysql

stop GROUP_REPLICATION;
reset master;   #重置所有的日誌

4,在從服務器上配置,slave1 slave2

Vim /etc/my.cnf ##添加以下 修改主機名

 # Group Replication
server_id = 101  #服務ID
gtid_mode = ON  #全局事務
enforce_gtid_consistency = ON  #強制GTID的一致性
master_info_repository = TABLE  #將master.info元數據保存在系統表中
relay_log_info_repository = TABLE  #將relay.info元數據保存在系統表中
binlog_checksum = NONE  #禁用二進制日誌事件校驗
log_slave_updates = ON  #級聯複製
log_bin = binlog   #開啓二進制日誌記錄
binlog_format= ROW  #以行的格式記錄

transaction_write_set_extraction = XXHASH64 #使用哈希算法將其編碼爲散列
loose-group_replication_group_name = 'ce9be252-2b71-11e6-b8f4-00212844f856' #加入的組名
loose-group_replication_start_on_boot = off #不自動啓用組複製集羣
loose-group_replication_local_address = 'cong12:33061' #以本機端口33061接受來自組中成員的傳入連接
loose-group_replication_group_seeds = 'cong11:33061,cong12:33062,cong13:33063' #組中成員訪問表
loose-group_replication_bootstrap_group = off  #不啓用引導組
loose-group_replication_single_primary_mode = off  #關閉單master模式
loose-group_replication_enforce_update_everywhere_checks = ON  #多主一致
性檢查 

/etc/init.d/mysqld restart ##重啓

 select * from performance_schema.replication_group_members;

在這裏插入圖片描述
在這裏插入圖片描述
Slave2配置同上
配置完重啓,查看狀態

select * from performance_schema.replication_group_members;

在這裏插入圖片描述
在這裏插入圖片描述
完成

實驗到這裏就結束了,如果有問題請小夥伴們留言,謝謝~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章