Jak zaimplementowani są pomocnicy administratora zestawu replik?
rs.*
pomocników administratora zestawu replik
w mongo
shell to wrappery dla poleceń MongoDB, które możesz wysłać z dowolnego sterownika.
Możesz zobaczyć, które polecenia zawija każdy helper powłoki, odwołując się do dokumentacji MongoDB:
rs.initiate()
udostępnia opakowanie wokółreplSetInitiate
polecenie bazy danych.rs.add()
zapewnia opakowanie wokół niektórych funkcjireplSetReconfig
polecenie bazy danych i odpowiedni pomocnik powłoki mongors.reconfig()
.rs.conf()
opakowujereplSetGetConfig
polecenie bazy danych.
Zauważ, że mongo
Pomocnicy powłoki mogą dokonać dodatkowej walidacji lub manipulacji plikami konfiguracyjnymi, ponieważ są przeznaczone do użycia poprzez interaktywne mongo
powłoka.
Możesz potwierdzić, jak zaimplementowano którykolwiek z pomocników powłoki, wywołując polecenie w powłoce bez końcowych nawiasów, np.:
> rs.initiate
function (c) { return db._adminCommand({ replSetInitiate: c }); }
Wywoływanie poleceń zestawu replik bazy danych z Node.js
Równoważną logikę można zaimplementować za pomocą interfejsu API sterownika Node.js przy użyciu 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);
});
});
Zamiast ponownie zaimplementować pomocniki zestawu replik w Node.js, możesz wywołać mongo
powłoka z --eval
polecenie do uruchomienia pomocnika powłoki (wskazówka:include --quiet
aby pominąć niepotrzebne wiadomości).
Na przykład dzwoniąc z aplikacji Node:
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);
});