关于Mongodb RC的思考

 Mongodb Oplog 和 Journal log 的关系与执行顺序

 

 

 

 就关系来说,op log实际上与数据是一致的概念。

但在有 RC的时候,执行顺序

 

 

w  j 的设置

 如果不设置 j ,则默认是100ms刷盘。

单机

如果宕机,最大丢失100ms的数据

RC

其实没多大关系,只要op log 写成功即可

 

设置w 的个数, 按照NRW原则,如果出现数据丢失的情况应该是喝水塞牙缝的概率,应该是 主宕机概率*从1宕机概率*...*从w(n)宕机概率

 

但在这里会有一个问题,场景是

主宕机,未设置 j

如果 op log 已同步,则该数据有效

如果 op log 未同步,数据无效

实际上和 j 无关, j 有用的地方在于 主重启后的数据恢复,所以可以将主的 j 设为 false ,让它自动刷盘,但将从的 j 设为 true ,可增加一些单点写的效率

 

当仍会有数据不一致的情况,在主宕机期间,从升级为新主,并增加一些数据,如果旧主重启,旧主发现自己有些数据是未同步的,则会回滚该数据。

并将回滚的数据保存至 dbpath/rollback下(好像是这个目录)

 

其实相对于 mysql 的主从,我们应该是不知道有多少数据不同步,处理的情况相对要简单一些

 

猜你喜欢

转载自www.cnblogs.com/dopeter/p/9725108.html