mysql mgr 多主切换单主

多主模式切换为单主模式,主要切换步骤如下

1、停止所有节点mgr和mysql服务

mysql> stop group_replication;
Query OK, 0 rows affected (2.68 sec)
mysql> shutdown;
Query OK, 0 rows affected (1.12 sec)

2、修改my.ini配置文件

loose-group_replication_single_primary_mode=true
##开启单主模式运行
loose-group_replication_enforce_update_everywhere_checks= false
##关闭group replication 强制检查节点写操作

3、启动所有节点的mysql服务

nohup /usr/local/mysql/bin/mysqld_safe  &

4、选择170.17节点作为主节点,执行如下操作

#####将改节点设置为引导节点
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
Query OK, 0 rows affected (0.00 sec)
#####开启组复制功能
mysql> start group_replication;
Query OK, 0 rows affected (2.68 sec)
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;
#####关闭引导节点
Query OK, 0 rows affected (0.00 sec)
#####查询当前group replication内成员
mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 12ed1804-ff04-11eb-810c-0050568f8774 | rac1        |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
1 row in set (0.00 sec)

5、依次开启其他节点group replication功能

#####在节点2、3执行开启group replication功能
mysql> start group_replication;
Query OK, 0 rows affected (2.68 sec)
#####在节点1查询group replication成员状态
mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 12ed1804-ff04-11eb-810c-0050568f8774 | rac1        |        3306 | ONLINE       |
| group_replication_applier | 789c2972-ff04-11eb-b4e1-0050568fa18f | rac2        |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
2 rows in set (0.01 sec)
mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 12ed1804-ff04-11eb-810c-0050568f8774 | rac1        |        3306 | ONLINE       |
| group_replication_applier | 789c2972-ff04-11eb-b4e1-0050568fa18f | rac2        |        3306 | ONLINE       |
| group_replication_applier | 9278af53-ff04-11eb-892d-0050568fd5f5 | rac3        |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
3 rows in set (0.00 sec)

6、验证单主集群

mysql> show global variables like 'group_replication_single_primary_mode';
+---------------------------------------+-------+
| Variable_name                         | Value |
+---------------------------------------+-------+
| group_replication_single_primary_mode | ON    |
+---------------------------------------+-------+
1 row in set (0.00 sec)
mysql> SELECT ta.* ,tb.MEMBER_HOST,tb.MEMBER_PORT,tb.MEMBER_STATE FROM 
    -> performance_schema.global_status ta,performance_schema.replication_group_members tb 
    -> WHERE ta.VARIABLE_NAME='group_replication_primary_member' and ta.VARIABLE_VALUE=tb.MEMBER_ID;
+----------------------------------+--------------------------------------+-------------+-------------+--------------+
| VARIABLE_NAME                    | VARIABLE_VALUE                       | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+----------------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_primary_member | 12ed1804-ff04-11eb-810c-0050568f8774 | rac1        |        3306 | ONLINE       |
+----------------------------------+--------------------------------------+-------------+-------------+--------------+
1 row in set (0.00 sec)

#####尝试在另外两个节点写入数据,抛只读异常
mysql> insert into mm values('a6');
ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement
mysql>

7、测试单主节点故障转移(停止掉170.17上的服务,主节点会转移到其他节点上)

2021-08-18T12:48:30.693676Z 0 [Warning] Plugin group_replication reported: 'Members removed from the group: rac1:3306'
2021-08-18T12:48:30.693733Z 0 [Note] Plugin group_replication reported: 'Primary server with address rac1:3306 left the group. Electing new Primary.'
2021-08-18T12:48:30.693851Z 0 [Note] Plugin group_replication reported: 'A new primary with address rac2:3306 was elected, enabling conflict detection until the new primary applies all relay logs.'
2021-08-18T12:48:30.693922Z 17 [Note] Plugin group_replication reported: 'This server is working as secondary member with primary member address rac2:3306.'
2021-08-18T12:48:30.693996Z 0 [Note] Plugin group_replication reported: 'Group membership changed to rac2:3306, rac3:3306 on view 16292786917612147:4.'
#####group replication检测到rac1异常,并在组内移除了rac1服务器。rac2节点被选举成了新的主节点

#####检查当前主库
mysql> SELECT ta.* ,tb.MEMBER_HOST,tb.MEMBER_PORT,tb.MEMBER_STATE FROM 
    ->     performance_schema.global_status ta,performance_schema.replication_group_members tb 
    ->     WHERE ta.VARIABLE_NAME='group_replication_primary_member' and ta.VARIABLE_VALUE=tb.MEMBER_ID;
+----------------------------------+--------------------------------------+-------------+-------------+--------------+
| VARIABLE_NAME                    | VARIABLE_VALUE                       | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+----------------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_primary_member | 789c2972-ff04-11eb-b4e1-0050568fa18f | rac2        |        3306 | ONLINE       |
+----------------------------------+--------------------------------------+-------------+-------------+--------------+
1 row in set (0.00 sec)

#####在新的主节点,验证数据写入
mysql> insert into db.mm values('a6');
ERROR 1136 (21S01): Column count doesn't match value count at row 1
mysql> insert into db.mm(name) values('a6');
Query OK, 1 row affected (0.19 sec)

mysql> select * from db.mm where name='a6';
+----+------+
| id | name |
+----+------+
| 58 | a6   |
+----+------+
1 row in set (0.00 sec)

mysql>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值