我C,MySQL双主架构,原来能这么玩( 二 )


使用内网DNS探测,缓解上述问题:
(1)使用内网域名连接数据库,例如:db.kg.org;
(2)主库1和主库2设置双主同步,不使用相同虚IP,而是分别使用ip1和ip2;
(3)一开始db.kg.org指向ip1;
(4)用一个小脚本轮询探测ip1主库的连通性;
(5)当ip1主库发生异常时,脚本delay一个x秒的延时,等待主库2同步完数据之后,再将db.kg.org解析到ip2;
(6)应用程序以内网域名进行重连,即可自动连接到ip2主库,并保证了数据的一致性;
画外音:本质上,这是一个可用性与一致性的折衷 。
 
总结
MySQL主库高可用,主库一致性,一些小技巧:
(1)双主同步是一种常见的保证写库高可用的方式;
(2)设置相同步长,不同初始值,可以避免auto increment生成冲突主键;
(3)不依赖数据库,业务调用方自己生成全局唯一ID是一个好方法;
(4)双主保证写库高可用,只有一个写库提供服务,并不能完全保证一致性;
(5)内网DNS探测,可以实现在主库1出现问题后,延时一个时间,再进行主库切换,以保证数据一致性,但牺牲了几秒钟的高可用;
希望大家有收获,谢转 。
来源公众号:架构师之路
作者:沈剑




推荐阅读