MongoDB复制副本,只对一台服务器进行一些写入



我正在开发一个有2台服务器的node.js应用程序。其中一个被认为是production服务器,而第二个被认为为dataAnalytics服务器。

目前,所有数据都被写入production集合,只有一个集合的数据量非常大,只写入dataAnalytics。我还部署了一个每4小时将production同步到dataAnalytics的脚本:

  • 集合P1:production(和dataAnalytics每4h更新一次(
  • collectionP2:production(dataAnalytics每4h更新一次(
  • collectionDA1:dataAnalytics(高音量,不在production中(

在猫鼬中,我用实现了

await mongoose.connect('mongodb://127.0.0.1:27017');
const daCn = await createConnection('mongodb://da.vrack:27017');
const collectionP1 = mongoose.model(new Schema(...));
const collectionP2 = mongoose.model(new Schema(...));
...
const collectionDA1 = daCn.model(new Schema(...));

这运行良好,目前数据正在单独保存。

我想利用mongodb复制。我知道,要创建副本集,需要第三台服务器,甚至希望有一台只包含production数据的备份服务器(没有collectionDA1(。

Q是否可以用这两个服务器(或考虑backup的三个服务器(创建一个副本集,并在dataAnalytics中只保留一些写入?我不确定的是,如果production失败,dataAnalytics开始为主,然后production恢复,但dataAnalytics继续为主,会发生什么。。。我不希望collectionDA1中的所有记录突然开始出现在production服务器中。

在不可能的情况下,有比我所描述的更好的方法吗?

选项1:您也可以只使用两台服务器创建replicaSet,但第二台服务器需要设置为HIDDEN,并且不可用于PRIMARY,但这样您就没有自动故障切换选项。如果PRIMARY出现问题,您需要手动将HIDDEN重新配置为PRIMARY。

选项2:根据您添加的详细信息,最好使用PRIMARY+SECONDARY+ARBITER创建replicaSetdataAnalytics(您的分析应用程序将使用SECONDARY首选读取选项进行读取,您将不时从SECONDARY进行备份(

选项3:创建具有3个成员的replicaSet第一个PRIMARY(读取+写入(,第二个SECONDARY(分析-仅读取(,第三个SECONDARY(备份(。

相关内容

最新更新