mongodb 复制集随机同步数据

记一次MongoDB主从切换,重新同步数据。

副本集架构:

将主节点从105切换到106,
步骤:
107执行 rs.freeze(),
105执行 rs.stepdown()

切换后的环境:

10.0.0.105(secondary)

10.0.0.106(primary)

10.0.0.107 (secondary)

18号晚上开始切换,105的数据重新同步,数据较快同步完了,昨天在建索引,

今天重新同步107的数据,发现了一点小意外,算是有惊无险。

关掉107的mongod进程后,数据开始同步,此时发现105 down了,105的数据自动删除,然后重新开始同步。
此时停掉105,让107同步完。

经过分析,找到了原因:

1.105上的数据并非是看起来同步完了,关掉107的时刻,105还在做同步;

2.105是从107(从节点)上做的同步,并非是从106主节点同步数据;

3.107关掉时候,105发现连接不到107了,就自己删除已经同步的所有数据,然后从106主节点开始同步数据。

总结:mongodb同步有了新的认识,并非都是从主节点同步数据;即使做切换这样一个简单的操作的时候也要慎重,考虑周全。

105上log:

107重做同步完毕

107
[root@107 ~]# sync
[root@107 ~]# free -m
total used free shared buffers cached
Mem: 64454 64287 167 0 305 59896
-/+ buffers/cache: 4085 60369
Swap: 16386 560 15825
[root@107 ~]# echo 3 >/proc/sys/vm/drop_caches
[root@107 ~]# free -m
total used free shared buffers cached
Mem: 64454 56087 8367 0 1 52068
-/+ buffers/cache: 4017 60437
Swap: 16386 560 15825
[root@107 ~]# free -g
total used free shared buffers cached
Mem: 62 54 8 0 0 50
-/+ buffers/cache: 3 59
Swap: 16 0 15
numactl --interleave=all /export/servers/mongodb/bin/mongod --replSet poptask --keyFile /export/data/key/key --port 20011 --dbpath /export/data/mongodb_data/ --logpath /export/data/logs/rs.log --logappend --rest --directoryperdb --maxConns 12000 --fork
root 11095 9799 0 10:51 pts/0 00:00:00 grep mongo
numactl --interleave=all /export/servers/mongodb/bin/mongod -f /export/servers/mongodb/etc/arbiter.cnf
[root@107 ~]#init 6

[root@107 ~]# free -m
total used free shared buffers cached
Mem: 64454 430 64024 0 13 251
-/+ buffers/cache: 166 64288
Swap: 16386 0 16386

107重启后(此时105mongod是停掉的,arbiter启动状态),主节点106降级了,应用不能写了,这算是一个事故。
降级原因,整个副本集一半成员都是down掉的。

106:

105升级操作系统后

http://duoyun.org/topic/51ceaffa0acf7bac02001f4b

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

  1. 哈哈 5

    谢谢分享