Hur implementeras administratörshjälparna för replikuppsättningen?
rs.*
replica set admin hjälpare
i mongo
shell är omslag för MongoDB-kommandon som du kan skicka från vilken drivrutin som helst.
Du kan se vilka kommandon varje skalhjälpare lindar genom att hänvisa till MongoDB-dokumentationen:
rs.initiate()
tillhandahåller ett omslag runtreplSetInitiate
databaskommando.rs.add()
tillhandahåller ett omslag runt en del av funktionerna ireplSetReconfig
databaskommando och motsvarande mongo-skalhjälprs.reconfig()
.rs.conf()
omsluterreplSetGetConfig
databaskommando.
Observera att mongo
skalhjälpare kan göra lite extra validering eller manipulation av konfigurationer eftersom de är avsedda att användas via den interaktiva mongo
skal.
Du kan bekräfta hur någon av skalhjälparna implementeras genom att anropa kommandot i skalet utan efterföljande parenteser, t.ex.:
> rs.initiate
function (c) { return db._adminCommand({ replSetInitiate: c }); }
Anropar replikuppsättningsdatabaskommandon från Node.js
Motsvarande logik kan implementeras via Node.js driver API med command()
:
// Rough equivalent of rs.initiate()
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
// Use the admin database for commands
var adminDb = db.admin();
// Default replica set conf
var conf = {};
adminDb.command({replSetInitiate: conf}, function(err, info) {
console.log(info);
});
});
Istället för att omimplementera replikuppsättningshjälparna i Node.js kan du anropa en mongo
skal med --eval
kommando för att köra skalhjälparen (tips:inkludera --quiet
för att undertrycka onödiga meddelanden).
Till exempel, ringa från din Node-app:
var exec = require('child_process').exec;
var rsAdmin = exec('mongo --eval "var res = rs.initiate(); printjson(res)" --quiet', function (error, stdout, stderr) {
// output is in stdout
console.log(stdout);
});