一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

老司機(jī)帶你在MySQL領(lǐng)域“大吉大利,晚上吃雞”

 數(shù)據(jù)和云 2020-07-01

最近絕地求生這個(gè)游戲太火了,當(dāng)我問(wèn)我的朋友們你們閑時(shí)在干嘛,基本上告訴我的答案都是在"吃雞"??!想必很多老鐵們也玩,那一定應(yīng)該知道絕地求生中有把槍叫AWM。此槍傷害裸132點(diǎn),爆頭330,即使三級(jí)頭爆頭必死,無(wú)防彈衣或者防彈衣有破損,一槍死。是這個(gè)游戲中威力最大的狙擊×××,足足是98K的兩倍。

那么在MySQL領(lǐng)域有沒(méi)有這么一把威力超大的“槍”呢~答案是必須有啊!但老張先問(wèn)你們一個(gè)問(wèn)題。

請(qǐng)問(wèn)你搭建MySQL復(fù)制的時(shí)候,還在執(zhí)行備份恢復(fù),在從庫(kù)進(jìn)行change master to的操作嘛?如果是那你可就真的落后了。

本章介紹MySQL官方推薦的一款高可用集群方案MySQL Group Replication。簡(jiǎn)稱(chēng):MGR(組復(fù)制)。它是官方推出的一種基于Paxos協(xié)議的狀態(tài)機(jī)復(fù)制,徹底解決了基于傳統(tǒng)的異步復(fù)制和半同步復(fù)制中數(shù)據(jù)一致性問(wèn)題無(wú)法保證的情況。也讓MySQL數(shù)據(jù)庫(kù)涉及的領(lǐng)域更廣,徹底擁有了打開(kāi)互聯(lián)網(wǎng)金融行業(yè)的大門(mén)。

2016年12月 MySQL Group Replication推出了第一個(gè)GA版本發(fā)布在MySQL5.7.17中。但目前直接投入到生產(chǎn)環(huán)境中使用,風(fēng)險(xiǎn)還是比較大。建議等其越來(lái)越成熟之后,我們?cè)僬嬲度胧褂谩?/span>

隨著MySQL8.0版本即將與我們見(jiàn)面,再配合官方逐漸成熟的高可用集群 Group Replication方案,到那時(shí)再看看誰(shuí)還是我們MySQL的對(duì)手,全都不在了!MySQL數(shù)據(jù)庫(kù)就是作者的信仰,愛(ài)你無(wú)怨無(wú)悔。

MGR組復(fù)制原理

先來(lái)談?wù)勈裁唇凶鼋M復(fù)制。組復(fù)制是一種可用于實(shí)現(xiàn)容錯(cuò)系統(tǒng)的技術(shù)。復(fù)制組是一個(gè)通過(guò)消息傳遞相互交互的server集群。復(fù)制組由多個(gè)server成員組成,如下圖的master1,master2,master3,所有成員獨(dú)立完成各自的事務(wù)。當(dāng)客戶(hù)端先發(fā)起一個(gè)更新事務(wù),該事務(wù)先在本地執(zhí)行,執(zhí)行完成之后就要發(fā)起對(duì)事務(wù)的提交操作了。

在還沒(méi)有真正提交之前需要將產(chǎn)生的復(fù)制寫(xiě)集廣播出去,復(fù)制到其他成員。如果沖突檢測(cè)成功,組內(nèi)決定該事務(wù)可以提交,其他成員可以應(yīng)用,否則就回滾。最終,這意味著所有組內(nèi)成員以相同的順序接收同一組事務(wù)。因此組內(nèi)成員以相同的順序應(yīng)用相同的修改,保證組內(nèi)數(shù)據(jù)強(qiáng)一致性。

MGR組復(fù)制模式

組復(fù)制可以在兩種模式下運(yùn)行。 在單主模式下,組復(fù)制具有自動(dòng)選主功能,每次只有一個(gè) server 成員接受更新,其他成員只提供讀服務(wù)。在多主模式下運(yùn)行時(shí),所有的 server 成員都可以同時(shí)接受更新,沒(méi)有主從之分,成員角色是完全對(duì)等的。 組復(fù)制默認(rèn)情況下是單主模式,我們可以通過(guò)設(shè)置參數(shù)group_replication_single_primary_mode=off,讓其變成多主模式。本章的實(shí)戰(zhàn)部分就是以多主模式進(jìn)行MGR復(fù)制的搭建。

MGR特性介紹

  • 完成了真正的多節(jié)點(diǎn)讀寫(xiě)的集群方案。

  • 基于原生復(fù)制及paxos協(xié)議的組復(fù)制技術(shù),并以插件的方式提供,實(shí)現(xiàn)了數(shù)據(jù)的強(qiáng)一致性

  • 由于是多節(jié)點(diǎn)讀寫(xiě),failover切換變得更加簡(jiǎn)單

  • 增加刪除節(jié)點(diǎn),自動(dòng)完成同步數(shù)據(jù)和更新組內(nèi)信息的操作。擴(kuò)展性地增強(qiáng)
    雖然在MGR的多主模式下,受到不能支持串行隔離級(jí)別和不支持外鍵級(jí)聯(lián)操作的限制條件。而且目前MySQL版本中對(duì)DDL語(yǔ)句操作無(wú)法實(shí)現(xiàn)回滾,導(dǎo)致MGR無(wú)法對(duì)DDL語(yǔ)句做數(shù)據(jù)沖突檢驗(yàn),所以DDL語(yǔ)句在MGR中并發(fā)執(zhí)行存在隱患。但這些都不能阻擋MGR的發(fā)布所帶來(lái)的開(kāi)創(chuàng)新時(shí)代的意義。讓我們一起期待這個(gè)追求極致完美的MySQL數(shù)據(jù)庫(kù),未來(lái)更加璀璨奪目。

MGR搭建實(shí)戰(zhàn)演練

環(huán)境介紹:這里我們準(zhǔn)備三個(gè)節(jié)點(diǎn),數(shù)據(jù)庫(kù)半版本使用 MySQL5.7.17

數(shù)據(jù)庫(kù)IP地址 數(shù)據(jù)庫(kù)版本信息 主機(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

實(shí)戰(zhàn)第1步:
在三個(gè)節(jié)點(diǎn)上執(zhí)行安裝MySQL5.7操作。(此步省略,詳情請(qǐng)見(jiàn)書(shū)中第一部分第二章)
實(shí)戰(zhàn)第2步:
在三個(gè)節(jié)點(diǎn)上分別設(shè)置 hostname 和 ip 地址的映射關(guān)系

實(shí)戰(zhàn)第3步:
在三個(gè)節(jié)點(diǎn)上分別創(chuàng)建復(fù)制賬號(hào),命令如下

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.56.%' IDENTIFIED BY '123456';

實(shí)戰(zhàn)第4步:
在三個(gè)節(jié)點(diǎn)上分別安裝GR插件,命令如下

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

組件安裝完成之后,展示結(jié)果:

root@db 13:23:  [(none)]> show plugins;


實(shí)戰(zhàn)第5步:
在三個(gè)節(jié)點(diǎn)分別配置各自的集群參數(shù)文件,配置完成之后重啟數(shù)據(jù)庫(kù)
192.168.56.101參數(shù)文件配置展示:(剩下兩個(gè)節(jié)點(diǎn)同理)

Group Replication

server_id = 1013306gtid_mode = ONenforce_gtid_consistency = ONmaster_info_repository = TABLErelay_log_info_repository = TABLEbinlog_checksum = NONElog_slave_updates = ONlog_bin = binlogbinlog_format= ROWtransaction_write_set_extraction = XXHASH64loose-group_replication_group_name = '1f2cee29-f9a2-11e7-8cbb-08002783b39d'loose-group_replication_start_on_boot = offloose-group_replication_local_address = 'node2:33061'loose-group_replication_group_seeds ='node2:33061,node3:33062,proxysql:33063'loose-group_replication_bootstrap_group = offloose-group_replication_single_primary_mode=off loose-group_replication_enforce_update_everywhere_checks=true

重點(diǎn)參數(shù)詳解

MGR一定要開(kāi)啟GTID功能gtid_mode = ON,enforce_gtid_consistency = ON
MGR在當(dāng)前MySQL版本中,必須要設(shè)置binlog_checksum=none,并且binlog_format=row
MGR需要多源復(fù)制功能,所以需要將主從庫(kù)之間的信息記錄到表中。設(shè)置master_info_repository = TABLErelay_log_info_repository = TABLE
MGR中開(kāi)啟主鍵信息采集功能:transaction_write_set_extraction= XXHASH64
MGR中把該參數(shù)group_replication_single_primary_mode關(guān)閉目的是搭建多主模式。如果搭建單主模型,保持默認(rèn)參數(shù)即可。
MGR中需要設(shè)置組的名字,該
group_replication_group_name是通過(guò)select uuid()來(lái)生成的。
MGR中本地成員的地址由該參數(shù)
group_replication_local_address決定,本例中當(dāng)前節(jié)點(diǎn)是node2。后面的端口是每個(gè)節(jié)點(diǎn)都需要一個(gè)獨(dú)立的tcp端口號(hào),節(jié)點(diǎn)之間通過(guò)這個(gè)端口號(hào)進(jìn)行通信。
MGR中其他成員的地址由這個(gè)參數(shù)
group_replication_group_seeds決定
MGR采取多主模式時(shí),需要讓該參數(shù)
group_replication_single_primary_mode=off(默認(rèn)是單主模式)。
于此同時(shí)需要將該參數(shù)
group_replication_enforce_update_everywhere_checks=true。目的是為了做多主模式限制檢測(cè)。
注:加載到參數(shù)文件里面,需要在每個(gè)參數(shù)的前面加loose。
這里再?gòu)?qiáng)調(diào)一個(gè)參數(shù)
group_replication_auto_increment_increment。該參數(shù)代表自增屬性,默認(rèn)值為7。我們要保證每個(gè)成員的該值相同,并且建議該參數(shù)的設(shè)置盡量比組內(nèi)成員的個(gè)數(shù)大一些,方便后期集群的擴(kuò)展。

實(shí)戰(zhàn)第6步:
在192.168.56.101上啟動(dòng)首個(gè)節(jié)點(diǎn)的MGR集群服務(wù)。命令如下:

CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery'

(MGR需要該異步復(fù)制通道,實(shí)現(xiàn)新節(jié)點(diǎn)加入集群自動(dòng)從其他節(jié)點(diǎn)復(fù)制數(shù)據(jù)的目的,不需要手工指定從哪個(gè)節(jié)點(diǎn)復(fù)制,master_host和master_port信息。都是自動(dòng)完成)
SET GLOBAL group_replication_bootstrap_group = ON;
(執(zhí)行初始化操作,只有首個(gè)節(jié)點(diǎn)需要這一步操作)
START GROUP_REPLICATION; 
啟動(dòng)成功之后,查看節(jié)點(diǎn)狀態(tài)信息。命令如下

SELECT * FROM performance_schema.replication_group_members;

關(guān)閉初始化操作 命令如下:

SET GLOBAL group_replication_bootstrap_group = off;

注:replication_group_members表中MEMBER_STATE字段狀態(tài)為ONLINE,再執(zhí)行關(guān)閉初始化命令。

實(shí)戰(zhàn)第7步:
在192.168.56.102上面啟動(dòng)第二個(gè)節(jié)點(diǎn)的mgr集群服務(wù)。命令如下

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;

啟動(dòng)成功之后,查看節(jié)點(diǎn)狀態(tài)信息。命令如下

SELECT * FROM performance_schema.replication_group_members;


實(shí)戰(zhàn)第8步:
在192.168.56.103上面啟動(dòng)第三個(gè)節(jié)點(diǎn)的mgr集群服務(wù)。命令如下

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;

啟動(dòng)成功之后,查看節(jié)點(diǎn)狀態(tài)信息。命令如下:

SELECT * FROM performance_schema.replication_group_members;

可見(jiàn)啟動(dòng)成功之后,三個(gè)成員的狀態(tài)都是ONLINE,證明已經(jīng)開(kāi)始正常工作了。真正可以實(shí)現(xiàn)多節(jié)點(diǎn)的讀寫(xiě)操作了。

以上就是對(duì)于MGR多主模式的原理介紹及其搭建過(guò)程。我們要有一種學(xué)習(xí)新知識(shí)的能力,多實(shí)操,多演練,從中得到其真諦,感受MySQL給我們帶來(lái)的簡(jiǎn)單快樂(lè)!今后還會(huì)多發(fā)布更多技術(shù)的文章,大家多溝通交流!

作者:張甦

投稿:有投稿、尋求報(bào)道意向技術(shù)人請(qǐng)聯(lián)絡(luò) wenmin.yin@enmotech.com

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    日韩一区二区三区在线欧洲| 久久大香蕉一区二区三区| 国产香蕉国产精品偷在线观看| 欧美一区二区三区性视频| 亚洲乱码av中文一区二区三区| 国产午夜精品美女露脸视频| 91久久国产福利自产拍| 日本人妻中出在线观看| 最近中文字幕高清中文字幕无| 黑人粗大一区二区三区| 日韩中文字幕欧美亚洲| 国产亚洲中文日韩欧美综合网| 99久久婷婷国产亚洲综合精品| 日韩性生活片免费观看| 国产亚洲精品久久久优势| 午夜亚洲精品理论片在线观看| 日韩精品免费一区二区三区| 熟女乱一区二区三区丝袜| 麻豆视传媒短视频免费观看| 欧美亚洲91在线视频| 伊人久久青草地婷婷综合| 国产午夜福利在线免费观看| 亚洲天堂精品1024| 精品女同在线一区二区| 韩国日本欧美国产三级| 婷婷开心五月亚洲综合| 好吊妞视频这里有精品| 成年男女午夜久久久精品| 久久精品国产99国产免费| 亚洲精品一区二区三区免| 黑人巨大精品欧美一区二区区| 亚洲国产香蕉视频在线观看| 日本不卡一本二本三区| 欧美日韩一区二区午夜| av国产熟妇露脸在线观看| 欧美日韩国产午夜福利| 有坂深雪中文字幕亚洲中文 | 欧美黑人精品一区二区在线| 欧美成人精品国产成人综合| 久草视频在线视频在线观看| 99免费人成看国产片|