使用数据镜像保护尚未写入完整的数据

云数据库MongoDB提供数据镜像能力,您可以对副本集实例或分片集群实例创建一个只读数据镜像。其中副本集最高支持3TB数据,集群版本最高支持96TB数据。

说明

MongoDB 3.4版本支持数据镜像能力。

使用场景

创建数据镜像,可确保在数据大批量写入更新期间,所有读请求从数据镜像获取数据。从而确保数据在完整写入前不会被应用程序读取到。数据镜像的读取性能与先前非镜像数据的读取性能完全保持一致。

说明

数据更新完成后,可将数据正式同步生效,供应用正常连接读取最新数据。通过阿里云提供的数据镜像操作命令,可实现数据自动同步生效(秒级别同步)。数据同步期间不影响正常数据读取操作。

副本集实例操作方法

  1. 通过mongo shell连接到需要操作的节点(Primary节点或Secondary节点),连接方法请参见mongo shell 连接副本集实例

  2. 创建数据镜像。

    db.runCommand({checkpoint:"create"})
  3. 数据镜像功能使用完毕,删除数据镜像。

    db.runCommand({checkpoint:"drop"})

分片集群实例操作方法

  1. 通过mongo shell连接到分片集群实例中的任意一个mongos,连接方法请参见mongo shell 连接分片集群实例

  2. 创建数据镜像。

    • 在所有ShardPrimary节点上创建数据镜像。

      db.runCommand({runCommandOnShard: "all", "command": {checkpoint:"create"}})
    • 在所有ShardSecondary节点上创建数据镜像。

      db.runCommand({runCommandOnShard: "all", "command": {checkpoint:"create"}, $queryOptions: {$readPreference: {mode: 'secondary'}}})
  3. 数据镜像功能使用完毕,删除数据镜像。

    • 在所有ShardPrimary节点上删除数据镜像。

      db.runCommand({runCommandOnShard: "all", "command": {checkpoint:"drop"}})
    • 在所有ShardSecondary节点上删除数据镜像。

      db.runCommand({runCommandOnShard: "all", "command": {checkpoint:"drop"}, $queryOptions: {$readPreference: {mode: 'secondary'}}})