[英]Recovering a replicaSet from a single AMI without full resync
我有一个副本集的单个实例的 AWS AMI 备份。 我想恢复完整的副本集。 副本集配置了 3 个主机(db1.mydomain.com、db2.mydomain.com、db3.mydomain.com)
我尝试了什么:
我的假设是,因为它们都从同一个时间点开始,并且已经是副本集的一部分并且可以互相看到,所以它们只会找到彼此,选择一个主节点并开始工作,但这不会发生,什么我得到的是:
mongo -u <login> -p <password> --authenticationDatabase admin
my-rs:OTHER> rs.status()
{
"ok" : 0,
"errmsg" : "Our replica set config is invalid or we are not a member of it",
"code" : 93,
"codeName" : "InvalidReplicaSetConfig"
}
有什么作用:
sudo service mongod stop
sudo mongod --dbpath /data &
echo -e "use local\ndb.dropDatabase()" | mongo
sudo killall -9 mongod
sudo chown mongod:mongod -R /data
sudo chown mongod:mongod /tmp/mongodb-27017.sock
sudo rm /var/run/mongodb/mongod.pid
sudo service mongod restart
mongo -u <login> -p <password> db1.mydomain.com --authenticationDatabase admin
mongo> rs.initiate({_id: "my-rs", members: [{_id: 0, host: "db1.mydomain.com:27017"}, {_id: 1, host: "db2.mydomain.com:27017"}, {_id: 2, host: "db3.mydomain.com:27017"}]})
这可行,但看起来 db2 和 db3 在 STARTUP2 中停留了几个小时。 感觉就像他们正在从头开始同步到 db1。
有什么方法可以在不删除本地数据库、重新创建副本集并进行完全重新同步的情况下恢复该副本集。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.