MySQL 主节点切换有完美方案? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yingqiuQAQ
V2EX    程序员

MySQL 主节点切换有完美方案?

  •  
  •   yingqiuQAQ 2023-04-19 11:11:43 +08:00 2915 次点击
    这是一个创建于 909 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 假设数据库写节点在切换过程有双写的短暂状态,如何解决自增主键冲突问题呢
    11 条回复    2023-04-20 14:21:09 +08:00
    Jusekenny
        1
    Jusekenny  
       2023-04-19 11:15:55 +08:00
    帮你问了 chatgpt ,他的回答:
    MySQL 主节点切换一般需要使用主从复制实现高可用,当主节点出现故障时,需要将从节点提升为主节点,以保证系统的可用性。下面介绍一些常用的 MySQL 主节点切换方案:

    1. 基于 MHA 的方案:MHA ( Master High Availability )是一种基于二进制日志流的主从复制自动故障转移和自动故障恢复解决方案。当主节点发生故障时,MHA 会自动将一个从节点切换为新的主节点,适用于高并发场景。

    2. 基于 Galera Cluster 的方案:Galera Cluster 是一个基于 MySQL 复制的开源多主复制技术,能够实现数据同步、数据冲突解决和自动失效检测。在主节点故障时,Galera Cluster 能够自动将一个节点选举为新的主节点。

    3. 基于 Percona XtraDB Cluster 的方案:Percona XtraDB Cluster 是一个基于 Galera 的 MySQL 高可用解决方案。它支持自动故障转移和自动节点加入,可以快速恢复主节点的服务。

    以上三种方案都有完美的主节点切换方案,能够在节点故障时自动进行主从切换,保证了系统的可用性和数据的安全性,需要根据实际业务情况选择相应的方案。
    buchikoma
        2
    buchikoma  
       2023-04-19 11:32:14 +08:00
    先考虑下为什么会有双写的情况,正常的主从切换只可能会出现短暂的双只读
    han1988
        3
    han1988  
       2023-04-19 11:32:14 +08:00
    可以用官方的 MySQL InnoDB Cluster 方案啊
    brader
        4
    brader  
       2023-04-19 11:38:04 +08:00
    有,用阿里云 /dog ,它号称秒级切换
    yingqiuQAQ
        5
    yingqiuQAQ  
    OP
       2023-04-19 11:38:26 +08:00
    @buchikoma 不想停写。
    wxcgcy
        6
    wxcgcy  
       2023-04-19 13:59:02 +08:00
    记得有个双 master 方案,自增主键一个奇数一个偶数,俩都写入也不会引起冲突,可以双向同步
    janwarlen
        7
    janwarlen  
       2023-04-19 14:25:47 +08:00
    mysql 分布式部署的场景下,自增 id 不是仅能用来判断对应 db 的表是否有硬删除么,不能用来做其他,或者你们从表结构设计开始,不同 db 的初始 id 不同,然后使用集群数量作为步进,不过玩意扩容或者缩减还是会有问题
    sujin190
        8
    sujin190  
       2023-04-19 18:41:36 +08:00 via Android
    似乎解决尽可能缩短切换时间要比双写简单多了吧,只是几秒不可写其实没你想的那么严重吧
    sadfQED2
        9
    sadfQED2  
       2023-04-19 19:05:52 +08:00 via Android
    @wxcgcy +1 我们线上就是这种方案
    yingqiuQAQ
        10
    yingqiuQAQ  
    OP
       2023-04-19 20:03:20 +08:00
    @wxcgcy 对 双写是可以这样搞,最初是这个方案
    buchikoma
        11
    buchikoma  
       2023-04-20 14:21:09 +08:00
    @yingqiuQAQ
    不想停写就设双主,或者三节点,甚至去开 MGR ,但是你没有管控纯手动运维的话数据一致性又无法保证,性能损耗高,rto 和 rpo 时间也长。所以就是看你取舍,停写去做切换切换是代价最小的实现,再或者可以在 mysql 前面挂个 proxy 做连接保持。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5923 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 02:40 PVG 10:40 LAX 19:40 JFK 22:40
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86