日期:2014-05-16  浏览次数:20430 次

同步一个过期很久的MongoDB副本

登录副本集的主节点运行rs.status()命令看到如下信息:

{
	"_id" : 4,
	"name" : "55.55.55.55:27017",
	"health" : 1,
	"state" : 3,
	"stateStr" : "RECOVERING",
	"uptime" : 502511,
	"optime" : {
		"t" : 1340841938000,
		"i" : 5028
	},
	"optimeDate" : ISODate("2012-06-28T00:05:38Z"),
	"lastHeartbeat" : ISODate("2012-08-22T22:47:00Z"),
	"pingMs" : 0,
	"errmsg" : "error RS102 too stale to catch up"
},

?

虽然MongoDB官方有相关的文档专门处理这种情况,但是我选择使用一个最简单的方式来解决。首先指定数据的存储目录,查看/etc/mongodb.conf文件看到dbpath设置到了/var/lib/mongodb路径,然后停止节点,删除数据目录,重启节点即可。如果使用到了auth则还需要key文件,并且要保证目录存在以及有适当的权限可以让节点顺利运行。

?

下附MongoDB?2.6.0 官方手册