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 高可用解决方案。它支持自动故障转移和自动节点加入,可以快速恢复主节点的服务。 以上三种方案都有完美的主节点切换方案,能够在节点故障时自动进行主从切换,保证了系统的可用性和数据的安全性,需要根据实际业务情况选择相应的方案。 |
2
buchikoma 2023-04-19 11:32:14 +08:00
先考虑下为什么会有双写的情况,正常的主从切换只可能会出现短暂的双只读
|
3
han1988 2023-04-19 11:32:14 +08:00
可以用官方的 MySQL InnoDB Cluster 方案啊
|
4
brader 2023-04-19 11:38:04 +08:00
有,用阿里云 /dog ,它号称秒级切换
|
5
yingqiuQAQ OP @buchikoma 不想停写。
|
6
wxcgcy 2023-04-19 13:59:02 +08:00
记得有个双 master 方案,自增主键一个奇数一个偶数,俩都写入也不会引起冲突,可以双向同步
|
7
janwarlen 2023-04-19 14:25:47 +08:00
mysql 分布式部署的场景下,自增 id 不是仅能用来判断对应 db 的表是否有硬删除么,不能用来做其他,或者你们从表结构设计开始,不同 db 的初始 id 不同,然后使用集群数量作为步进,不过玩意扩容或者缩减还是会有问题
|
8
sujin190 2023-04-19 18:41:36 +08:00 via Android
似乎解决尽可能缩短切换时间要比双写简单多了吧,只是几秒不可写其实没你想的那么严重吧
|
10
yingqiuQAQ OP @wxcgcy 对 双写是可以这样搞,最初是这个方案
|
11
buchikoma 2023-04-20 14:21:09 +08:00
@yingqiuQAQ
不想停写就设双主,或者三节点,甚至去开 MGR ,但是你没有管控纯手动运维的话数据一致性又无法保证,性能损耗高,rto 和 rpo 时间也长。所以就是看你取舍,停写去做切换切换是代价最小的实现,再或者可以在 mysql 前面挂个 proxy 做连接保持。。。 |