OPTIONS
翻译或纠错本页面

使用``mongodump`` 备份小集群

概述

如果你的 sharded cluster 数据量较小,可以使用 mongodump 连接到 mongos 备份集群的数据.如果备份可以在能够接受的时间内完成,就可以获得对集群完整的备份.

参见 MongoDB备份方案备份和恢复集群 获得MongoDB与集群的备份信息.

重要

默认情况下, mongodump 不会将查询发送到复制集的主节点.

要通过 mongodump 备份集群中所有的数据库,需要使用 backup 角色.:authrole:backup 拥有备份所有数据库的权限,同时没有任何其他权限,以符合 least privilege 的原则.

要备份一个数据库,需要在指定的数据库上有 read 权限.有一些角色提供了这个权限,比如 backup 角色.

要备份 system.profile 集合,需要在这个数据库的这个集合上有 read 权限.有一些角色提供了这个权限,比如 clusterAdmindbAdmin .

在 2.6 版更改.

要备份数据库的用户以及 ref:user-defined roles <user-defined-roles> ,需要对 admin 数据库有权限,MongoDB在 admin 数据库中存储了这些信息.

更确切地说,要想备份一个数据库的用户,必须在 admin 数据库的 admin.system.users 集合拥有 find action.:authrole:backupuserAdminAnyDatabase 角色都有这种权限.

要备份数据库上用户定义的角色,需要有 admin 数据库上 admin.system.roles 集合的 find 权限.:authrole:backupuserAdminAnyDatabase 角色都有这种权限.

注意事项

如果在使用 mongodump 时没有指定数据库与集合, mongodump 会备份集合的数据 配置服务器 上集群的元信息.

在使用 mongodump 连接:program:mongos 备份数据时不能使用 --oplog 选项,因此,如果要备份指定时间点的数据,需要在备份期间停止集群的写入.

过程

捕获数据

按照以下操作使用 mongodumpmongos 备份集群数据:

mongodump --host mongos3.example.net --port 27017

如下的 mongodump 会通过 mongos3.example.net 上运行在 27017 端口的 mongossharded cluster 的数据写到 BSON 文件中.

恢复数据

使用 mongodump 备份的数据不包含数据在源集群的分布,也不包含数据块信息,备份的数据中每个数据库都是一个单独的目录,目录中每个集合是一个单独的 BSON 文件.

可以将 mongodump 备份的文件恢复到任意MongoDB实例,包括单机MongoDB,复制集,或者新的集群.在恢复数据到集群之前,必须先将集群部署好.参见 部署一个集群 获得更多信息.