【问题标题】:MongoDB one server problems/pittfallsMongoDB 一台服务器问题/陷阱
【发布时间】:2014-11-28 11:04:55
【问题描述】:

我正在使用 MongoDB 开展一个项目,因此请我的服务器经理安装 MongoDB。

我最近在一个旧的 stackoverflow 线程上读到,实际上不建议在单个服务器上运行 MongoDB,因为可能会丢失数据。 我不是真正的专家,我想避免这种情况。 这些问题是否仍然存在,我应该寻找其他解决方案,如远程数据库还是安装它是否安全?

我应该确保我的托管服务器提供商处理哪些陷阱?

【问题讨论】:

  • 这个article 可能有用。
  • 警告:文章描述了 2010 年 7 月 1.5 版本的情况。今天,将近 4 年半之后,我们处于 2.6.5 版本。从那以后发生了很大变化,尤其是在单服务器持久性和默认设置方面。
  • 简单地说,您确实希望拥有至少包含两个数据承载节点和一个仲裁器的副本集用于生产。从数据库端基本消除大部分停机原因是一种相对便宜的方法:维护。我通常建议至少有 3 个数据承载节点,即使在维护工作期间也有冗余。一般来说,您的问题与 SO(针对 programming 问题)有点偏离主题,所以我恳请您将其发布到 dba.stackexchange.com 并在此处删除。我很乐意在那里给出更详细的答案。
  • 我认为这是边界堆栈溢出,因为行为取决于您在代码中执行的操作 - 不设置 j : true 标志会使这是一个不同的问题,并且纯复制不是持久性的答案顾虑,但正如您所指出的,可用性。虽然我同意复制很棒并且应该尽可能地进行,但我想强调的是,单服务器 MongoDB 的耐用性不亚于单服务器 MySQL 或 PostgreSQL 等。我经常使用单服务器部署进行小型/ 爱好项目,三台服务器太贵了。

标签: mongodb server database-installation


【解决方案1】:

警告 - chridam 链接到的文章很危险已过时。

简单地说,,MongoDB 的单服务器部署不再需要担心了。默认情况下,MongoDB 将每 100 毫秒将所有内容写入日志。如果有使用j(日志)选项的写入,则该间隔将缩短到三分之一。不久前,我已经将a longer answer with the gritty details(实际上是两个)发布到了一个类似的问题。

关键是j : true 的写入操作在写入日志之前不会返回(即,预计这些调用平均需要 16 毫秒以上),这正是人们所期望的行为,那就是以及大多数其他数据库的行为方式。

您应该确保您正在使用日志写入问题 (j : true) 并且日志功能未被禁用。此外,由于默认值取决于服务器版本,并且有许多新功能、错误修复和性能改进,因此请确保您获得的是最新版本的 MongoDB(如果服务器运行类似 debian stable 的东西可能不是这种情况)。

【讨论】:

  • 感谢您的回答。只要我有足够的声誉,我就会投票。你的回答很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
相关资源
最近更新 更多