中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MGR的搭建部署

發布時間:2020-10-17 23:24:44 來源:網絡 閱讀:3393 作者:wdw王大為 欄目:MySQL數據庫

1. MGR介紹

MySQL Group Replication(下簡稱:MGR)是MySQL官方推出的一種基于Paxos協議的狀態機復制。在MGR出現之前,用戶常見的MySQL高可用方式,無論怎么變化架構,本質就是Master-Slave架構。MySQL 5.7版本開始支持無損半同步復制(lossless semi-sync replication),從而進一步提示數據復制的強一致性
?

1.1 MySQL異步復制

master事務的提交不需要經過slave的確認,slave是否接收到master的binlog,master并不care。slave接收到master binlog后先寫relay log,最后異步地去執行relay log中的sql應用到自身。由于master的提交不需要確保slave relay log是否被正確接受,當slave接受master binlog失敗或者relay log應用失敗,master無法感知
MGR的搭建部署
?
?

1.2 MySQL半同步復制

基于傳統異步存在的缺陷,mysql在5.5版本推出半同步復制。可以說半同步復制是傳統異步復制的改進,在master事務的commit之前,必須確保一個slave收到relay log并且響應給master以后,才能進行事務的commit。但是slave對于relay log的應用仍然是異步進行的,原理如下圖所示:
MGR的搭建部署
?
?

1.3 MySQL組復制(MGR)

基于傳統異步復制和半同步復制的缺陷——數據的一致性問題無法保證,MySQL官方在5.7.17版本正式推出組復制(MySQL Group Replication,簡稱MGR)。
?
由若干個節點共同組成一個復制組,一個事務的提交,必須經過組內大多數節點(N / 2 + 1)決議并通過,才能得以提交。如上圖所示,由3個節點組成一個復制組,Consensus層為一致性協議層,在事務提交過程中,發生組間通訊,由2個節點決議(certify)通過這個事務,事務才能夠最終得以提交并響應。
?
引入組復制,主要是為了解決傳統異步復制和半同步復制可能產生數據不一致的問題。組復制依靠分布式一致性協議(Paxos協議的變體),實現了分布式下數據的最終一致性,提供了真正的數據高可用方案(是否真正高可用還有待商榷)。其提供的多寫方案,給我們實現多活方案帶來了希望。
MGR的搭建部署
?
?

1.4 MySQL組復制的特性和限制

特性優點:

1、高一致性,基于原生復制及paxos協議的組復制技術,并以插件的方式提供,提供一致數據安全保證;
2、高容錯性,只要不是大多數節點壞掉就可以繼續工作,有自動檢測機制,當不同節點產生資源爭用沖突時,不會出現錯誤,按照先到者優先原則進行處理,并且內置了自動化腦裂防護機制;
3、高擴展性,節點的新增和移除都是自動的,新節點加入后,會自動從其他節點上同步狀態,直到新節點和其他節點保持一致,如果某節點被移除了,其他節點自動更新組信息,自動維護新的組信息;
4、高靈活性,有單主模式和多主模式,單主模式下,會自動選主,所有更新操作都在主上進行;多主模式下,所有server都可以同時處理更新操作。

限制:(具體可參考官方文檔說明:https://dev.mysql.com/doc/refman/5.7/en/group-replication-requirements-and-limitations.html)

1、僅支持InnoDB表,并且每張表一定要有一個主鍵,用于做write set的沖突檢測;
2、必須打開GTID特性,二進制日志格式必須設置為ROW,用于選主與write set
3、COMMIT可能會導致失敗,類似于快照事務隔離級別的失敗場景
4、目前一個MGR集群最多支持9個節點
5、不支持外鍵于save point特性,無法做全局間的約束檢測與部分事務回滾
6、二進制日志不支持binlog event checksum

?
?

2. MGR搭建

搭建參照的官方文檔:
官方文檔:https://dev.mysql.com/doc/refman/5.7/en/group-replication.html
單主節點搭建地址:https://dev.mysql.com/doc/refman/5.7/en/group-replication-deploying-in-single-primary-mode.html
多主節點搭建基本和單主步驟一樣,只需要配置文件my.cnf額外添加,本文以下示例為單主節點搭建,多主節點搭建亦相差無幾

loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks= TRUE

?
?

2.1 機器分布

主機ip 安裝服務 權重
192.168.142.48 mysql server 5.7.18 50
192.168.142.49 mysql server 5.7.18 40
192.168.142.50 mysql server 5.7.18 30

權重:新主選舉時的優先級參照,越大,優先級越高
?
?

2.2 創建hostname和ip的映射

在三臺數據庫服務器上都設置:

192.168.142.48      dbtest1
192.168.142.49      dbtest2
192.168.142.50      dbtest3

?
?

2.3 需要額外說明的是配置文件my.cnf額外配置

配置文件介紹參照官方文檔:https://dev.mysql.com/doc/refman/5.7/en/group-replication-configuring-instances.html

# Replication Framework
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
log_bin=binlog
binlog_format=ROW
log_slave_updates=ON
binlog_checksum=NONE
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "192.168.142.48:33061"
loose-group_replication_group_seeds= "192.168.142.48:33061,192.168.142.49:33061,192.168.142.50:33061"
loose-group_replication_bootstrap_group=off
loose-group_replication_member_weight=50

?
?

2.4 創建數據庫實例

手動搭建或者自動化腳本分別在三臺主機上配置mysql實例,這里可參考MySQL單實例搭建的方法,不在贅述
?
?

2.5 第一個節點配置

1、設置復制賬號權限

SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;

2、指定恢復渠道channel

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';

3、安裝插件plugin和查看

INSTALL PLUGIN group_replication SONAME 'group_replication.so';
show plugins;

4、開啟組復制

# 設置group_replication_bootstrap_group為ON是為了標示以后加入集群的服務器以這臺服務器為基準,以后加入的就不需要設置
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

5、查看mgr的狀態

# 查詢表performance_schema.replication_group_members
select * from performance_schema.replication_group_members;

MGR的搭建部署

?

2.6 第二個節點配置和第三個節點配置

1、設置復制賬號權限

SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;

2、指定恢復渠道channel

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';

3、安裝插件plugin和查看

INSTALL PLUGIN group_replication SONAME 'group_replication.so';
show plugins;

4、開啟組復制

# 這里不再需要開啟group_replication_bootstrap_group,由于復制組已經被創建了,只需要將第二個節點添加進去即可
START GROUP_REPLICATION;

5、查看mgr的狀態

# 查詢表performance_schema.replication_group_members
select * from performance_schema.replication_group_members;

MGR的搭建部署

?
?

3. 觀察相關狀態和切換

1、切換

STOP GROUP_REPLICATION;會根據權重重新選擇新的主master
START GROUP_REPLICATION;新加入后作為從服務器slave

?
2、相關狀態查看

1、當前組成員列表
select * from performance_schema.replication_group_members;
2、當前節點詳細日志應用信息
select * from performance_schema.replication_group_member_stats;
3、當前復制渠道連接信息
select * from performance_schema.replication_connection_status;
4、當前復制渠道應用信息
select * from performance_schema.replication_applier_status;
5、當前主master
select a.variable_value,b.member_host,b.member_port,member_state from performance_schema.global_status a ,performance_schema.replication_group_members b where a.variable_value=b.member_id and variable_name= 'group_replication_primary_member';

?
?
?

4. MGR動態新增和刪除節點

4.1 動態新增節點配置

例如原有192.168.142.48,192.168.142.49,192.168.142.50組成MGR的基礎上動態新增節點192.168.142.51
?
1、創建hostname和ip的映射
在四臺數據庫服務器上都設置:

192.168.142.48      dbtest1
192.168.142.49      dbtest2
192.168.142.50      dbtest3
192.168.142.51      dbtest4

2、192.168.142.51的my.cnf配置文件和上面my.cnf保持一致,額外修改的如下

loose-group_replication_local_address= "192.168.142.51:33061"
loose-group_replication_group_seeds= "192.168.142.48:33061,192.168.142.49:33061,192.168.142.50:33061,192.168.142.51:33061"

3、創建數據庫實例
手動搭建或者自動化腳本分別在三臺主機上配置mysql實例,這里可參考MySQL單實例搭建的方法,不在贅述

4、設置復制賬號權限

SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;

5、指定恢復渠道channel

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';

6、安裝插件plugin和查看

INSTALL PLUGIN group_replication SONAME 'group_replication.so';
show plugins;

7、集群中已存在的節點配置修改group_replication_group_seeds的值

1、分別在192.168.142.48,192.168.142.49,192.168.142.50對應節點服務器配置參數
set global  group_replication_group_seeds="192.168.142.48:33061,192.168.142.49:33061,192.168.142.50:33061,192.168.142.51:33061";

2、將對應參數值寫入配置文件my.cnf持久化

8、開啟組復制

# 這里不再需要開啟group_replication_bootstrap_group,由于復制組已經被創建了,只需要將新增節點添加進去即可
START GROUP_REPLICATION;

9、查看mgr的狀態

# 查詢表performance_schema.replication_group_members
select * from performance_schema.replication_group_members;

?
?

4.2 動態刪除節點配置

例如原有192.168.142.48,192.168.142.49,192.168.142.50,192.168.142.51組成MGR的基礎上動態刪除節點192.168.142.51

1、停止192.168.142.51上組復制

STOP GROUP_REPLICATION;
slave關閉后就被移除了組成員

2、集群中剩余的節點配置修改group_replication_group_seeds的值

1、分別在192.168.142.48,192.168.142.49,192.168.142.50對應節點服務器配置參數
set global  group_replication_group_seeds="192.168.142.48:33061,192.168.142.49:33061,192.168.142.50:33061";

2、將對應參數值寫入配置文件my.cnf持久化

3、徹底清理192.168.142.51節點相關組信息,配置修改group_replication_group_seeds和group_replication_local_address的值

1、在192.168.142.51對應節點服務器配置參數
set global  group_replication_group_seeds="";
set global group_replication_local_address="";

2、將對應參數值寫入配置文件my.cnf持久化(添加注釋)

4、刪除插件plugin、復制賬號權限

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

额济纳旗| 泰顺县| 炉霍县| 梅河口市| 涿州市| 如皋市| 淮阳县| 黄浦区| 嘉义市| 芒康县| 大足县| 阿尔山市| 乡城县| 涞源县| 沂水县| 贺州市| 波密县| 龙陵县| 乐昌市| 剑川县| 万荣县| 右玉县| 利津县| 江都市| 彰化县| 连云港市| 红桥区| 泸西县| 正定县| 桃江县| 临澧县| 耿马| 高州市| 孝义市| 纳雍县| 雷州市| 稻城县| 香格里拉县| 云龙县| 新田县| 大埔县|