Trình trợ giúp quản trị bộ bản sao được triển khai như thế nào?
rs.*
trình trợ giúp quản trị bộ bản sao
trong mongo
shell là các trình bao bọc cho các lệnh MongoDB mà bạn có thể gửi từ bất kỳ trình điều khiển nào.
Bạn có thể xem (các) lệnh nào mà mỗi trình trợ giúp trình bao bọc bằng cách tham khảo tài liệu MongoDB:
-
rs.initiate()
cung cấp một trình bao bọc xung quanhreplSetInitiate
lệnh cơ sở dữ liệu. -
rs.add()
cung cấp trình bao bọc xung quanh một số chức năng củareplSetReconfig
lệnh cơ sở dữ liệu và trình trợ giúp trình bao mongo tương ứngrs.reconfig()
. -
rs.conf()
kết thúcreplSetGetConfig
lệnh cơ sở dữ liệu.
Lưu ý rằng mongo
trình trợ giúp shell có thể thực hiện thêm một số xác thực hoặc thao tác các cấu hình vì chúng được dự định sử dụng thông qua mongo
tương tác vỏ.
Bạn có thể xác nhận cách bất kỳ trình trợ giúp shell nào được triển khai bằng cách gọi lệnh trong shell mà không kèm theo dấu ngoặc đơn, ví dụ:
> rs.initiate
function (c) { return db._adminCommand({ replSetInitiate: c }); }
Gọi lệnh cơ sở dữ liệu bộ bản sao từ Node.js
Logic tương đương có thể được triển khai thông qua API trình điều khiển Node.js bằng cách sử dụng 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);
});
});
Thay vì thực hiện lại các trình trợ giúp đặt bản sao trong Node.js, bạn có thể gọi một mongo
shell với --eval
lệnh để chạy trình trợ giúp trình bao (mẹo:bao gồm --quiet
để ngăn chặn các thông báo không cần thiết).
Ví dụ:gọi điện từ ứng dụng Node của bạn:
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);
});