1. 程式人生 > >mysql group replication(MGR)群組複製相關資料

mysql group replication(MGR)群組複製相關資料

配置的叢集成員,通訊時會把主機名與ip地址進行對應,最好是在/etc/hosts中設定好,如果沒有設定,則會碰到如下

錯誤:

2018-05-02T13:04:32.437256Z 10 [Note] 'CHANGE MASTER TO FOR CHANNEL 'group_replication_recovery' executed'. Previous state master_host='myserver01', master_port= 24801, master_log_file='', master_log_pos= 4, master_bind=''. New state master_host='myserver01', master_port= 24801, master_log_file='', master_log_pos= 4, master_bind=''.
2018-05-02T13:04:32.449673Z 10 [Note] Plugin group_replication reported: 'Establishing connection to a group replication recovery donor 595937c0-4d9c-11e8-a819-00163e06ea60 at myserver01 port: 24801.'
2018-05-02T13:04:32.450108Z 14 [Warning] Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information.
2018-05-02T13:04:32.450878Z 14 [ERROR] Slave I/O for channel 'group_replication_recovery': error connecting to master '
[email protected]
:24801' - retry-time: 60 retries: 1, Error_code: 2005 2018-05-02T13:04:32.450887Z 14 [Note] Slave I/O thread for channel 'group_replication_recovery' killed while connecting to master 2018-05-02T13:04:32.450890Z 14 [Note] Slave I/O thread exiting for channel 'group_replication_recovery', read up to log 'FIRST', position 4 2018-05-02T13:04:32.451012Z 10 [ERROR] Plugin group_replication reported: 'There was an error when connecting to the donor server. Please check that group_replication_recovery channel credentials and all MEMBER_HOST column values of performance_schema.replication_group_members table are correct and DNS resolvable.' 2018-05-02T13:04:32.451020Z 10 [ERROR] Plugin group_replication reported: 'For details please check performance_schema.replication_connection_status table and error log messages of Slave I/O for channel group_replication_recovery.' 2018-05-02T13:04:32.451185Z 10 [Note] Plugin group_replication reported: 'Retrying group recovery connection with another donor. Attempt 3/10'

在檢視中會看到狀態一直在recovering:

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 29d2ae7b-4de8-11e8-a27e-00163e06ea60 | myserver01  |       24802 | RECOVERING   |
| group_replication_applier | 595937c0-4d9c-11e8-a819-00163e06ea60 | myserver01  |       24801 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
2 rows in set (0.00 sec)

檢視當前叢集的成員狀態及哪個例項為主節點的方法:

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 29d2ae7b-4de8-11e8-a27e-00163e06ea60 | myserver01  |       24802 | ONLINE       |
| group_replication_applier | 2fdfc55d-4de8-11e8-a3af-00163e06ea60 | myserver01  |       24803 | ONLINE       |
| group_replication_applier | 595937c0-4d9c-11e8-a819-00163e06ea60 | myserver01  |       24801 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
3 rows in set (0.00 sec)

mysql> show global status like '%group_replication_primary%';
+----------------------------------+--------------------------------------+
| Variable_name                    | Value                                |
+----------------------------------+--------------------------------------+
| group_replication_primary_member | 595937c0-4d9c-11e8-a819-00163e06ea60 |
+----------------------------------+--------------------------------------+
1 row in set (0.01 sec)

檢視當前例項是否有延遲等效能問題(通過佇列深度判斷)的方法:

mysql> select * from performance_schema.replication_group_member_stats\G
*************************** 1. row ***************************
                      CHANNEL_NAME: group_replication_applier
                           VIEW_ID: 15252658123489942:3
                         MEMBER_ID: 2fdfc55d-4de8-11e8-a3af-00163e06ea60
       COUNT_TRANSACTIONS_IN_QUEUE: 0
        COUNT_TRANSACTIONS_CHECKED: 0
          COUNT_CONFLICTS_DETECTED: 0
COUNT_TRANSACTIONS_ROWS_VALIDATING: 0
TRANSACTIONS_COMMITTED_ALL_MEMBERS: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-6
    LAST_CONFLICT_FREE_TRANSACTION: 
1 row in set (0.00 sec)

通過檢視COUNT_TRANSACTIONS_IN_QUEUE的值,可以判斷等待處理的事務數。

在單主模式(預設模式)下,只有主伺服器是讀寫模式,其他機器會被設定為只讀模式,read_only、super_read_only都被設定為ON狀態,也就是設定為超級只讀模式:

mysql> show variables like '%read_only%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_read_only      | OFF   |
| read_only             | ON    |
| super_read_only       | ON    |
| transaction_read_only | OFF   |
| tx_read_only          | OFF   |
+-----------------------+-------+
5 rows in set (0.00 sec)

當節點需要恢復時,可以調整重試的次數與間隔:

mysql> show global variables like '%group_replication_recovery_retry%';
+----------------------------------------+-------+
| Variable_name                          | Value |
+----------------------------------------+-------+
| group_replication_recovery_retry_count | 10    |
+----------------------------------------+-------+
1 row in set (0.00 sec)

mysql> show global variables like '%group_replication_recovery_reconnect%';
+-----------------------------------------------+-------+
| Variable_name                                 | Value |
+-----------------------------------------------+-------+
| group_replication_recovery_reconnect_interval | 60    |
+-----------------------------------------------+-------+
1 row in set (0.01 sec)

區分故障與節點主動退出的區別,如果節點是主動退出叢集的,存活的叢集的節點總數會做調整,這樣退出的節點多不會導致剩下節點數目小於原始規劃數的一半而導致仲裁失敗,節點只讀。我們測試如下的節點自動退出情形,第一步,把節點3退出(stop group_replication或者資料庫正常shutdown):

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 29d2ae7b-4de8-11e8-a27e-00163e06ea60 | myserver01  |       24802 | ONLINE       |
| group_replication_applier | 2fdfc55d-4de8-11e8-a3af-00163e06ea60 | myserver01  |       24803 | ONLINE       |
| group_replication_applier | 595937c0-4d9c-11e8-a819-00163e06ea60 | myserver01  |       24801 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
3 rows in set (0.00 sec)

mysql> stop group_replication;
Query OK, 0 rows affected (9.51 sec)

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 2fdfc55d-4de8-11e8-a3af-00163e06ea60 | myserver01  |       24803 | OFFLINE      |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
1 row in set (0.00 sec)

可以看到一個有3個節點的叢集,節點3退出看,只能看到自己屬於OFFLINE狀態,這時在其他節點上觀察:

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 29d2ae7b-4de8-11e8-a27e-00163e06ea60 | myserver01  |       24802 | ONLINE       |
| group_replication_applier | 595937c0-4d9c-11e8-a819-00163e06ea60 | myserver01  |       24801 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
2 rows in set (0.00 sec)

可以看到線上節點資訊上,已經把第3個節點資訊去掉,不影響仲裁。等節點3維護完啟動群組複製功能後,會重新加進來,重新配置叢集成員資訊。

如果時網路,機器故障等情況,成員資訊不會自動調整,成員狀態會處於UNREACHABLE,什麼時候會有ERROR狀態,是已經加入叢集但恢復失敗的情況下會出現。

5.7.20後有個新的引數group_replication_member_weight,單主模式下,當選舉發生時,權重越大優先選擇為新的主機。

5. 7.19後有引數group_replication_transaction_size_limit,指定允許的事務大小,防止過大事務導致組同步失敗,這個值允許設定的最大值為2147483647,2G,好像大於max_allowed_packet的1G,最好設定成小於1G,直接避免超過1G事務導致其他複製失敗的情況。

使用組複製的基礎要求:

1、必須使用innodb引擎,衝突時要回滾,使用其他引擎可能會資料不一致。
2、每個表都要求顯示定義主鍵,用於衝突檢測識別。
3、開啟GTID,通過GTID來追蹤各事務在各機器上的情況 。
4、binlog使用row模式,確保各機器資料的一致性。
5、使用READ COMMITTED的隔離級別來規避Gap Locks。


相關推薦

mysql group replication(MGR)複製相關資料

配置的叢集成員,通訊時會把主機名與ip地址進行對應,最好是在/etc/hosts中設定好,如果沒有設定,則會碰到如下錯誤:2018-05-02T13:04:32.437256Z 10 [Note] 'CHANGE MASTER TO FOR CHANNEL 'group_re

Mysql group replication(MGR)實現高可用切換應用無感知方案的思考

一開始考慮使用ProxySQL+MGR來實現資料庫切換應用無感知方向,考慮了可能的兩種部署模型的優缺點:ProxySQL部署的兩種模型:1、靠近應用端方式:在應用伺服器上直接部署優點:  A、每個應用伺服器有自己的配置 ,配置內容簡單,不容易相互影響故障,變更故障風險最小 

MySQL Group Replication複製MGR

MGR基本要求: 1、InnoDB儲存引擎 2、主鍵,每個表必須具有已定義的主鍵或等效的主鍵,其中等效項是非null唯一鍵 3、IPv4網路 4、網路效能 5、開啟二進位制日誌並開啟GTID模式 6、mysql版本在5.7.17以上 MGR限制: 1、組複製不支援mysiam引擎 2、不支援

Centos6.8 下 部署Mysql複製MySQL Group Replication)之多主模式(5.7新特性)

MySQL Group Replication(簡稱MGR)是MySQL官方於2016年12月推出的一個全新的高可用與高擴充套件的解決方案。MySQL組複製提供了高可用、高擴充套件、高可靠的MySQL叢集服務。 1.關於MGR介紹 1.1提供的特性:

Mysql Group Replication 簡介及單主模式複製配置

mysql> create database test;2017-03-31T23:23:45.535115Z8[Note]Plugin group_replication reported:'Primary had applied all relay logs, disabled conflict d

Mysql Group Replication 簡介及單主模式復制配置【轉】

ror ipv4 mysql命令 value tail force action dmi where 一 Mysql Group Replication簡介 Mysql Group Replication(MGR)是一個全新的高可用和高擴張的MySQL集群服務。

MySQL Group Replication(多主同步復制MGR

update mod src xtra sla class replicat local trac 開啟replication配置: server-id=1 #標識服務器唯一 log-bin=mys

MySQL Group ReplicationMGR) 安裝

exit ever 信息采集 false 操作記錄 create .so lob 一個 MySQL Group Replication 安裝 192.168.10.65192.168.10.66192.168.10.67 OS : CentOS 7.4mysql soft

Mysql Group Replication關閉和啟動所有的成員的注意點

由於的我mgr建立在虛擬機器上面(即使是正式環境,如果計劃內的停機或者斷電都需要關閉所有的節點),如何關閉所有的組成員,關閉的順序還是比較重要的。我的環境是一個primary,多個slave的架構,qht131為parmary,其它qht132,qht133,qht134為s

Mysql group replication複製原理

前言:          Mysql版本5.7.17推出Mysql group replication(組複製),相對以前傳統的複製模式(非同步複製模式async replication 及半同步複製模式semi-sync replication),一個主,對應一個或多

027_【重要#集恢復步驟】MySQL Group Replication Got fatal error 1236 - CrazyPig的技術博客 - CSDN博客

property you 部分 raphael 提示信息 itl blank 執行 nbsp MySQL Group Replication Got fatal error 12362017年03月13日 14:30:03ZzzCrazyPig閱讀數:2227

MySQL group replication介紹

group replication“MySQL group replication”group replication是MySQL官方開發的一個開源插件,是實現MySQL高可用集群的一個工具。第一個GA版本正式發布於MySQL5.7.17中;想要使用group replication只需要從官網上下載MySQ

MySQL group replication

出現 上下 art 處理 自動創建 mit 排序 主從 同時 本篇文章主要講解MySQL group replication介紹,文中有關MySQL,group的內容,希望對大家有所幫助。 “MySQL group replication” group replicatio

Mysql Group Replication 簡析

group http 9.png tex 圖片 關於 clas png src 前段時間做了組內分享,寫的關於mysql Group Replication 文章             3, 高擴展     

複製-單主模式實戰篇

自定義jdbc客戶端相容群組模式 直接進入正題 下載mysql5.7+,進入安裝目錄 [[email protected] mysql]# cd /usr/local/mysql [[email protected] mysql]# ll 總用量 48 drwxr-

Mysql group replication

(每臺)安裝元件: 注意:在單個主機上執行的多例項。需要在my.cnf中增加此選項 放在每個選項[mysqld3306]的下面 :report_host=127.0.0.1 並且:skip-name-resolve mysql > INSTALL PLUG

[LeetCode] Group Shifted Strings 偏移字串

Given a string, we can "shift" each of its letter to its successive letter, for example: "abc" -> "bcd". We can keep "shifting" which forms

安裝oralce過程中使用者、相關oracle inventory的詳解

1、單例項使用者 我們在建立單例項的時候,一般用的使用者是 oracle  使用者,oinstall ,dba ,oper組 oinstall:oinstall 組是oracle 推薦作業系統的使用者組,該使用者組應該具有oracle 軟體目錄$ORACLE_BAES,$O

MySQL Group Replication 介紹

2016-12-12,一個重要的日子,mysql5.7.17 GA版釋出,正式推出Group Replication(組複製) 外掛,通過這個外掛增強了mysql原有的高可用方案(原有的Replication方案),提供了重要的特性——多寫,保證組內高可用,確保

MySQL Group Replication 技術點

mysql group replication,組複製,提供了多寫(multi-master update)的特性,增強了原有的mysql的高可用架構。mysql group replication基於mysql外掛架構實現,本身就是一個mysql外掛。 提供