成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

MySQL Group Replication

IT那活兒 / 2421人閱讀
MySQL Group Replication
點擊上方“IT那活兒”公眾號,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!

MySQL異步復制技術(shù)

1. 主從復制

傳統(tǒng)的MySQL復制提供了一個簡單的主從復制方法。一個主節(jié)點,一個或多個從節(jié)點。主節(jié)點執(zhí)行事務、提交事務,然后異步將所作的操作發(fā)送給從節(jié)點,從節(jié)點重放這些操作。所有的節(jié)點默認都具有一個數(shù)據(jù)的完整拷貝。

傳統(tǒng)的 MySQL 主從復制架構(gòu)是 MySQL 保持數(shù)據(jù)一致性的最基本架構(gòu),如下圖所示,從庫給主庫發(fā)起讀數(shù)據(jù)請求后,主庫會通過 dump線程把 binlog 日志文件推送給從庫,從庫的 I/O 線程把接收到數(shù)據(jù)更新到 relay log,之后從庫的 SQL 線程把 relay log 應用為 binlog 日志,直到主庫與從庫的 binlog 日志文件完全數(shù)據(jù)一致,達到主從同步。

該架構(gòu)模式下:應用發(fā)來的事務請求,經(jīng)過執(zhí)行之后寫入 binlog,主庫把 binlog日志推送給從庫,主庫不需要等到從庫是否成功更新數(shù)據(jù)到 relay log,主庫直接提交事務即可。

這種模式犧牲了數(shù)據(jù)一致性,不能很好保證主從數(shù)據(jù)一致性。

2. 半同步復制

除了異步復制,還有半同步復制,它在異步復制基礎上添加了一個同步操作。主節(jié)點需要等待從節(jié)點的ack回復,然后才能提交事務。

一主兩從半同步架構(gòu),應用發(fā)來的事務請求,在主庫執(zhí)行后寫入binlog,主庫把binlog日志推送給兩個從庫,半同步主庫需要等待其中任意一個從庫更新數(shù)據(jù)到relay log成功并且告知主庫,主庫才提交事務,這樣保證至少有一個從庫同步上數(shù)據(jù)了,也縮短了延遲時間,保證了數(shù)據(jù)安全。

該模也存在兩個問題:

  • MySQL無法自動切換,需要借助外力切庫,運維復雜。

  • 從庫Slave的讀壓力太大會導致復制延遲不斷增加。

Group Replication

為了解決以上問題,組復制應運而,MGR(MySQL Group Replication)是是MySQL官方推出的一款高可用與高擴展的解決方案,是多個 MySQL Server 節(jié)點共同組成的分布式集群,每個 Server 都有完整的數(shù)據(jù)副本;它是基于 ROW格式的二進制日志文件和 GTID 特性;

1. Group Replication特點

MGR提供了高可用、高擴展、高可靠的MySQL集群服務,具有以下特點:

  • 強一致性:基于原生復制和paxos協(xié)議,保證數(shù)據(jù)傳輸?shù)囊恢滦院驮有裕?/span>

  • 高容錯性:只要大多數(shù)節(jié)點沒有出現(xiàn)故障,集群就可對外提供服務;

  • 高擴展性:節(jié)點的加入和移除都是自動的,不需要人為過多干預;

  • 高靈活性:具有單主模式和多主模式,單主模式在主宕機后自動選主,多主模式多節(jié)點寫入。

2. Group Replication限制

  • 僅支持InnoDB表,并且每張表一定要有一個主鍵,用于做write set的沖突檢測;

  • 必須打開GTID特性,二進制日志格式必須設置為ROW,用于選主與write set;

  • COMMIT可能會導致失敗,類似于快照事務隔離級別的失敗場景;

  • 目前一個MGR集群最多支持9個節(jié)點;

  • 不支持外鍵于save point特性,無法做全局間的約束檢測與部分部分回滾;

  • 二進制日志不支持binlog event checksum。

Group Replication配置實踐

以下為MGR配置過程實踐,配置安裝MySQL過程此處不再贅述.當前環(huán)境如下:

主機名

IP

版本

MGR01

192.168.79.13

8.0.29

MGR02

192.168.79.14

8.0.30

MGR03

192.168.79.15

8.0.31

1. 設置MGR相關(guān)參數(shù)

三節(jié)點設置如下參數(shù):

####: for binlog

binlog_format =row

log_bin =/data/mysql-8.0/binary/mysql-bin

binlog_checksum =none



####: for gtid

gtid_mode =on

enforce_gtid_consistency =on



####: for replication

master_info_repository =table

relay_log_info_repository =table

slave_parallel_type =logical_clock

slave_parallel_workers =4



#MGR

plugin_load_add=group_replication.so

transaction_write_set_extraction =XXHASH64

group_replication_group_name ="3db33b36-0e51-409f-a61d-c99756e90155"

group_replication_start_on_boot =off

group_replication_local_address = "192.168.79.159:33061"

group_replication_group_seeds = "192.168.79.157:33061,192.168.79.158:33061,192.168.79.159:33061"

group_replication_bootstrap_group = off



# mgr for multi master

group_replication_single_primary_mode =off

group_replication_enforce_update_everywhere_checks =on



# mgr more set

binlog_transaction_dependency_tracking = WRITESET
  • 配置MGR必須開啟gtid和binlog;

  • group_replication_group_name 集群名字,各個節(jié)點必須一致可以使用uuidgen生成;

  • group_replication_local_address 本機ip和端口;

  • group_replication_group_seeds 組的成員和端口;

  • group_replication_consistency = BEFORE_ON_PRIMARY_FAILOVER # 當Primary掛了的時候,備選Primary只有把事務全部執(zhí)行完畢,才提供客戶端讀寫操作;

  • group_replication_flow_control_mode = DISABLED # 關(guān)閉流控,避免業(yè)務高峰觸發(fā)限流。

2. 安裝組復制插件及創(chuàng)建用戶

各個節(jié)點安裝mgr插件及創(chuàng)建用戶:

set sql_log_bin=0;

set global super_read_only=0;

set global read_only=0;

create user rplmgr@192.168.79.1_ identified WITH mysql_native_password by Rep&%set123;

grant replication slave on *.* to rplmgr@%;

FLUSH PRIVILEGES;

install plugin group_replication soname group_replication.so;

show plugins;

3. 第一個節(jié)點加入MGR

change master to master_user=rplmgr, master_password=Rep&%set123  for channel group_replication_recovery;

SET GLOBAL group_replication_bootstrap_group=ON;

start group_replication;

SET persist group_replication_bootstrap_group=off;

SELECT * FROM performance_schema.replication_group_members;

select @@read_only,@@super_read_only;

4. 其余節(jié)點加入MGR

change master to master_user=rplmgr, master_password=Rep&%set123  for channel group_replication_recovery;

start group_replication;

SET persist group_replication_bootstrap_group=off;

SELECT * FROM performance_schema.replication_group_members;

select @@read_only,@@super_read_only;

第二節(jié)點加入:

第三節(jié)點加入:

5. 簡單測試數(shù)據(jù)同步

MGR當前運行在單主模式下,簡單測試數(shù)據(jù)同步:

  • 在主節(jié)點創(chuàng)建測試數(shù)據(jù):

create database test;

use test;

create table t1(id int not null, name varchar(32), primary key(id));

insert into t1(id, name) values(,張三);
  • 在其余節(jié)點驗證數(shù)據(jù):

6. 手工切換主節(jié)點

手工將主節(jié)點切換到mgr03節(jié)點:

7. 切換到多主模式

8. 切換到單主模式

也可以指定主節(jié)點:

9. 其它補充

如果是已有的系統(tǒng)改造為MGR架構(gòu),需要檢查是否滿足相關(guān)條件。

1)檢查非INNODB表

SELECT table_name

,table_schema

,engine

FROM information_schema.tables

WHERE engine != innodb

AND table_schema NOT IN (mysql, information_schema, performance_schema);

如存在,許改造為innodb引擎表。

2)檢查無主鍵或者唯一約束的表

SELECT concat(T1.TABLE_SCHEMA,".",T1.TABLE_NAME)

FROM INFORMATION_SCHEMA.COLUMNS T1

JOIN INFORMATION_SCHEMA.TABLES T2 ON T1.TABLE_SCHEMA=T2.TABLE_SCHEMA

AND T1.TABLE_NAME=T2.TABLE_NAME

WHERE T1.TABLE_SCHEMA NOT IN (SYS,

MYSQL,

INFORMATION_SCHEMA,

PERFORMANCE_SCHEMA)

AND T2.TABLE_TYPE=BASE TABLE

GROUP BY T1.TABLE_SCHEMA,

T1.TABLE_NAME HAVING group_concat(COLUMN_KEY) NOT REGEXP PRI|UNI;

如存在需要改造:添加主鍵或唯一約束。


本文作者:張雷員(上海新炬王翦團隊)

本文來源:“IT那活兒”公眾號

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129349.html

相關(guān)文章

  • MySQL集群MGR升級實施測試方案

    MySQL集群MGR升級實施測試方案 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...

    IT那活兒 評論0 收藏1318
  • Mac 的mysql5.7沒有配置文件,如何解決only_full_group_by 問題

    摘要:屬性是在數(shù)據(jù)庫,表中,點進去,可以看到默認屬性是解決這個問題,就需要修改這個字段的屬性。方法二修改配置的文件在安裝這個版本的的時候,我沒有發(fā)現(xiàn)的配置文件。 showImg(https://segmentfault.com/img/bVXPg9?w=980&h=1246); 數(shù)據(jù)庫版本是5.7.19,在寫語句的時候,只要涉及ORDER BY,就會報錯, ERROR 1055 (42000...

    Flands 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<