V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
holinhot
V2EX  ›  MySQL

MySQL Group Replication down 机后

  •  
  •   holinhot · 2018-02-28 12:20:09 +08:00 · 3163 次点击
    这是一个创建于 2221 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前用 Group Replication 做热备份用,遇到个问题。

    3 台服务器组成的集群: mysql1 mysql2 mysql3

    其中 mysql1 为 master 提供写入服务,其他节点是从,只读。

    当 mysql1 重启服务器,集群内部 master 会自动漂移,会从集群中移除 mysql1。 此时 mysql1 重启后没有自动再次加入集群,加入集群前是可以直接提供写入。

    那么问题就来了,此时数据全部写入到了 mysql1 两个问题: 问题 1. mysql1 数据和集群不一致了。 问题 2. 因为 mysql1 数据和集群的不一至导致无法再次加入集群。会提示: 2018-02-28T04:10:02.576953Z 0 [Note] Plugin group_replication reported: 'To force this member into the group you can use the group_replication_allow_local_disjoint_gtids_join option'

    当然你可以强制加入集群,但这很容易数据错乱吧。

    如果使用 haproxy 做一个 vip 然全部应用使用这个 vip 连 mysql。

    但 Grroup Replication 的主切换是在 mysql 内部完成的,haproxy 根本无法知道哪台服务器是主。 稍微看了下那个 ProxySQL 原理好像是代理转发的定时检查哪个是主,然后把 sql 查询转发到主。不知道生产稳定性怎么样

    另外我测试了多主模式,数据一致性更难保证。

    另外 ProxySQL 这种定时检测切换的好像也有问题:

    如定时检测为 30 秒,服务器 1,网络中断 10 秒自动脱离集群。但 ProxySQL 检测间隔问题, 正好没有检测出服务器已经脱离集群,而将 sql 语句发至服务器 1,此时服务器 1 已经恢复,但未加入到集群。于是乎问题来了,1 号服务器数据和集群不一致了。数据乱了

    runntuu
        1
    runntuu  
       2018-02-28 15:20:17 +08:00 via iPhone
    1.Group Replication 主切换是在 MySQL 内部完成的,但不意味着你不能对节点状态做检查,你可以写脚本。
    2.不管是 HAProxy 还是 Keepalived,都可以调用脚本,你可以基于上一步的结果来决定将 VIP 漂移至哪个节点。
    所以实现都能实现,只是你对负载均衡工具还不够了解,具体怎么实现去 Google 吧。
    holinhot
        2
    holinhot  
    OP
       2018-02-28 18:10:10 +08:00
    @runntuu 除了对每条 sql 转发前做点状态做检查,不然还是会出现上面的问题:
    如定时检测为 30 秒,服务器 1,网络中断 10 秒自动脱离集群。但 检测间隔问题, 正好没有检测出服务器已经脱离集群,而将 sql 语句发至服务器 1,此时服务器 1 已经恢复,但未加入到集群。于是乎问题来了,1 号服务器数据和集群不一致了。数据乱了
    runntuu
        3
    runntuu  
       2018-03-01 02:10:23 +08:00 via iPhone
    @holinhot 不管是 HAProxy 还是 Keepalived 都有自己的机制来做健康检查,但这个机制并不是你说的定时检测。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3597 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:30 · PVG 18:30 · LAX 03:30 · JFK 06:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.