Cha*_*ino 6 mongodb node.js docker kubernetes
我想在使用Docker和Kubernetes时通过边车自动设置MongoDb副本集的过程.
以上的设置是不是非常重要的,它归结为是,我需要能够调用蒙戈副本集命令(例如rs.initiate()
,rs.add('anotherserver')
,rs.conf()
,rs.reconfig()
从Node.js应用程式等).
注意:它不必来自节点应用程序,如果有人知道完成同样事情的另一种方式,请分享您的想法.
更新:我能够使这个工作,并使其他人使用的边车开源.
Ste*_*nie 13
该rs.*
副本集管理助手在mongo
外壳的包装MongoDB的命令,你可以从任何驱动程序发送.
您可以通过引用MongoDB文档来查看每个shell帮助程序包装的命令:
rs.initiate()
提供replSetInitiate
数据库命令的包装器.rs.add()
提供了replSetReconfig
数据库命令的一些功能和相应的mongo shell帮助程序的包装器rs.reconfig()
.rs.conf()
包装replSetGetConfig
数据库命令.请注意,mongo
shell帮助程序可能会对配置进行一些额外的验证或操作,因为它们旨在通过交互式mongo
shell使用.
您可以通过在shell中调用命令而不使用尾部括号来确认如何实现任何shell助手,例如:
> rs.initiate
function (c) { return db._adminCommand({ replSetInitiate: c }); }
Run Code Online (Sandbox Code Playgroud)
可以使用command()
以下命令通过Node.js驱动程序API实现等效逻辑:
// 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);
});
});
Run Code Online (Sandbox Code Playgroud)
注意:它不必来自节点应用程序,如果有人知道完成同样事情的另一种方式,请分享您的想法.
您可以mongo
使用--eval
命令来调用shell 以运行shell帮助程序(tip:include --quiet
以禁止不必要的消息),而不是在Node.js中重新实现副本集助手.
例如,从您的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);
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1314 次 |
最近记录: |