我一直在为分片副本集编写备份脚本,它几乎完成了。除了在一切都说完之后,我似乎无法让它成功启动平衡器备份。
这是我试图用来启动平衡器备份的命令;请记住,这是通过 SSH 在实际的 mongos 服务器上运行的。
sudo -s
mongo -u username -p password --authenticationDatabase db
use config
sh.setBalancerState(true)
exit
exit
exit
Run Code Online (Sandbox Code Playgroud)
每当脚本遇到startBalancer
运行上述代码的函数时,我都会收到以下错误。
SyncClusterConnection::udpate prepare failed: mongo-conf-0.foo.bar.com:27019:10276
DBClientBase::findN: transport error: mongo-conf-0.foo.bar.com:27019
ns: admin.$cmd query: { resetError: 1 }
Run Code Online (Sandbox Code Playgroud)
我试过检查mongo
shell 进程的退出状态,使用类似
sudo -s
mongo -u username -p password --authenticationDatabase db
use config
sh.setBalancerState(true)
exit
exit
exit
Run Code Online (Sandbox Code Playgroud)
但不管 mongo-shell 中实际发生了什么,退出代码似乎总是 0。
关于如何在尝试重新启用平衡器之前验证 mongos 进程是否实际连接到所有三个配置的任何想法?我认为问题在于 mongos 服务器在 mongod 进程有机会完成启动之前尝试连接到配置服务器(分片副本集的备份过程的一部分正在关闭其中一个配置服务器)