mgr test1

介紹

MGR 即 MySQL Group Replication 基于原生復制和paxos協(xié)議的組復制技術, 以插件方式提供 , 可動態(tài)新增和移除節(jié)點, 分為單主和多主模式芽唇。

18.1 Group Replication Background

  • MGR通訊協(xié)議 Group Communication System (GCS) ,基于Paxos 算法實現(xiàn)

18.1.1 復制技術

  • 異步復制


    image.png
  • 半同步復制


    image.png
  • 組復制
    分為單主模式(單點寫)和多主模式(多點可寫)
    組復制shared-nothing復制方案,每個server有完整數(shù)據(jù)副本
    寫事務需要組內(nèi)沖突檢測,通過才能提交,只讀事務不需要
    性能瓶頸更大幾率在沖突檢測(內(nèi)存/網(wǎng)絡)而非IO


    image.png

18.1.2 組復制用例

MGR盡可能保證集群可用,但當一個節(jié)點奔潰時,連接到db的客戶端需要重定向到其他節(jié)點,MGR不負責重定向, 可以用其他負載均衡夏跷、路由等中間件,也可用用 MySQL Router深胳。

18.1.3 多主和單主模式

設置單主or多主group_replication_single_primary_mode 撑蚌,所有server配置需相同厅须,默認ON表示單主,OFF多主丸逸。
8.0.13開始可以通過函數(shù)在線切換單主與多主模式:
group_replication_switch_to_single_primary_mode()
group_replication_switch_to_multi_primary_mode()

18.1.3.1 單主模式

單主模式group_replication_single_primary_mode=ON 只有M節(jié)點可寫,其他只讀脖律。
group_replication_enforce_update_everywhere_checks單主模式下必須OFF牺弹,多主設置為ON(嚴格檢測)

  • 主選舉場景:
    1.當前M離開(主動or被動)
    2.SELECT group_replication_set_as_primary(member_uuid);
    3.SELECT group_replication_switch_to_single_primary_mode(member_uuid);

  • 選舉算法
    如果集群中MySQL版本不同,選舉將用最低版本server對應的選舉算法
    1.如果所有組成員>=MySQL 8.0.17喇澡,則按小版本排序迅栅。如果任何成員<MySQL 8.0.16,則按主要版本排序晴玖,忽略小版本读存。
    2.group_replication_member_weight 權重(0-100为流,默認50),大值優(yōu)先選為M, 如果有5.7則忽略(應該是5.7和8.0混部情況,需測試)
    3.權限相同情況下,根據(jù)server_uuid排序

  • 查看當前主
    1.SELECT MEMBER_HOST, MEMBER_ROLE FROM performance_schema.replication_group_members;
    2.SHOW STATUS LIKE 'group_replication_primary_member' # 將來此變量會被移除

18.1.3.2 多主模式

MySQL 8.0.14 開始新增參數(shù)group_replication_consistency控制事務一致性,動態(tài)可更改, 更改后不需要重啟MGR集群, 支持session級別。
group_replication_enforce_update_everywhere_checks多主模式下一定要設置成ON(雖然可為OFF让簿,但不建議)

  • 事務檢查
    1.不允許SERIALIZABLE 隔離級別敬察。
    2.不支持外鍵。

18.1.4 Group Replication Services

18.1.4.1 Group Membership
  • group_replication_member_expel_timeout=5
    (8.0.13引入≥8.0.21默認5)成員從被懷疑到被踢出集群的等待時間,不包含前期常監(jiān)測異時間,如果網(wǎng)絡環(huán)境不好,可適當調(diào)高; 0表示不等待,可動態(tài)修改立即生效,不同節(jié)點可設置不同值(但建議相同值);最大3600s,但需要足夠大XCom緩存(group_replication_message_cache_size )

  • group_replication_unreachable_majority_timeout=5
    默認0,可動態(tài)修改立即生效,指成員因網(wǎng)絡分區(qū)無法連接到其他大部分成員而離開集群前等待的秒數(shù)尔当。
    5個server(S1,S2,S3,S4,S5)組成一個集群,如果(S1,S2)和(S3,S4,S5)之間斷開,則表示存在了網(wǎng)絡分區(qū),(S1,S2)屬于少數(shù),將等待指定秒數(shù)后脫離集群,(S3,S4,S5)繼續(xù)運行莲祸。
    默認0,意味著由于網(wǎng)絡分區(qū)而處于少數(shù)狀態(tài)的成員將永遠等待脫離集群(會一直等待,不會因為網(wǎng)絡分區(qū)而導致成員脫離組)椭迎。>0 則當指定時間過期時,少數(shù)分區(qū)處理的所有掛起事務都將回滾,少數(shù)分區(qū)中的服務器狀態(tài)變成ERROR
    如果設置了group_replication_autorejoin_tries>0則成員會以超級只讀模式嘗試,嘗試完后執(zhí)行group_replication_exit_state_action指定動作锐帜。
    注意,如果分區(qū)對等4個server(S1,S2,S3,S4)分區(qū)成(S1,S2)和(S3,S4)則不存在大部分成員,則所有成員變成ERROR狀態(tài)

  • group_replication_autorejoin_tries=3
    (8.0.16引入≥8.0.21默認3)組成員被驅(qū)逐出組或失聯(lián)達到超時時間后,嘗試自動重新加入組的次數(shù)⌒蠛牛可動態(tài)修改立即生效, >0時每次嘗試后會等待5分鐘再進行下一一次嘗試直到達到設置嘗試值缴阎。

  • group_replication_exit_state_action=READ_ONLY
    (≥8.0.16 默認READ_ONLYM,可選ABORT_SERVER,OFFLINE_MODE,READ_ONLY),可動態(tài)修改立即生效,表示成員意外離開組時的動作行為
    READ_ONLY 成員變成只讀模式super_read_only=1
    ABORT_SERVER 成員會變成離線模式offline_mode=1 , 此模式下,已連接客戶端在下一個請求時會斷開連接,并拒絕再連接,但CONNECTION_ADMIN權限(和將廢除的SUPER權限)的客戶端用戶除外。
    組復制線程還會將系統(tǒng)變量super_read_only設置為ON,因此客戶端無法進行任何更新,即使有CONNECTION_ADMIN或super權限連接弄兜。MySQL 8.0.18起支持OFFLINE_MODE药蜻。
    OFFLINE_MODE 成員會關閉mysql服務

  • group_replication_message_cache_size=1073741824
    默認1G,所有成員配置最好相同,可動態(tài)設置但是需要重啟MGR進程; 通信引擎XCom中可用于消息緩存的最大內(nèi)存,
    XCom包含成員間通訊信息及元數(shù)據(jù),另外可用于與其他組成員無法通信一段時間后重連到組的成員恢復丟失的消息。
    從8.0.21開始,最小可設置128M用于低配機器,但要注意緩存結(jié)構還需要額外50M內(nèi)存(一句話,配置不高就別上MGR)

18.1.4.2 Failure Detection
18.1.4.3 Fault-tolerance
Group Size Majority Instant Failures Tolerated
1 1 0
2 2 0
3 2 1
4 3 1
5 3 2
6 4 2
7 4 3
18.1.4.4 Observability

18.1.5 Group Replication Plugin Architecture

image.png

18.2 Getting Started

18.3 Requirements and Limitations

18.3.1 Group Replication Requirements

Infrastructure

  • InnoDB Storage Engine
    配置中文件增加disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
  • Primary Keys
    每個表必須有PK或者非null的unique key
    可以設置sql_require_primary_key=ON(默認OFF), 和CHANGE REPLICATION SOURCE TO時設置REQUIRE_TABLE_PRIMARY_KEY_CHECK=ON
  • Network Performance
    不用說了

Server Instance Configuration

  • Unique Server Identifier
    server-id 不用說了

  • Binary Log Active
    log-bin 啟用binlog,這也不用說了

  • Replica Updates Logged
    log_replica_updates=ON (from MySQL 8.0.26) or log_slave_updates=ON (before MySQL 8.0.26)

  • Binary Log Row Format
    binlog_format=row 必須是row格式

  • Binary Log Checksums Off (to MySQL 8.0.20)
    <=8.0.20, binlog_checksum=NONE , >=8.0.21 MGR支持binlog_checksum=CRC32

  • Global Transaction Identifiers On
    gtid_mode=ON and enforce_gtid_consistency=ON 必須啟用GTID模式

  • Replication Information Repositories
    master_info_repository=TABLE and relay_log_info_repository=TABLE 從MySQL 8.0開始放棄FILE吧

  • Transaction Write Set Extraction
    transaction_write_set_extraction=XXHASH64 從MySQL 8.0.26開始此變量將成為默認值,后期此變量可能被移除

  • Default Table Encryption
    default_table_encryption 所有成員設置需相同,默認OFF

  • Lower Case Table Names
    lower_case_table_names 所有成員設置需相同,默認0

  • Binary Log Dependency Tracking
    binlog_transaction_dependency_tracking 所有成員保持一致, WRITESET_SESSION可以提高性能,默認COMMIT_ORDER,還可選WRITESET,數(shù)據(jù)安全嚴格要求下用默認值替饿。
    如果 transaction_write_set_extraction=OFF 那只能為COMMIT_ORDER

  • Multithreaded Appliers
    slave_parallel_type = LOGICAL_CLOCK # replica_parallel_type=LOGICAL_CLOCK (from MySQL 8.0.26)
    slave_parallel_workers = 16 # replica_parallel_workers=16 (from MySQL 8.0.26)
    slave_preserve_commit_order = 1 # replica_preserve_commit_order=ON (from MySQL 8.0.26)

18.3.2 Group Replication Limitations

  • --upgrade=MINIMAL
  • Gap Locks
  • Table Locks and Named Locks
  • Binary Log Checksums
    從8.0.21支持binlog_checksum=CRC32
  • SERIALIZABLE Isolation Level
    多主模式不支持
  • Concurrent DDL versus DML Operations.
    多主模式下不能不同server并發(fā)對一個對象ddl dml操作语泽。
  • Foreign Keys with Cascading Constraints.
  • Multi-primary Mode Deadlock.
    多主模式下SELECT .. FOR UPDATE可能導致死鎖
  • Replication Filters
    千萬別配置filter,特別是配置文件(防止意外重啟啟用),8.0可以查詢performance_schema.replication_applier_global_filters,5.7無系統(tǒng)視圖
  • Encrypted Connections
  • Cloning Operations

18.4 Monitoring Group Replication

18.5 Group Replication Operations

18.6 Group Replication Security

18.7 Group Replication Performance

18.8 Upgrading Group Replication

18.9 Group Replication System Variables

18.10 Frequently Asked Questions

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市视卢,隨后出現(xiàn)的幾起案子踱卵,更是在濱河造成了極大的恐慌,老刑警劉巖据过,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惋砂,死亡現(xiàn)場離奇詭異,居然都是意外死亡绳锅,警方通過查閱死者的電腦和手機西饵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鳞芙,“玉大人眷柔,你說我怎么就攤上這事≡” “怎么了驯嘱?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長喳坠。 經(jīng)常有香客問我鞠评,道長,這世上最難降的妖魔是什么壕鹉? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任剃幌,我火速辦了婚禮聋涨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘负乡。我一直安慰自己牛郑,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布敬鬓。 她就那樣靜靜地躺著,像睡著了一般笙各。 火紅的嫁衣襯著肌膚如雪钉答。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天杈抢,我揣著相機與錄音数尿,去河邊找鬼。 笑死惶楼,一個胖子當著我的面吹牛右蹦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播歼捐,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼何陆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了豹储?” 一聲冷哼從身側(cè)響起贷盲,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎剥扣,沒想到半個月后巩剖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡钠怯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年佳魔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晦炊。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡鞠鲜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出刽锤,到底是詐尸還是另有隱情镊尺,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布并思,位于F島的核電站庐氮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏宋彼。R本人自食惡果不足惜弄砍,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一仙畦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧音婶,春花似錦慨畸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至碴卧,卻和暖如春弱卡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背住册。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工婶博, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荧飞。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓凡人,卻偏偏與公主長得像,于是被迫代替她去往敵國和親叹阔。 傳聞我的和親對象是個殘疾皇子挠轴,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容