数据库学习日常案例20231129-MGR 单主/多主 模式切换及故障演练

1 集群拓扑

10.x.x.6:3308
10.x.x.170:3308
10.x.x.171:3308
当前为单主模式,当前的主节点是10.x.x.6

可以使用如下命令进行查看:

  • 1 select @@group_replication_single_primary_mode;

SHOW STATUS LIKE  'group_replication_primary_member';
SELECT * FROM performance_schema.replication_group_members;   

+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 65beafa1-c03b-11ea- | 10.x.x.171 |        3308 | ONLINE       |
| group_replication_applier | 77bfeed3-c039-11ea- | 10.x.x.170 |        3308 | ONLINE       |
| group_replication_applier | e47ee5c9-c038-11- | 10.x.x.6  |        3308 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
————————————————


2 切换到多主模式操作步骤

#停止复制并修改相关配置

 MGR切换模式需要重新启动组复制,因些需要在所有节点上先关闭组复制,设置 group_replication_single_primary_mode=OFF 等参数,再启动组复制。

# 停止组复制(所有节点执行):

mysql> stop group_replication;
mysql> set global group_replication_single_primary_mode=OFF;
mysql> set global group_replication_enforce_update_everywhere_checks=ON;

# 随便选择某个节点执行-随机选主

mysql> SET GLOBAL group_replication_bootstrap_group=ON; 
mysql> START GROUP_REPLICATION; 
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

# 其他节点执行

mysql> START GROUP_REPLICATION; 
查看状态    

SELECT * FROM performance_schema.replication_group_members; 
SHOW STATUS LIKE  'group_replication_primary_member';
测试多主模式下数据写入,发现三个节点都可以写入

# 模拟多主模式下,某个节点宕机

mysqladmin -u -p  -P3308 -S  /$DIR/mysql.sock   shutdown

查看当前复制组状态

SELECT * FROM performance_schema.replication_group_members; 

再写入一些数据,发现另外两个节点可以正常提供服务

现在把宕机实例171重启,并重新加入复制组
 # 重启之前记得修改配置文件,改为多主模式,因为之前是已单主模式部署的,现在是多主模式,要记得修改配置文件

 loose-group_replication_enforce_update_everywhere_checks = ON
 loose-group_replication_single_primary_mode = OFF

# 启动MySQL实例,并重新加入复制
start group_replication;
# 查看数据,发现故障期间复制组新增数据也已经同步过来

3 切回单主模式

#停止复制修改相关配置

# 所有节点执行

mysql> stop group_replication;
mysql> set global group_replication_enforce_update_everywhere_checks=OFF;
mysql> set global group_replication_single_primary_mode=ON;

# 主节点执行

SET GLOBAL group_replication_bootstrap_group=ON; 
START GROUP_REPLICATION; 
SET GLOBAL group_replication_bootstrap_group=OFF;

# 从节点执行


CHANGE MASTER...           // 如果原来就已经建立好组复制,只是多主且单主,也可能不需要此步骤
START GROUP_REPLICATION; 

select @@group_replication_single_primary_mode;
+-----------------------------------------+
| @@group_replication_single_primary_mode |
+-----------------------------------------+
|                                       1 |
+-----------------------------------------+

SHOW STATUS LIKE  'group_replication_primary_member';
+----------------------------------+--------------------------------------+
| Variable_name                                  | Value                                |
+----------------------------------+--------------------------------------+
| group_replication_primary_member | e47ee5c9-c038-11ea-85e4-6805caafa84c |
+----------------------------------+--------------------------------------+

SELECT * FROM performance_schema.replication_group_members;  
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME| MEMBER_ID  | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 65beafa1-c03b-11e | 10.x.x.171 |        3308 | ONLINE       |
| group_replication_applier | 77bfeed3-c039-11 | 10.x.x.170 |        3308 | ONLINE       |
| group_replication_applier | e47ee5c9-c038-1 | 10.x.x.6  |        3308 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
3 rows in set (0.00 sec)

#模拟单主模式的故障切换

# 将主节点停掉
mysqladmin -u -p  -S /$DIR/mysql.sock    shutdown  
# 在其他节点上查看
SHOW STATUS LIKE  'group_replication_primary_member';

SELECT * FROM performance_schema.replication_group_members; 
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 65beafa1-c03b-11| 10.x.x.171 |        3308 | ONLINE       |
| group_replication_applier | 77bfeed3-c039- | 10.x.x.170 |        3308 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
2 rows in set (0.00 sec)

现在171已经升级为主节点,进行数据写入测试
# 首先在170上执行写入, 170是secondary节点,不能写入
insert into user values(21, 'salt');
ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement
# 在171上执行写入操作
dbadmin@test 03:48:25>insert into user values(21, 'salt');
Query OK, 1 row affected (0.00 sec)
# 在170上执行查询操作,发现数据已经同步过来

将故障实例6恢复,并开启复制
start group_replication;

# 查看复制组状态
SHOW STATUS LIKE  'group_replication_primary_member';
+----------------------------------+--------------------------------------+
| Variable_name                    | Value                                |
+----------------------------------+--------------------------------------+
| group_replication_primary_member | 65beafa1-c03b-11ea-9917-246e96b056b0 |
+----------------------------------+--------------------------------------+

dbadmin@test 04:32:38>SELECT * FROM performance_schema.replication_group_members; 
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 65beafa1-c03b-11ea-9917-246e96b056b0 | 10.x.x.171 |        3308 | ONLINE       |
| group_replication_applier | 77bfeed3-c039-11ea-97bd-246e96bb5434 | 10.x.x.170 |        3308 | ONLINE       |
| group_replication_applier | e47ee5c9-c038-11ea-85e4-6805caafa84c | 10.x.x.6  |        3308 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
3 rows in set (0.00 sec)
# 查看数据,发现宕机期间新增数据已经同步过来

--本文只作参考资料日常学习使用
————————————————
版权声明:本文为CSDN博主「magiclight007」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenglong411/article/details/131066213

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值