MongoDB 部署最佳实践

ank*_*itb 6 mongodb

我有一些关于部署最佳实践的问题,以及人们今天如何使用 mongodb。随意添加您能想到的任何其他评论。

  1. 每个 mongod 实例的数据库数量。是建议在单个 mongod 实例中创建多个数据库还是在同一台机器上为不同的数据库运行多个 mongod 的。此外,人们如何为开发和生产环境执行此操作?
  2. 每个集群的理想分片数。如何确定理想的数字?
  3. 推荐的副本集。3个或更多,如何决定?
  4. 备份和恢复的最佳方式。是使用 mongodump 还是其他什么?您还通常在集群/实例级别还是数据库级别上执行此操作?
  5. 克隆数据库或集群。有没有人主动克隆,你是克隆数据库还是整个集群/实例?

小智 4

为了 :

  1. 在一台机器上拥有多个 mongod 实例(除了机器高效的重复设置设置之外)的原因之一是进程范围的写锁。如果您遇到写入锁瓶颈而不是任何硬件资源瓶颈的情况,您可以使用多个 mongod 实例。在所有其他情况下,拥有一个 mongod 进程通常更实用,特别是考虑到它是基于内存映射的存储引擎。
  2. 没有理想的数字。添加分片(几乎)可以线性扩展分片集合的写入和读取性能。这是一个基本的水平扩展解决方案,并遵循此类扩展的规则。
  3. 副本集始终由至少 3 个成员组成,尽管其中 1 个可以是仲裁者(投票但不复制)。如果您添加更多,如果您的应用程序使用带有slaveOk 标记的查询,您将获得读取性能。同样,理想的数量取决于您的用例。
  4. 依靠。大多数人使用某种热备份方案。这里 MySQL 备份约定和 MongoDB 没有区别。
  5. 取决于你想要克隆单个数据库还是整个集群?两者都有详细记录。