最近我在服务器上配了一个 MongoDB 的 replica set(实际用的是 TokuMX 1.5.x),配置方法也很简单(比如参考这里)。因为服务器空闲资源很多,所以搭了一个 primary 加两个 secondary。
客户端配置时,read preference 用的是 nearest。 由于三台机器在同一区域,客户端会负载均衡地从三台机器上读取数据。
周一演示的时候,发现系统有点问题。老数据还好,但新增的修改就非常奇怪:查询结果有时候是修改前的,有时候是修改后的。replica 同步的 delay 是 0,复制集的同步时间也设成了 3 秒,但实际上要等查询结果稳定下来,差不多已经要好几分钟后了。
检查后台没有发现什么异常,只是某个 secondary 从 primary 同步,另一个 secondary 又从第一个 secondary 同步。这看起来也非常合理。后来我随便去掉一个 secondary,换成一个 primary、一个 secondary、一个 arbiter 的格局,发现同步就没有问题了。
总之,很遗憾,没能找到问题的根源,只是做了个 workaround。但还是在这里记录一下,以备参考。
Comments · 5