本篇文章給大家分享的是有關在MySQL中的高可用集群方案MGR是怎樣的,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、隆林網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5技術、購物商城網(wǎng)站建設、集團公司官網(wǎng)建設、成都外貿網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為隆林等各大城市提供網(wǎng)站開發(fā)制作服務。最近絕地求生這個游戲太火了,當我問我的朋友們你們閑時在干嘛,基本上告訴我的答案都是在"吃雞"??!想必很多老鐵們也玩,那一定應該知道絕地求生中有把槍叫AWM。此槍傷害裸132點,爆頭330,即使三級頭爆頭必死,無防彈衣或者防彈衣有破損,一槍死。是這個游戲中威力大的狙擊×××,足足是98K的兩倍。
那么在MySQL領域有沒有這么一把威力超大的“槍”呢~答案是必須有??!但先問你們一個問題。
請問你搭建MySQL復制的時候,還在執(zhí)行備份恢復,在從庫進行change master to的操作嘛?如果是那你可就真的落后了。
今天介紹MySQL官方推薦的一款高可用集群方案MySQL Group Replication。簡稱:MGR(組復制)。它是官方推出的一種基于Paxos協(xié)議的狀態(tài)機復制,徹底解決了基于傳統(tǒng)的異步復制和半同步復制中數(shù)據(jù)一致性問題無法保證的情況。也讓MySQL數(shù)據(jù)庫涉及的領域更廣,徹底擁有了打開互聯(lián)網(wǎng)金融行業(yè)的大門。2016年12月 MySQL Group Replication推出了第一個GA版本發(fā)布在MySQL5.7.17中。但目前直接投入到生產環(huán)境中使用,風險還是比較大。建議等其越來越成熟之后,我們再真正投入使用。
隨著MySQL8.0版本即將與我們見面,再配合官方逐漸成熟的高可用集群 Group Replication方案,到那時再看看誰還是我們MySQL的對手,全都不在了!MySQL數(shù)據(jù)庫就是作者的信仰,愛你無怨無悔。
先來談談什么叫做組復制。組復制是一種可用于實現(xiàn)容錯系統(tǒng)的技術。復制組是一個通過消息傳遞相互交互的server集群。復制組由多個server成員組成,如下圖的master1,master2,master3,所有成員獨立完成各自的事務。當客戶端先發(fā)起一個更新事務,該事務先在本地執(zhí)行,執(zhí)行完成之后就要發(fā)起對事務的提交操作了。在還沒有真正提交之前需要將產生的復制寫集廣播出去,復制到其他成員。如果沖突檢測成功,組內決定該事務可以提交,其他成員可以應用,否則就回滾。最終,這意味著所有組內成員以相同的順序接收同一組事務。因此組內成員以相同的順序應用相同的修改,保證組內數(shù)據(jù)強一致性。
組復制可以在兩種模式下運行。 在單主模式下,組復制具有自動選主功能,每次只有一個 server成員接受更新,其他成員只提供讀服務。在多主模式下運行時,所有的 server 成員都可以同時接受更新,沒有主從之分,成員角色是完全對等的。 組復制默認情況下是單主模式,我們可以通過設置參數(shù)group_replication_single_primary_mode=off,讓其變成多主模式。本章的實戰(zhàn)部分就是以多主模式進行MGR復制的搭建。
完成了真正的多節(jié)點讀寫的集群方案。
基于原生復制及paxos協(xié)議的組復制技術,并以插件的方式提供,實現(xiàn)了數(shù)據(jù)的強一致性
由于是多節(jié)點讀寫,failover切換變得更加簡單
增加刪除節(jié)點,自動完成同步數(shù)據(jù)和更新組內信息的操作。擴展性地增強
雖然在MGR的多主模式下,受到不能支持串行隔離級別和不支持外鍵級聯(lián)操作的限制條件。而且目前MySQL版本中對DDL語句操作無法實現(xiàn)回滾,導致MGR無法對DDL語句做數(shù)據(jù)沖突檢驗,所以DDL語句在MGR中并發(fā)執(zhí)行存在隱患。但這些都不能阻擋MGR的發(fā)布所帶來的開創(chuàng)新時代的意義。讓我們一起期待這個追求極致完美的MySQL數(shù)據(jù)庫,未來更加璀璨奪目。
環(huán)境介紹:這里我們準備三個節(jié)點,數(shù)據(jù)庫版本使用MySQL5.7.17
數(shù)據(jù)庫IP地址 數(shù)據(jù)庫版本信息 主機名 Server-id
192.168.56.101 MySQL-5.7.17 node2 1013306 192.168.56.102 MySQL-5.7.17 node3 1023306 192.168.56.103 MySQL-5.7.17 proxysql 1033306
實戰(zhàn)第1步:
在三個節(jié)點上執(zhí)行安裝MySQL5.7操作。(此步省略,詳情請見書中第一部分第二章)
實戰(zhàn)第2步:
在三個節(jié)點上分別設置hostname和ip地址的映射關系
實戰(zhàn)第3步:
在三個節(jié)點上分別創(chuàng)建復制賬號,命令如下
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.56.%' IDENTIFIED BY '123456';
實戰(zhàn)第4步:
在三個節(jié)點上分別安裝GR插件,命令如下
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
組件安裝完成之后,展示結果:
root@db 13:23: [(none)]> show plugins;
實戰(zhàn)第5步:
在三個節(jié)點分別配置各自的集群參數(shù)文件,配置完成之后重啟數(shù)據(jù)庫
192.168.56.101參數(shù)文件配置展示:(剩下兩個節(jié)點同理)
server_id = 1013306 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 = '1f2cee29-f9a2-11e7-8cbb-08002783b39d' loose-group_replication_start_on_boot = off loose-group_replication_local_address = 'node2:33061' loose-group_replication_group_seeds ='node2:33061,node3:33062,proxysql:33063' loose-group_replication_bootstrap_group = off loose-group_replication_single_primary_mode=off loose-group_replication_enforce_update_everywhere_checks=true
重點參數(shù)詳解:(一定要記住這些)
MGR一定要開啟GTID功能gtid_mode = ON,enforce_gtid_consistency = ON
MGR在當前MySQL版本中,必須要設置binlog_checksum=none
,并且binlog_format=row
MGR需要多源復制功能,所以需要將主從庫之間的信息記錄到表中。設置master_info_repository = TABLE
和relay_log_info_repository = TABLE
MGR中開啟主鍵信息采集功能:transaction_write_set_extraction= XXHASH64
MGR中把該參數(shù)group_replication_single_primary_mode
關閉目的是搭建多主模式。如果搭建單主模型,保持默認參數(shù)即可。
MGR中需要設置組的名字,該group_replication_group_name
是通過select uuid()
來生成的。
MGR中本地成員的地址由該參數(shù)group_replication_local_address
決定,本例中當前節(jié)點是node2。后面的端口是每個節(jié)點都需要一個獨立的tcp端口號,節(jié)點之間通過這個端口號進行通信。
MGR中其他成員的地址由這個參數(shù)group_replication_group_seeds
決定
MGR采取多主模式時,需要讓該參數(shù)group_replication_single_primary_mode=off
(默認是單主模式)。
于此同時需要將該參數(shù)group_replication_enforce_update_everywhere_checks=true
。目的是為了做多主模式限制檢測。
注:加載到參數(shù)文件里面,需要在每個參數(shù)的前面加loose。
這里再強調一個參數(shù)group_replication_auto_increment_increment
。該參數(shù)代表自增屬性,默認值為7。我們要保證每個成員的該值相同,并且建議該參數(shù)的設置盡量比組內成員的個數(shù)大一些,方便后期集群的擴展。
實戰(zhàn)第6步:
在192.168.56.101上啟動首個節(jié)點的MGR集群服務。命令如下:
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery'
(MGR需要該異步復制通道,實現(xiàn)新節(jié)點加入集群自動從其他節(jié)點復制數(shù)據(jù)的目的,不需要手工指定從哪個節(jié)點復制,master_host和master_port信息。都是自動完成)
SET GLOBAL group_replication_bootstrap_group = ON;
(執(zhí)行初始化操作,只有首個節(jié)點需要這一步操作)
START GROUP_REPLICATION;
啟動成功之后,查看節(jié)點狀態(tài)信息。命令如下
SELECT * FROM performance_schema.replication_group_members;
關閉初始化操作 命令如下:
SET GLOBAL group_replication_bootstrap_group = off;
注:replication_group_members表中MEMBER_STATE字段狀態(tài)為ONLINE,再執(zhí)行關閉初始化命令。
實戰(zhàn)第7步:
在192.168.56.102上面啟動第二個節(jié)點的mgr集群服務。命令如下
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery'; set global group_replication_allow_local_disjoint_gtids_join=ON; START GROUP_REPLICATION;
啟動成功之后,查看節(jié)點狀態(tài)信息。命令如下
SELECT * FROM performance_schema.replication_group_members;
實戰(zhàn)第8步:
在192.168.56.103上面啟動第三個節(jié)點的mgr集群服務。命令如下
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery'; set global group_replication_allow_local_disjoint_gtids_join=ON; START GROUP_REPLICATION;
啟動成功之后,查看節(jié)點狀態(tài)信息。命令如下:
SELECT * FROM performance_schema.replication_group_members;
可見啟動成功之后,三個成員的狀態(tài)都是ONLINE,證明已經開始正常工作了。真正可以實現(xiàn)多節(jié)點的讀寫操作了。
以上就是在MySQL中的高可用集群方案MGR是怎樣的,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。