暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何对MGR人为指定主节点

数据老匠 2017-10-29
585

        MySQL5.7的最新版本5.7.20已于2017年10月16日凌晨正式对外发布,除了修复一众BUG以外,在数据复制方面主要修复了两类Bug,一是通过group_replication_member_weight参数设置各群集的节点权重,二是修复了STOP GROUP_REPLICATION引起的read_only的bug,本篇只讲第一点,关于第二点以及仍然存在的问题将在下一章讨论。


如何手工设置集群主节点?

         关于这个问题,恐怕是每一个DBA都十分关心的问题,但5.7.20之前这个问题并没有一个答案,在新的5.7.20中,应该说这个问题已经得到了完美的解决。先看看MySQL官方的解释:

Replication: The group_replication_member_weight variable has been added which enables you to control the election of new primaries in single-primary mode. In previous versions primary election was based on the member's UUID, with the lowest UUID elected as the new primary in the event of fail over. Use this variable to assign numeric weights to members to ensure that specific members are elected, for example during scheduled maintenance of the primary or to ensure certain hardware is prioritised.

意思已经相当明确了,在此之前,如果当前主节点宕掉了,集群在进行fail over时,会选择uuid比较小的的节点作为主节点。这是极不方便的,通常我们会把uuid改写成具有一些意义的值,比如IP为192.168.5.136上的uuid我会改写成

aaaaaaaa-bbbb-cccc-dddd-000000000136,如果如果为了手工指定主节点又去改动这个是极不方便的。

在5.7.20中,通过引入新的参数group_replication_member_weight来设置数据库节点的权重,权重大的当主节点,关于这个参数的属性如下:

Introduced5.7.20
Command-Line Format--group-replication-member-weight=value
System VariableNamegroup_replication_member_weight
Variable ScopeGlobal
Dynamic VariableYes
Permitted ValuesTypeinteger
Default50
Min Value0
Max Value100

可以动态修改其值,可谓相当方便。


开启一个OFFLINE的节点

mysql> set global group_replication_member_weight=60;

mysql> show variables like 'group_replication_member_weight';

mysql> start group_replication;

如果当前节点是OFFLINE状态,即使当前节点的权重再大,也不会改变当前的主节点。


关闭一个ONLINE非主节点

mysql> stop group_replication;

关闭一个ONLINE非主节点,不会改变当前的主节点。


关闭一个主节点MGR

mysql> stop group_replication;

系统将根据各个在线节点的权限重新分配主节点。


文章转载自数据老匠,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论