1

我有三个 EC2 实例,每个实例都有自己的 MongoDB,它们连接在一个副本集中。

因为一个 EFS,可以在多个 EC2 实例之间共享,我想知道三件事......

  1. 如果磁盘上的数据已经在所有三个实例之间有效共享,那么 MongoDB 实例是否仍需要连接到副本集?(我担心的是 Mongo DB 的 RAM 中有什么,每个 Mungo DB 实例都不会“知道”它有什么数据,或者如果直接将数据放入磁盘会省略一个重要的“索引”步骤)

  2. 从性能的角度来看,如果我们只需要向文件系统写入一次,那么最好不要让 MongoDB 将相同的东西 N 次写入 N 个不同的实例?

  3. 为了确保一切都是“安全的”,我是否应该将每个 EC2 实例都安装到自己的 EFS 上,而不关心上述 2 个问题?(在这种情况下,成本将是每 GB 成本的 N 倍)

4

1 回答 1

1
  1. 首先,永远不要这样做。数据库系统通常会锁定它们正在使用的数据文件。这样他们就可以控制何时以及如何将数据实际写入磁盘。您可以通过使用网络文件系统来绕过这种锁定机制,但您不应该这样做。您将面临数据损坏。如果你甚至可以让这个工作摆在首位。

  2. 请参阅第 1 点,您将损坏您的数据。副本旨在提高数据的读取性能和可用性。

  3. 你真的不需要为 Mongo 使用 EFS。如果您需要更高的写入性能,则使用副本和/或分片效果很好。

于 2016-10-04T06:01:34.167 回答