mongodb – 两个数据中心,连接中断,继续写入,连接返回,同步?

我们有两个数据中心,并且正在从两个数据中心向Mongo写入数据.该集合是分片的,我们在数据中心A中有一个分片的主分区,在数据中心B中有另一个分片的主分片.有时,数据中心之间的连接失败.

我们希望能够继续写两个DATACENTERS.我们写的数据不会发生冲突 – 它们只是添加文档,或者更新不会在两个地方更新的文档.

然后,当连接返回时(有时在几秒钟甚至几分钟内),我们希望数据库很好地处理这种情况并自动更新所有数据.

有人可以告诉我这是否可行?在文档中没有说明当你将副本集分成两个独立的数据库时会发生什么,然后在重新连接它们之前让两者成为主数据库.怎么了?我该如何设置?

最佳答案 我不明白为什么这不会像你已经设置的那样工作,假设你的辅助设备与你的辅助设备在同一个数据中心.

换句话说,如果分片A的主要和辅助副本位于数据中心A,而分片B的主要和辅助副本位于数据中心B,那么您已经在两个数据中心中写入.

如果您现在失去两个数据中心之间的连接,那么数据中心A的客户端将无法读取或写入分片B,数据中心B中的客户端将无法写入分片A,但两个数据中心客户端都无法写入将继续写入与它们在同一数据中心的分片.

那么,这很简单 – 将大部分副本集保留在同一个数据中心,只要该数据中心启动,您就会继续写入该分片.

我有一种感觉,虽然你希望不知何故神奇地从一个断开连接的数据中心的客户端将他们的写入存储在其他数据中心的分片 – 这是不可能发生的 – 他们无法看到其他数据中心.因此,当连接返回时,DB无需处理任何事情(除了在断开连接阶段有一堆写入失败的事实).

点赞