在具有多个磁盘的服务器上部署 mongodb 的最佳策略
best strategy for deploying mongodb on servers with multiple disks
我打算设置一个小型 mongodb 测试环境,它由 6 台物理服务器组成,每台服务器有 4 个 SSD。我的期望是最大化 I/O 吞吐量和磁盘 space 利用率。经过一些阅读和搜索,MongoDB 似乎只能为每个实例配置一个数据文件夹。我想到了 3 种可能的解决方案:
- 在每个带有 RAID(例如 RAID5 或 RAID10)的服务器上创建一个大卷。
- 为每台服务器上的每个磁盘创建一个 mongo 分片实例(或分片的副本)。
- 使用“--directoryperdb”参数启动mongo实例将数据库存储在单独的文件夹中,然后使用Linux符号link将数据库文件夹指向其他磁盘。
哪种部署策略是重负载 mongo 生产环境中最推荐的方式?谢谢
- for each disk on each server, create a mongo shard instance (or shard's replica).
您在 post 中没有提及 RAM,但同一服务器上的 运行 多个 Mongo 实例将导致它们竞争 RAM。
- start mongo instance with "--directoryperdb" parameter to store databases in seperate folders, and then use Linux symbol link to point the database folders to other disks.
不需要搞乱符号链接,只需将磁盘挂载到 Mongo 放置每个数据库的目录。
我会选择选项 1 (RAID) 或选项 3(单独磁盘上的数据库),但无论哪种情况,在投入生产之前进行一些基准测试都是个好主意。
我打算设置一个小型 mongodb 测试环境,它由 6 台物理服务器组成,每台服务器有 4 个 SSD。我的期望是最大化 I/O 吞吐量和磁盘 space 利用率。经过一些阅读和搜索,MongoDB 似乎只能为每个实例配置一个数据文件夹。我想到了 3 种可能的解决方案:
- 在每个带有 RAID(例如 RAID5 或 RAID10)的服务器上创建一个大卷。
- 为每台服务器上的每个磁盘创建一个 mongo 分片实例(或分片的副本)。
- 使用“--directoryperdb”参数启动mongo实例将数据库存储在单独的文件夹中,然后使用Linux符号link将数据库文件夹指向其他磁盘。
哪种部署策略是重负载 mongo 生产环境中最推荐的方式?谢谢
- for each disk on each server, create a mongo shard instance (or shard's replica).
您在 post 中没有提及 RAM,但同一服务器上的 运行 多个 Mongo 实例将导致它们竞争 RAM。
- start mongo instance with "--directoryperdb" parameter to store databases in seperate folders, and then use Linux symbol link to point the database folders to other disks.
不需要搞乱符号链接,只需将磁盘挂载到 Mongo 放置每个数据库的目录。
我会选择选项 1 (RAID) 或选项 3(单独磁盘上的数据库),但无论哪种情况,在投入生产之前进行一些基准测试都是个好主意。