一、双主保证高可用
超过十多年行业经验,技术领先,服务至上的经营模式,全靠网络和口碑获得客户,为自己降低成本,也就是为客户降低成本。到目前业务范围包括了:网站制作、网站建设,成都网站推广,成都网站优化,整体网络托管,微信小程序,微信开发,重庆App定制开发,同时也可以让客户的网站和网络营销和我们一样获得订单和生意!
MySQL数据库集群常使用一主多从,主从同步,读写分离的方式来扩充数据库的读性能,保证读库的高可用,但此时写库仍然是单点。
在一个MySQL数据库集群中可以设置两个主库,并设置双向同步,以冗余写库的方式来保证写库的高可用。
二、并发引发不一致
数据冗余会引发数据的一致性问题,因为数据的同步有一个时间差,并发的写入可能导致数据同步失败,引起数据丢失:
如上图所述,假设主库使用了auto increment来作为自增主键:
三、相同步长免冲突
能否保证两个主库生成的主键一定不冲突呢?
回答:
就能够做到。
如上图所示:
如上图所示,两个主库最终都将包含1/2/3/4/5/6/7/8所有数据,即使有一个主库挂了,另一个主库也能够保证写库的高可用。
四、上游生成ID避冲突
换一个思路,为何要依赖于数据库的自增ID,来保证数据的一致性呢?
完全可以由业务上游,使用统一的ID生成器,来保证ID的生成不冲突:
如上图所示,调用方插入数据时,带入全局***ID,而不依赖于数据库的auto increment,也能解决这个问题。
至于如何生成全局***,趋势递增的ID,参见文章《分布式ID生成算法》。
五、消除双写不治本
使用auto increment两个主库并发写可能导致数据不一致,只使用一个主库提供服务,另一个主库作为shadow-master,只用来保证高可用,能否避免一致性问题呢?
如上图所示:
这个切换由于虚IP没有变化,所以切换过程对调用方是透明的,但在极限的情况下,也可能引发数据的不一致:
如上图所示:
六、内网DNS探测
虚IP漂移,双主同步延时导致的数据不一致,本质上,需要在双主同步完数据之后,再实施虚IP偏移,使用内网DNS探测,可以实现shadow master延时高可用:
七、总结
主库高可用,主库一致性,一些小技巧:
【本文为专栏作者“58沈剑”原创稿件,转载请联系原作者】
新闻名称:MySQL双主一致性架构优化
本文URL:http://www.shufengxianlan.com/qtweb/news9/555059.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联