如题,既然要做双活,数据必须要保持一致性,那可以不可以理解为一主一从?跟着我的理解走,对外提供VIP地址的话,用户读写可不可以做个读写分离?实现分流?出现故障vip能及时飘到slave上面,那么slave的一些配置要发生改变,读写分离也就无法正常运行,全部负载都到slave上,无人值守的情况下怎么实现?
mysql双活跟你说的有点区别就是,你说可能是单个数据中心的模式,如果做双活,肯定是多个数据中心的,还有就是,至于流量的切换可以在应用层这边做分流,至于你说的无人值守,其实在双活的理论上是不需要的,一个数据中心全都出问题,所有的流量走另外的数据中心
收起双主结构配合keepalived解决MySQL主从结构中主库的单点故障;同时通过具体的查询语句提供更细粒度、更为真实的关于主库可用性的判断。
基本思路:
将DB1和DB2做成主动被动模式的双主结构:DB1主动、DB2被动,通过keepalived的VIP对外,将VIP设置成原DB1的IP,保证改造过程对代码透明
关于“数据一致性”和“切换时间”:
连续两次失败以后,通过对主MySQL设置read_only属性,同时kill掉用户线程来保证在DB2接管服务之前,DB1上已经没有写操作,避免主从数据不一致。并且切换时间基本上是可确定的:
30s(两次检测间隔)+2s(等待kill命令时间)+约1s(keepalived 切换VIP),总时间不会超过35s
希望有帮助,谢谢