是否可以在另一台服务器上已使用的数据库文件夹上拥有只读的 MongoDB 实例?

是否可以在另一台服务器上已使用的数据库文件夹上拥有只读的 MongoDB 实例?

我有以下设置:

— 许多服务器

— 一个共享的网络安装数据存储文件夹

在其中一台服务器上,我需要运行 MongoDB 来向其中写入数据。我希望能够在一个实例仍在运行时从其他服务器访问这些写入的数据。是否可以拥有允许这样做的 MongoDB 只读实例?在所有其他服务器上,我不需要写入任何内容,只需读取即可。

答案1

dbPath您不能与多个活动进程共享mongod- 每个进程都需要对数据文件的独占访问权。

对于数据冗余和数据的只读副本,MongoDB 支持副本集部署. 副本集选举一名主要成员接受写入,并且可以有多个只读辅助成员。默认情况下,所有读取和写入都定向到副本集中的当前主节点,但您的驱动程序或应用程序可以使用阅读偏好从辅助成员读取。如果当前主成员不可用,副本集还会根据您的配置支持故障转移。

但是,共享存储对于副本集来说并不理想,因为您将把相同数据的许多副本写入共享存储(可能还具有一些内置的写冗余)。

无论有没有复制,您都应该配置 MongoDB 的基于角色的访问控制 (RBAC)以便您的应用程序能够以适当的权限(如只读访问权限)进行身份验证。MongoDB 安全检查表有一系列需要考虑的安全措施。即使访问仅限于受信任的网络,使用 RBAC 也可以限制意外数据修改的风险,并在 MongoDB 服务器日志中提供一些审计跟踪。

相关内容