具有 MongoDB 个副本集的 AWS EFS 弹性文件系统
AWS EFS Elastic file system with MongoDB replica set
我有三个 EC2 实例,每个实例都有自己的 MongoDB,并且它们连接在一个副本集中。
因为 EFS 可以在多个 EC2 实例之间共享,所以我想知道三件事...
如果磁盘上的数据已在所有三个实例之间有效共享,Mongo数据库实例是否仍需要连接到副本集? (我关心的是 Mongo DB 的 RAM 中有什么,每个 Mungo DB 实例不会 'know',它有什么数据,或者如果直接将数据写入磁盘会遗漏一个重要的 'indexing'步骤)
从性能的角度来看,如果我们只需要向文件系统写入一次,那么最好不要让 MongoDB 将相同的东西写入 N 个不同的实例?
为了确保一切正常 "safe",我是否应该将每个 EC2 实例安装到其自己的 EFS 上而不关心以上 2 个问题? (在这种情况下,成本将是每 GB 成本的 N 倍)
首先,永远不要这样做。数据库系统通常会锁定它们正在使用的数据文件。这样他们就可以控制数据实际写入磁盘的时间和方式。您也许可以通过使用网络文件系统来绕过这种锁定机制,但您不应该这样做。您将面临数据损坏的风险。如果你能在一开始就让它工作的话。
参见第 1 点,您将损坏数据。副本旨在提高数据的读取性能和可用性。
您确实不需要为 Mongo 使用 EFS。如果您需要更高的写入性能,使用副本,and/or 分片效果很好。
我有三个 EC2 实例,每个实例都有自己的 MongoDB,并且它们连接在一个副本集中。
因为 EFS 可以在多个 EC2 实例之间共享,所以我想知道三件事...
如果磁盘上的数据已在所有三个实例之间有效共享,Mongo数据库实例是否仍需要连接到副本集? (我关心的是 Mongo DB 的 RAM 中有什么,每个 Mungo DB 实例不会 'know',它有什么数据,或者如果直接将数据写入磁盘会遗漏一个重要的 'indexing'步骤)
从性能的角度来看,如果我们只需要向文件系统写入一次,那么最好不要让 MongoDB 将相同的东西写入 N 个不同的实例?
为了确保一切正常 "safe",我是否应该将每个 EC2 实例安装到其自己的 EFS 上而不关心以上 2 个问题? (在这种情况下,成本将是每 GB 成本的 N 倍)
首先,永远不要这样做。数据库系统通常会锁定它们正在使用的数据文件。这样他们就可以控制数据实际写入磁盘的时间和方式。您也许可以通过使用网络文件系统来绕过这种锁定机制,但您不应该这样做。您将面临数据损坏的风险。如果你能在一开始就让它工作的话。
参见第 1 点,您将损坏数据。副本旨在提高数据的读取性能和可用性。
您确实不需要为 Mongo 使用 EFS。如果您需要更高的写入性能,使用副本,and/or 分片效果很好。