- Administration >
- Administration Tutorials >
- Backup and Recovery >
- 备份和恢复集群 >
- 使用``mongodump`` 备份小集群
使用``mongodump`` 备份小集群¶
概述¶
如果你的 sharded cluster 数据量较小,可以使用 mongodump 连接到 mongos 备份集群的数据.如果备份可以在能够接受的时间内完成,就可以获得对集群完整的备份.
参见 MongoDB备份方案 和 备份和恢复集群 获得MongoDB与集群的备份信息.
重要
默认情况下, mongodump 不会将查询发送到复制集的主节点.
要通过 mongodump 备份集群中所有的数据库,需要使用 backup 角色.:authrole:backup 拥有备份所有数据库的权限,同时没有任何其他权限,以符合 least privilege 的原则.
要备份一个数据库,需要在指定的数据库上有 read 权限.有一些角色提供了这个权限,比如 backup 角色.
要备份 system.profile 集合,需要在这个数据库的这个集合上有 read 权限.有一些角色提供了这个权限,比如 clusterAdmin 和 dbAdmin .
在 2.6 版更改.
要备份数据库的用户以及 ref:user-defined roles <user-defined-roles> ,需要对 admin 数据库有权限,MongoDB在 admin 数据库中存储了这些信息.
更确切地说,要想备份一个数据库的用户,必须在 admin 数据库的 admin.system.users 集合拥有 find action.:authrole:backup 与 userAdminAnyDatabase 角色都有这种权限.
要备份数据库上用户定义的角色,需要有 admin 数据库上 admin.system.roles 集合的 find 权限.:authrole:backup 与 userAdminAnyDatabase 角色都有这种权限.
注意事项¶
如果在使用 mongodump 时没有指定数据库与集合, mongodump 会备份集合的数据 与 配置服务器 上集群的元信息.
在使用 mongodump 连接:program:mongos 备份数据时不能使用 --oplog 选项,因此,如果要备份指定时间点的数据,需要在备份期间停止集群的写入.