前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql 如何保证数据的一致性(可以借鉴)

Mysql 如何保证数据的一致性(可以借鉴)

作者头像
程序员小王
发布2018-04-12 17:04:56
1.3K0
发布2018-04-12 17:04:56
举报
文章被收录于专栏:架构说架构说

Mysql cluster数据节点组内主从同步采用的是同步复制,

来保证组内节点数据的一致性 原理类似tcp的四次握手

一般通过两阶段提交 (why)协议来实现,一般工作过程如下:

a)Master执行提交语句时,事务被发送到slave,slave开始准备事务的提交。

b)每个slave都要准备事务,然后向master发送OK(或ABORT)消息,表明事务已经准备好(或者无法准备该事务)。

c)Master等待所有Slave发送OK或ABORT消息

如果Master收到所有 Slave的OK消息,它就会向所有Slave发送提交消息,告诉Slave提交该事务;

如果Master收到来自任何一个Slave的ABORT消息,它就向所有 Slave发送ABORT消息,告诉Slave去中止事务。

e)每个Slave等待来自Master的OK或ABORT消息。

如果Slave收到提交请求,它们就会提交事务,并向Master发送事务已提交 的确认;

如果Slave收到取消请求,它们就会撤销所有改变并释放所占有的资源,从而中止事务,然后向Masterv送事务已中止的确认。

f) 当Master收到来自所有Slave的确认后,就会报告该事务被提交(或中止),然后继续进行下一个事务处理。

由于同步复制一共需要4次消息传递,

故mysql cluster的数据更新速度比单机mysql要慢。

所以mysql cluster要求运行在千兆以上的局域网内,节

点可以采用双网卡,节点组之间采用直连方式。

我的理解是两阶段避免主或者备在确认好的情况下又挂了。

如果一个 slave挂了该怎么办呢?请一起来讨论

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Offer多多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档