MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Docs 菜单
Docs 主页
/
数据库手册

MongoDB 1.8 发布说明

MongoDB 1.8是一个标准的增量生产版本,可直接替代 MongoDB 1.6 ,但以下情况除外:

升级前请通读所有发布说明,确保任何更改都不会影响您的部署。

  1. 下载 v1.8.xMongoDB下载页面上的二进制文件。

  2. 关闭 mongod 实例。

  3. 将现有二进制文件替换为1.8 .x mongod二进制文件。

  4. 重启 MongoDB。

1.8 .x 从节点 可以1.6 从.x 复制初选。

1.6 .x 从节点无法从1.8 .x 复制 初选。

因此,要升级副本集,必须先替换所有从节点,然后替换主节点 (primary node in the replica set)。

示例,假设您有一个副本集,其中包含一个主节点 (primary node in the replica set)节点、一个仲裁节点和多个从节点。 要升级该设立,请执行以下操作:

  1. 对于仲裁节点:

    1. 关闭仲裁节点。

    2. 使用 1.8.x 重新启动MongoDB下载页面上的二进制文件。

  2. 更改配置(可选)以防止选举新的主节点。

    当您开始关闭 节点设立的节点时,有可能会选出新的主节点 (primary node in the replica set)节点。 为防止出现这种情况,您可以在升级之前将所有从节点的优先级设置为0 ,然后再将其改回。 为此,请执行以下操作:

    1. 记录当前配置。 运行rs.config()并将结果粘贴到文本文件中。

    2. 更新配置,使所有从节点都具有优先级0 。 示例:

      config = rs.conf()
      {
      "_id" : "foo",
      "version" : 3,
      "members" : [
      {
      "_id" : 0,
      "host" : "ubuntu:27017"
      },
      {
      "_id" : 1,
      "host" : "ubuntu:27018"
      },
      {
      "_id" : 2,
      "host" : "ubuntu:27019",
      "arbiterOnly" : true
      }
      {
      "_id" : 3,
      "host" : "ubuntu:27020"
      },
      {
      "_id" : 4,
      "host" : "ubuntu:27021"
      },
      ]
      }
      config.version++
      3
      rs.isMaster()
      {
      "setName" : "foo",
      "ismaster" : false,
      "secondary" : true,
      "hosts" : [
      "ubuntu:27017",
      "ubuntu:27018"
      ],
      "arbiters" : [
      "ubuntu:27019"
      ],
      "primary" : "ubuntu:27018",
      "ok" : 1
      }
      // for each secondary
      config.members[0].priority = 0
      config.members[3].priority = 0
      config.members[4].priority = 0
      rs.reconfig(config)
  3. 对于每个从节点(secondary node from replica set):

    1. 关闭从节点。

    2. 使用 1.8.x 重新启动MongoDB下载页面上的二进制文件。

  4. 如果更改了配置,请将其改回原始状态:

    config = rs.conf()
    config.version++
    config.members[0].priority = 1
    config.members[3].priority = 1
    config.members[4].priority = 1
    rs.reconfig(config)
  5. 关闭主节点 (primary node in the replica set)(最后一个 1.6服务器),然后使用 1.8.xMongoDB下载页面上的二进制文件。

  1. 关闭负载均衡器:

    mongo <a_mongos_hostname>
    use config
    db.settings.update({_id:"balancer"},{$set : {stopped:true}}, true)
  2. 对于每个分片

  3. 对于每个mongos

    1. 关闭mongos进程。

    2. 使用 1.8.x 重新启动MongoDB下载页面上的二进制文件。

  4. 对于每个配置服务器:

    1. 关闭配置服务器进程。

    2. 使用 1.8.x 重新启动MongoDB下载页面上的二进制文件。

  5. 打开负载均衡器:

    use config
    db.settings.update({_id:"balancer"},{$set : {stopped:false}})

如果由于任何原因必须移回1.6 ,请反向执行上述步骤。 请注意,在1.8 (最大大小已增加到16 MB)上运行时,请勿插入任何大于4 MB 的文档。 如果有,当服务器尝试读取这些文档时,您会收到错误消息。

使用 后返回1.61.8日志功能正常,因为日志功能不会更改数据文件格式的任何内容。 假设您正在运行启用了日志功能的1.8 .x,并且您决定切换回1.6 。 有两种情况:

  • 如果使用1.8 .x 彻底关闭, 只需使用1.6 mongod 二进制文件重新启动即可。

  • 如果1.8 .x 异常关闭,再次启动1.8 .x 并让日志文件运行以修复崩溃时可能存在的任何损坏(不完整写入)。 然后关闭1.8 .x 干净利落地使用1.6 mongod 二进制文件重新启动。

MongoDB现在支持预写日志,以促进storage engine的快速崩溃恢复和持久性。 启用日志功能后,可以在崩溃后快速重新启动mongod ,而无需修复集合。 聚合管道使聚合成为可能。

稀疏索引是指仅包含包含索引中指定字段的文档的索引。 缺少该字段的文档根本不会出现在索引中。 对于仅包含集合中文档子集的字段的索引,这可以显着减小索引大小

当查询仅选择索引包含的字段时,覆盖索引使 MongoDB 能够完全从索引回答查询。

mapReduce命令支持启用增量更新现有集合的新选项。 以前,MapReduce作业可以输出到临时集合或已命名的永久集合,并用新数据覆盖这些集合。

现在,对于 MapReduce 作业的输出,您有多个选项:

  • 您可以将 MapReduce 输出合并到现有集合中。 如果输出集合中已存在键,Reduce 阶段的输出将替换该现有键。 其他密钥将保留在集合中。

  • 您现在可以使用现有集合的内容重新减少输出。 reduce 阶段输出的每个键都将使用输出集合中的现有文档进行缩减。

  • 您可以将现有输出集合替换为 MapReduce作业的新结果(相当于在以前版本中设置永久输出集合)

  • 您可以内联计算 MapReduce 并将结果返回给调用者,而无需保留作业结果。 这与以前版本中生成的临时集合类似,但结果限制为8 MB。

有关更多信息,请参阅mapReduce文档中的out字段选项。

  • 修复移动较大数据段时的分片迁移问题。

  • 通过后台索引进行持久性修复。

  • 修复大量传入连接的 mongos 并发问题。

  • 自1.7 .x 以来的所有更改 系列。

  • 错误修复。

  • $rename 操作符允许对文档中的字段进行重命名。

  • db.eval() 不要阻止。

  • 使用分片进行地理查询。

  • mongostat --discover 选项

  • 数据段分割增强功能。

  • 副本集为 nat 后面的服务器设置了网络增强功能。

  • 许多分片性能增强。

  • 更好地支持嵌入式数组中基元上的$elemMatch

  • 针对范围查询的查询优化器增强功能。

  • 窗口服务增强功能。

  • 副本设立设置改进。

  • $pull 适用于数组中的基元。

  • 改进了重插入负载时的分片性能。

  • 副本集的从节点延迟支持。

  • local.system.replset.settings.getLastErrorDefaults 用于副本集。

  • shell中的自动完成。

  • 地理搜索的球面距离。

  • 1.6.1和1.6.2中的所有修复。

来年

MongoDB 是什么?

在此页面上