MGR 主備集群實現非同步連接故障轉移

来源:https://www.cnblogs.com/greatsql/archive/2023/07/24/17576422.html
-Advertisement-
Play Games

## 1.概述 **MySQL 8.0.22 開始**,支持非同步連接故障切換機制,在現有主從複製連接失敗後,自動建立到新主的非同步複製連接。 **MySQL 8.0.23 開始**,非同步連接故障切換機制還支持組複製拓撲,通過自動監視組成員身份的更改並區分主節點和從節點,在組複製主節點故障選出新主節點後 ...


1.概述

MySQL 8.0.22 開始,支持非同步連接故障切換機制,在現有主從複製連接失敗後,自動建立到新主的非同步複製連接。

MySQL 8.0.23 開始,非同步連接故障切換機制還支持組複製拓撲,通過自動監視組成員身份的更改並區分主節點和從節點,在組複製主節點故障選出新主節點後,自動建立到新主的非同步複製連接。

MySQL 8.0.26 開始,組複製可以設置組成員在特定情況下採取的操作,比如成員操作 mysql_disable_super_read_only_if_primary 當選擇一個新的primary時,使處於單主模式的組保持超級只讀模式,這樣該組只接受複製的事務,不接受來自客戶端的任何直接寫操作。

MySQL 8.0.27 開始,非同步連接故障切換機制還允許組複製作為副本,組的主節點發生故障時,新的主節點自動重新連接到源端。新增成員操作mysql_start_failover_channels_if_primary,預設情況下,此成員操作是啟用的,當啟用此成員動作時,在"CHANGE replication SOURCE TO"語句中為複製通道設置SOURCE_CONNECTION_AUTO_FAILOVER=1時,組複製主節點複製通道上的非同步連接故障轉移將激活。

2.架構

MGR B 作為 MGR A 的備份

圖片

本次測試通過搭建2套MGR作為主備集群,進行非同步連接故障切換測試:

(1)當主集群MGR A 的主節點發生故障時,備集群MGR B的主節點能夠實現非同步故障轉移,自動連接MGR A 的新主節點,主備集群同步不斷開,實現數據正常同步。

(2)當備集群MGR B 的主節點發生故障時,MGR B 的新主節點能夠自動啟動複製通道,自動連接MGR A 主節點,主備集群同步不斷開,實現數據正常同步。

(3)設置MGR B成員行為,使處於單主模式的組 MGR B 保持超級只讀模式,這樣該組只接受複製的事務,不接受來自客戶端的任何直接寫。

3.測試

本次測試基於 MySQL 8.0.31,搭建2套MGR集群(單主模式)

3.1 搭建MGR集群

MGR A:

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 44921323-bd95-11ed-8db5-00163e01f842 | 172.17.140.201 |        6002 | ONLINE       | SECONDARY   | 8.0.31         | XCom                       |
| group_replication_applier | 6f904c5c-bd95-11ed-bc79-00163e01f842 | 172.17.140.201 |        6003 | ONLINE       | SECONDARY   | 8.0.31         | XCom                       |
| group_replication_applier | c9e254d3-bd94-11ed-8ae9-00163e01f842 | 172.17.140.201 |        6001 | ONLINE       | PRIMARY     | 8.0.31         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.01 sec)

MGR B:

select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 190f4674-be4a-11ed-9452-00163ea5c598 | 172.17.140.252 |        6005 | ONLINE       | PRIMARY     | 8.0.31         | XCom                       |
| group_replication_applier | 3fa9e064-be4a-11ed-92c7-00163ea5c598 | 172.17.140.252 |        6006 | ONLINE       | SECONDARY   | 8.0.31         | XCom                       |
| group_replication_applier | 6a9691c6-be4a-11ed-8a32-00163ea5c598 | 172.17.140.252 |        6007 | ONLINE       | SECONDARY   | 8.0.31         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)

3.2 創建複製用戶

在MGR A 的主節點創建用於複製的用戶 repl_user

create user repl_user@'%' identified with mysql_native_password by 'abc123';
grant replication slave on *.* to repl_user@'%';
grant select on performance_schema.* to repl_user@'%';

註意:這裡複製用戶需要有 performance_schema 庫的select許可權,主要用於獲取MGR A集群成員的狀態,如果沒有這個許可權,將不能進行非同步連接故障轉移。

3.3停止MGR B的組複製

在MGR B的所有節點停止組複製,可先停止從節點,避免發生節點切換

mysql> stop group_replication;

註意:這裡停止組複製是為了下一步創建非同步複製通道,如果不停止複製通道,在運行正常的MGR B 的主節點執行創建複製通道的語句,會導致從節點退出組,報如下錯誤:

2023-03-09T14:38:51.933981+08:00 17887 [ERROR] [MY-013786] [Repl] Unable to set SOURCE_CONNECTION_AUTO_FAILOVER on a non-existent or misconfigured replication channel 'mgra_to_mgrb', please create the channel and rejoin the server to the group.
2023-03-09T14:38:51.934259+08:00 17887 [ERROR] [MY-013487] [Repl] Plugin group_replication reported: 'A message sent through the Group Replication message deliver service was not delivered successfully. The server will now leave the group. Try to add the server back to the group and check if the problem persists, or check previous messages in the log for hints of what could be the problem.'
2023-03-09T14:38:51.934704+08:00 17887 [ERROR] [MY-011712] [Repl] Plugin group_replication reported: 'The server was automatically set into read only mode after an error was detected.'
2023-03-09T14:38:55.166405+08:00 0 [System] [MY-011504] [Repl] Plugin group_replication reported: 'Group membership changed: This member has left the group.'

3.4創建非同步複製通道

在MGR B的所有節點創建非同步複製通道

change replication source to source_host='172.17.140.201',source_port=6001,source_user='repl_user',source_password='abc123',source_auto_position=1,source_connection_auto_failover=1,source_connect_retry=10,source_retry_count=3 for channel 'mgra_to_mgrb';
  • source_host:MGR A 主節點的IP
  • source_port:MGR A 主節點的埠
  • source_connection_auto_failover=1:表示開啟自動故障轉移功能。
  • source_connect_retry:指定複製副本在與源端的連接超時後重新連接嘗試之間的間隔(秒)。
  • source_retry_count:設置複製副本在連接到源超時後進行的最大重新連接嘗試次數。

3.5配置複製源

在MGR B 的主節點配置複製源

select asynchronous_connection_failover_add_managed('mgra_to_mgrb','GroupReplication','bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb','172.17.140.201',6001,'',90,50);
+-------------------------------------------------------------------------------------------------------------------------------------------------------+
| asynchronous_connection_failover_add_managed('mgra_to_mgrb','GroupReplication','bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb','172.17.140.201',6001,'',90,50) |
+-------------------------------------------------------------------------------------------------------------------------------------------------------+
| The UDF asynchronous_connection_failover_add_managed() executed successfully.                                                                         |
+-------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)

語法:

asynchronous_connection_failover_add_managed(channel, managed_type, managed_name, host, port, network_namespace, primary_weight, secondary_weight)

參數:

  • channel:上面創建的複製通道名稱;
  • managed_type:管理服務的類型,當前可傳入的值必須是GroupReplication;
  • managed_name:管理組的識別符,即group_replication_group_name參數的值;
  • host:源端主機名;
  • port:源端埠號;
  • network_namespace:預留為將來使用,置空;
  • primary_weight:MGR主伺服器的權重,值為1到100,值越大,優先順序越高;
  • secondary_weight:MGR從伺服器的權重,值為1到100,值越大,優先順序越高;

3.6查看配置的用於非同步連接切換的複製源

mysql> select * from performance_schema.replication_asynchronous_connection_failover;
+--------------+----------------+------+-------------------+--------+--------------------------------------+
| CHANNEL_NAME | HOST           | PORT | NETWORK_NAMESPACE | WEIGHT | MANAGED_NAME                         |
+--------------+----------------+------+-------------------+--------+--------------------------------------+
| mgra_to_mgrb | 172.17.140.201 | 6001 |                   |     50 | bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb |
+--------------+----------------+------+-------------------+--------+--------------------------------------+
1 row in set (0.00 sec)

這裡只顯示剛纔配置的一個節點,啟動非同步複製通道後就能看到MGR A所有節點。

3.7啟動 MGR B 組複製

在MGR B 的主節點重新引導啟動組複製

# 選一個節點作為引導節點
set global group_replication_bootstrap_group=ON;
start group_replication;
set global group_replication_bootstrap_group=OFF;

# 其餘節點啟動組複製
start group_replication;

# 查看MGR B集群狀態
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 190f4674-be4a-11ed-9452-00163ea5c598 | 172.17.140.252 |        6005 | ONLINE       | PRIMARY     | 8.0.31         | XCom                       |
| group_replication_applier | 3fa9e064-be4a-11ed-92c7-00163ea5c598 | 172.17.140.252 |        6006 | ONLINE       | SECONDARY   | 8.0.31         | XCom                       |
| group_replication_applier | 6a9691c6-be4a-11ed-8a32-00163ea5c598 | 172.17.140.252 |        6007 | ONLINE       | SECONDARY   | 8.0.31         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)

3.8啟動非同步複製通道

在MGR B的主節點啟動

mysql> start replica for channel 'mgra_to_mgrb';
mysql> show replica status\G
*************************** 1. row ***************************
             Replica_IO_State: Waiting for source to send event
                  Source_Host: 172.17.140.201
                  Source_User: repl_user
                  Source_Port: 6001
                Connect_Retry: 10
              Source_Log_File: binlog.000001
          Read_Source_Log_Pos: 2614
               Relay_Log_File: relaylog-mgra_to_mgrb.000002
                Relay_Log_Pos: 2816
        Relay_Source_Log_File: binlog.000001
           Replica_IO_Running: Yes
          Replica_SQL_Running: Yes
              Replicate_Do_DB: 

非同步複製通道運行正常,至此MGR A 與 MGR B已建立主備關係,MGR A主節點與 MGR B 主節點建立非同步複製通道。

3.9查看配置的用於非同步連接切換的複製源

mysql> select * from performance_schema.replication_asynchronous_connection_failover;
+--------------+----------------+------+-------------------+--------+--------------------------------------+
| CHANNEL_NAME | HOST           | PORT | NETWORK_NAMESPACE | WEIGHT | MANAGED_NAME                         |
+--------------+----------------+------+-------------------+--------+--------------------------------------+
| mgra_to_mgrb | 172.17.140.201 | 6001 |                   |     90 | bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb |
| mgra_to_mgrb | 172.17.140.201 | 6002 |                   |     50 | bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb |
| mgra_to_mgrb | 172.17.140.201 | 6003 |                   |     50 | bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb |
+--------------+----------------+------+-------------------+--------+--------------------------------------+
3 rows in set (0.01 sec)

可以看到這裡顯示了 MGR A的所有節點信息,weight 最高的為主節點

3.10故障模擬:主集群MGR A 的主節點發生故障

(1)查看當前MGR A 信息

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 44921323-bd95-11ed-8db5-00163e01f842 | 172.17.140.201 |        6002 | ONLINE       | SECONDARY   | 8.0.31         | XCom                       |
| group_replication_applier | 6f904c5c-bd95-11ed-bc79-00163e01f842 | 172.17.140.201 |        6003 | ONLINE       | SECONDARY   | 8.0.31         | XCom                       |
| group_replication_applier | c9e254d3-bd94-11ed-8ae9-00163e01f842 | 172.17.140.201 |        6001 | ONLINE       | PRIMARY     | 8.0.31         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)

當前MGR A 主節點為 6001

(2)查看非同步複製信息

登錄MGR B 主節點查看

mysql> show replica status\G
*************************** 1. row ***************************
             Replica_IO_State: Waiting for source to send event
                  Source_Host: 172.17.140.201
                  Source_User: repl_user
                  Source_Port: 6001
                Connect_Retry: 10
              Source_Log_File: binlog.000001
          Read_Source_Log_Pos: 2614
               Relay_Log_File: relaylog-mgra_to_mgrb.000002
                Relay_Log_Pos: 2816
        Relay_Source_Log_File: binlog.000001
           Replica_IO_Running: Yes
          Replica_SQL_Running: Yes
              Replicate_Do_DB: 

當前MGR B主節點 連接的是 MGR A的主節點 6001

(3)模擬MGR A故障

在MGR A主節點執行切主命令,模擬MGR A主節點故障,將6002設置為新主節點

mysql> select group_replication_set_as_primary('44921323-bd95-11ed-8db5-00163e01f842');
+--------------------------------------------------------------------------+
| group_replication_set_as_primary('44921323-bd95-11ed-8db5-00163e01f842') |
+--------------------------------------------------------------------------+
| Primary server switched to: 44921323-bd95-11ed-8db5-00163e01f842         |
+--------------------------------------------------------------------------+
1 row in set (0.04 sec)
mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 44921323-bd95-11ed-8db5-00163e01f842 | 172.17.140.201 |        6002 | ONLINE       | PRIMARY     | 8.0.31         | XCom                       |
| group_replication_applier | 6f904c5c-bd95-11ed-bc79-00163e01f842 | 172.17.140.201 |        6003 | ONLINE       | SECONDARY   | 8.0.31         | XCom                       |
| group_replication_applier | c9e254d3-bd94-11ed-8ae9-00163e01f842 | 172.17.140.201 |        6001 | ONLINE       | SECONDARY   | 8.0.31         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)

(4)查看非同步複製信息

登錄MGR B 主節點查看

mysql> show replica status\G
*************************** 1. row ***************************
             Replica_IO_State: Waiting for source to send event
                  Source_Host: 172.17.140.201
                  Source_User: repl_user
                  Source_Port: 6002
                Connect_Retry: 10
              Source_Log_File: binlog.000001
          Read_Source_Log_Pos: 3343
               Relay_Log_File: relaylog-mgra_to_mgrb.000003
                Relay_Log_Pos: 435
        Relay_Source_Log_File: binlog.000001
           Replica_IO_Running: Yes
          Replica_SQL_Running: Yes
              Replicate_Do_DB: 

可以看到MGR B主節點已經自動進行非同步連接故障轉移,與MGR A新主節點6002建立連接並且連接正常,在此過程中並不需要人為去操作。

3.11故障模擬:備集群MGR B 的主節點發生故障

(1)查看當前MGR B信息

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 190f4674-be4a-11ed-9452-00163ea5c598 | 172.17.140.252 |        6005 | ONLINE       | PRIMARY     | 8.0.31         | XCom                       |
| group_replication_applier | 3fa9e064-be4a-11ed-92c7-00163ea5c598 | 172.17.140.252 |        6006 | ONLINE       | SECONDARY   | 8.0.31         | XCom                       |
| group_replication_applier | 6a9691c6-be4a-11ed-8a32-00163ea5c598 | 172.17.140.252 |        6007 | ONLINE       | SECONDARY   | 8.0.31         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.03 sec)

(2)查看非同步複製信息

  • 登錄MGR B主節點6005
mysql> show replica status\G
*************************** 1. row ***************************
             Replica_IO_State: Waiting for source to send event
                  Source_Host: 172.17.140.201
                  Source_User: repl_user
                  Source_Port: 6002
                Connect_Retry: 10
              Source_Log_File: binlog.000001
          Read_Source_Log_Pos: 3343
               Relay_Log_File: relaylog-mgra_to_mgrb.000003
                Relay_Log_Pos: 435
        Relay_Source_Log_File: binlog.000001
           Replica_IO_Running: Yes
          Replica_SQL_Running: Yes
              Replicate_Do_DB: 

當前MGR B主節點與MGR A新主節點6002 非同步複製連接正常

  • 登錄MGR B從節點6006
mysql> show replica status\G
*************************** 1. row ***************************
             Replica_IO_State: 
                  Source_Host: 172.17.140.201
                  Source_User: repl_user
                  Source_Port: 6001
                Connect_Retry: 10
              Source_Log_File: 
          Read_Source_Log_Pos: 4
               Relay_Log_File: relaylog-mgra_to_mgrb.000001
                Relay_Log_Pos: 4
        Relay_Source_Log_File: 
           Replica_IO_Running: No
          Replica_SQL_Running: No
              Replicate_Do_DB: 

(3)模擬MGR B主節點故障

這裡不能通過對MGR B執行切主命令模擬故障,會報如下錯誤:

mysql> select group_replication_set_as_primary('3fa9e064-be4a-11ed-92c7-00163ea5c598');
ERROR 3910 (HY000): The function 'group_replication_set_as_primary' failed. There is a slave channel running in the group's current primary member.

我們通過停止組複製讓MGR B主節點6005主動退出組,模擬故障

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

(4)查看當前MGR B信息

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 3fa9e064-be4a-11ed-92c7-00163ea5c598 | 172.17.140.252 |        6006 | ONLINE       | PRIMARY     | 8.0.31         | XCom                       |
| group_replication_applier | 6a9691c6-be4a-11ed-8a32-00163ea5c598 | 172.17.140.252 |        6007 | ONLINE       | SECONDARY   | 8.0.31         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
2 rows in set (0.00 sec)

當前MGR B發生切主,新主節點為6006

(5)查看非同步複製信息

登錄MGR B新主節點6006

mysql> show replica status\G
*************************** 1. row ***************************
             Replica_IO_State: Waiting for source to send event
                  Source_Host: 172.17.140.201
                  Source_User: repl_user
                  Source_Port: 6002
                Connect_Retry: 10
              Source_Log_File: binlog.000001
          Read_Source_Log_Pos: 3343
               Relay_Log_File: relaylog-mgra_to_mgrb.000002
                Relay_Log_Pos: 395
        Relay_Source_Log_File: binlog.000001
           Replica_IO_Running: Yes
          Replica_SQL_Running: Yes
              Replicate_Do_DB: 

可以看到MGR B新主節點已經自動進行非同步連接故障轉移,與MGR A主節點6002建立連接並且連接正常,在此過程中並不需要人為去操作。

3.12 設置備集群MGR B為超級只讀模式

配置MGR B集群所有節點為超級只讀模式,避免執行誤操作。預設情況下,MGR單主模式下主節點為讀寫模式,從節點為超級只讀模式。

當一個組只是作為另一個組的備份的時候,只需要執行複製事物就可以了,不需要登錄執行其他客戶端事物,避免造成數據不一致的問題。因此我們可以通過 group_replication_disable_member_action() 函數設置成員操作,將備集群所有節點設置為超級只讀模式,即使切主後選出新的主節點也要保持超級只讀模式。

(1)查看MGR B當前成員操作

mysql> select * from replication_group_member_actions;
+------------------------------------------+------------------------+---------+----------+----------+----------------+
| name                                     | event                  | enabled | type     | priority | error_handling |
+------------------------------------------+------------------------+---------+----------+----------+----------------+
| mysql_disable_super_read_only_if_primary | AFTER_PRIMARY_ELECTION |       1 | INTERNAL |        1 | IGNORE         |
| mysql_start_failover_channels_if_primary | AFTER_PRIMARY_ELECTION |       1 | INTERNAL |       10 | CRITICAL       |
+------------------------------------------+------------------------+---------+----------+----------+----------------+
2 rows in set (0.02 sec)

(2)設置MGR B為超級只讀模式

mysql> SELECT group_replication_disable_member_action("mysql_disable_super_read_only_if_primary", "AFTER_PRIMARY_ELECTION");
+---------------------------------------------------------------------------------------------------------------+
| group_replication_disable_member_action("mysql_disable_super_read_only_if_primary", "AFTER_PRIMARY_ELECTION") |
+---------------------------------------------------------------------------------------------------------------+
| OK                                                                                                            |
+---------------------------------------------------------------------------------------------------------------+
1 row in set (0.04 sec)

註意:這裡執行完此函數後,不會對當前主節點產生影響,當發生切主選擇出新主節點後,會將新主節點設置為超級只讀模式。

(3)停止MGR B主節點

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

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 190f4674-be4a-11ed-9452-00163ea5c598 | 172.17.140.252 |        6005 | ONLINE       | PRIMARY     | 8.0.31         | XCom                       |
| group_replication_applier | 6a9691c6-be4a-11ed-8a32-00163ea5c598 | 172.17.140.252 |        6007 | ONLINE       | SECONDARY   | 8.0.31         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
2 rows in set (0.01 sec)

MGR B新主節點為 6005

(4)查看MGR B新主節點是否進入超級只讀模式

mysql> show variables like 'super_read_only';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| super_read_only | ON    |
+-----------------+-------+
1 row in set (0.05 sec)

mysql> create database tt;
ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement

此時新主節點處於超級只讀模式,不允許用戶執行操作。

4.總結

通過非同步連接故障切換機制,當複製連接出現問題時,不需要人工介入手動去重新建立複製連接,副本會自動進行非同步故障轉移與新的節點建立連接。

非同步複製通道的建立只能在2個MGR集群的主節點上。

5.參考文檔

  1. https://dev.mysql.com/doc/refman/8.0/en/replication-asynchronous-connection-failover.html

  2. https://dev.mysql.com/doc/refman/8.0/en/replication-asynchronous-connection-failover-replica.html

Enjoy GreatSQL

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一 、什麼是中斷 ? 單片機的中斷具有外部中斷和內部中斷,對於中斷的理解很多博主講解得很好,大家可以去學習一下,中斷在單片機的學習過程中是非常重要的內容。 我認為中斷最為簡單的理解就是: 暫停當前的工作,去處理別的工作,別的工作處理完成後再回來繼續完成當前的工作。假如你正在吃飯,媽媽叫你去收衣服,此 ...
  • 對於磁碟和文件系統來講 Buffer對應磁碟數據的緩存,用於讀或寫。 Cache對應文件數據的頁緩存,用於讀或寫。 **Buffer**可以用來聚合多個寫操作,**Cache**則可以理解為預讀操作,文件系統通過這兩種方式提升磁碟IO性能。 對於網路協議來講 只有**Buffer**的概念,該**B ...
  • 當你使用PlatformIO創建STC89C516+項目後,正準備興緻勃勃的開始51單片機的學習。 突然,一個報錯從天而降! ```txt -- Configuring done -- Generating done CMake Error: Running 'D:/JetBrains/CLion ...
  • 先敘述我的問題出現情況: 我在Windows域賬號中使用smb連接Linux伺服器的共用文件夾時報多重連接的錯,報錯具體信息:“不允許一個用戶使用一個以上用戶名與伺服器或共用資源的多重連接。中斷與此伺服器或共用資源的所有連接,然後再試一次。” 查找並測試過但不成功的方法: 1.刪除Windows憑據 ...
  • ![](https://img2023.cnblogs.com/blog/3076680/202307/3076680-20230724164807364-1834666542.png) # 1. 創建固定大小的數據桶 ## 1.1. 數據放入若幹個大小固定的桶(bucket)里,每個桶的元素個數是 ...
  • 一、Mysql體繫結構 1.1、連接層 最上層是一個客戶端和鏈接服務,主要完成一些類似於鏈接處理,授權認證,及相關的安全方案,伺服器也會為安全接入的而每個客戶端驗證它所具有的操作許可權 1.2、服務層 第二層架構主要完成大多數的核心服務功能,如SQL介面,並完成緩存的查詢,SQL的分析和優化,部分內置 ...
  • 在 Percona MySQL 支持團隊中,我們經常看到客戶抱怨複製延遲的問題。當然,這對 MySQL 用戶來說並不是什麼新鮮事,多年來我們在 MySQL 性能博客上發表過一些關於這個主題的文章(過去有兩篇特別受歡迎的文章:"Reasons for MySQL Replication Lag" 和 ...
  • 在MySQL中,刪除表中數據的方式有多種。下麵是一些常用的方式以及它們的優劣勢: 1. 使用DELETE語句: ```sql DELETE FROM table_name; ``` 優勢:DELETE語句是最常見和簡單的刪除數據方式。它可以刪除表中的所有數據或者根據WHERE子句刪除指定條件的數據。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...