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 quanhreplSetInitiatelệ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ủareplSetReconfiglệ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úcreplSetGetConfiglệ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);
});