Ich habe ein Backup-Skript für Sharded-Replikatsätze geschrieben und es ist fast fertig, außer dass ich es scheinbar nicht dazu bringen kann, den Balancer erfolgreich wieder zu starten, nachdem alles gesagt und getan ist.
Hier ist der Befehl, mit dem ich versuche, den Balancer wieder zu starten. Beachten Sie, dass dies auf dem eigentlichen Mongos-Server über SSH ausgeführt wird.
sudo -s
mongo -u username -p password --authenticationDatabase db
use config
sh.setBalancerState(true)
exit
exit
exit
Ich erhalte immer dann den folgenden Fehler, wenn das Skript die startBalancer
Funktion trifft , die den obigen Code ausführt.
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 }
Ich habe versucht, den Exit-Status des mongo
Shell-Prozesses mit etwas wie zu überprüfen
if (code != 0) {
return next('repeat');
} else {
return next();
}
Unabhängig davon, was tatsächlich in der Mongo-Shell vorkommt, scheint der Exit-Code immer 0 zu sein.
Ideen, wie ich überprüfen kann, ob der Mongos-Prozess tatsächlich mit allen drei Konfigurationen verbunden ist, bevor ich versuche, den Balancer wieder zu aktivieren - ich gehe davon aus, dass dies das Problem ist, dass der Mongos-Server vor dem versucht, eine Verbindung zum Konfigurationsserver herzustellen Der Mongod-Prozess hatte die Möglichkeit, den Startvorgang abzuschließen (ein Teil des Sicherungsprozesses für Sharded-Replikatsätze besteht darin , einen der Konfigurationsserver herunterzufahren ).