• MySQLMGR(三)单主/多主模式切换


    实验演示规划:(3台虚拟机,MySQL版本为8.0.25)

    • 192.168.168.101 master1(简称1节点)

    • 192.168.168.102 slave2   (简称2节点)

    • 192.168.168.103 slave3   (简称3节点)

    在 MGR 中,单主模式是只有一个主节点可以写,其余均为只读节点,且只读节点的 super read only 为打开状态,即使 root 用户依然无法写。多主模式则为全节点均可写。


    01单主切多主

    MGR 单切多使用的命令为:

    select group_replication_switch_to_multi_primary_mode();

    首先我们观察当前集群的模式和各个节点的读写模式:

    select * from performance_schema.replication_group_members;show variables like '%read_only%';

    1节点:

     2节点:

     3节点:

    可以看到,各个节点的读写模式是符合单主模式的。

    接下来我们在任意节点执行切换语句,此处我们在节点 1 上执行。


    select group_replication_switch_to_multi_primary_mode();

     可以看到节点 1 因为一开始就是主节点,所以读写模式没有发生变化,但是节点 2 和节点 3 已经自动关闭了只读模式,所有节点都变成可写。

    多主切单主

    MRG 多主切单主有两条命令可以使用。

    不指定主节点进行切换。

    select group_replication_switch_to_single_primary_mode();

    MGR 中多主切单主,如果不指定主,切换时遵循以下的规则,前提无延迟情况下,按照优先级先后顺序:

    1.先检查集群内是否存在低版本的MySQL,如果所有成员都是 8.0.17 版本以上的,则按照补丁先后顺序排列,如果有成员是 8.0.17 版本以下或者 5.7版本 的,按发行版本的主要版本来排序,忽略补丁编号。

    2.如果集群有任意一个低版本的MySQL,且支持 group_replication_member_weight 这个参数,则根据 group_replication_member_weight 这个权重参数来,group_replication_member_weight。

    默认都是 50,权重越高优先级越高。

    3.如果集群内有不支持 group_replication_member_weight 参数的MySQL,比如MySQL5.7,并且其中一个以上的成员具有最高的成员权重(或忽略了成员权重),则考虑的第三个因素是生成的服务器 UUID 的词典顺序,由 server_uuid 系统变量指定。

    服务器 UUID 最低的成员被选为主服务器,这里实际上就是查询 performance_schema.replication_group_members 最靠前的且是活着的MEMBER_ID。

    在节点 1 上执行非指定单主的切换 SQL:

    可以看到选取了 server_uuid 靠前的节点1成为主节点。

    接下来我们观察各个节点的读写情况:

    1节点:

     2节点:

     3节点:

    可以看到此时节点 1 作为主节点已经关闭了read only,其他节点都已经打开了只读。


    03指定单主切换

    因为随机切有很大的不确定性,这里还提供了指定主节点的切换命令:

    select group_replication_set_as_primary("member_id");

    这里的 member_id 就是 server_uuid,我们在节点 1 执行切换命令,选择2节点的member_id。

    切换后,可以看到节点1打开了只读变成了从节点

     节点2,关闭了只读,成为主节点:

     节点3,不变:

     文章引用自数据和云公众号

  • 相关阅读:
    今天是周日,一如既往的在加班
    懒出来的框架
    把Visio文档中形状信息导出到XML文件的VBA代码
    DataGridView多线程更新数据的问题的解决办法
    为VS定制一个自己的代码生成器
    安装VS2012之后自己开发的自定义工具没法使用问题的解决办法
    通过RSA进行私钥加密公钥解密算法的进一步改进
    程序员在职场 该反思了吗?
    图片与字节数组相互转换的方法
    jQuery Ajax 方法调用 Asp.Net WebService 的详细例子
  • 原文地址:https://www.cnblogs.com/lovezhr/p/15855386.html
Copyright © 2020-2023  润新知