rmo*_*njo 9 replication transparency failover mongodb
我必须设置一个可以处理故障转移的数据库(如果一个崩溃,另一个接管).为此,我决定使用mongodb:我设置了一个包含两个实例的副本集.每个实例都在单独的VM上运行.我有几个问题:
建议在副本集中使用至少3个实例.可以只使用两个吗?
我有两个实例,然后是两个IP地址.我应该为需要在数据库中读/写的应用程序提供哪个IP?当数据库关闭时,请求将如何重定向到仍在运行的实例?
一些帮助入门将是伟大的!
Mat*_*ias 12
建议在副本集中使用至少3个实例.可以只使用两个吗?
不,副本集的最低要求是三个进程(docs),但第三个可能是仲裁者,即使不建议这样做.
我有两个实例,然后是两个IP地址.我应该为需要在数据库中读/写的应用程序提供哪个IP?当数据库关闭时,请求将如何重定向到仍在运行的实例?
您为驱动程序提供了所有地址(有关详细信息,请访问文档),示例包含nodejs驱动程序(与其他地址类似).这样,驱动程序将直接知道所有实例,或至少多于一个实例,这将在所有指定实例都关闭时防止出现问题(参见#2).
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://[server1],[server2],[...]/[database]?replicaSet=[name]', function(err, db) {
});
Run Code Online (Sandbox Code Playgroud)
您为驱动程序提供其中一个(可能是主要的),mongodb将找出其余的.但是,如果您的应用程序在指定的实例关闭时启动,则驱动程序将无法找到其他实例,因此无法连接到mongodb.