更新时间:2022-08-12 11:26:34
在进行 MongoDB 分片集群数据库进行备份时,要求分片集群必须满足以下条件:
1、 至少有一个 mongos 节点可以正常访问,如图,在 mongos 服务器上执行命令:mongo --host mongos地址 --port mongos 端口号。

2、 shard 节点和 config 节点的副本集中要至少包括一个 primary 和一个 secondary 节点,其中 shard 副本集须保证 secondary 节点能和 primary 节点保持正常通信。检查方法:依次登录 config 和各个 shard 节点,用户认证通过后,执行命令:rs.status(),如图,分别查看 shard 和 config 副本集中各节点的 stateStr 值。


注意:
•  分片集群的 shard 副本集中有节点 infoMessage 参数为“could not find member to sync from”,或者stateStr参数为“not reachable/healthy”时,请检查对应的 MongoDB 节点是否正常启动,且保证副本集节点所在计算机处于网络互通状态。
•  分片集群备份时,备份 shard 从节点且多个客户端各自打快照进行备份,尽量保证数据的一致性,建议在数据库较少插入或者删除的时候进行备份。

3、 分别登录 mongos 和 shard 的 primary 节点,创建相同的用户名和密码,后续需要使用该用户名进行授权,创建命令如下(用户名和密码可以更改):
use admin
db.createUser({ 
user: "user1", 
pwd: "123456",
roles: [ { role: "root", db: "admin" } ]
})
图 登录 mongos 节点

图 创建授权账号

MongoDB 数据库创建完用户后需要开启 auth 权限,否则不能正确授权。注意副本集、分片集群和单机均需要配置,INI 格式配置文件开启 auth 参数配置请参考图,YAML 格式配置文件开启 auth 参数配置请参考图。
图 INI格式配置文件开启 auth 参数配置

图 YAML 格式配置文件开启 auth 参数配置

注意:
•  目前已知分片集备份恢复所需的 MongoDB 数据库用户最小单角色权限为 ClusterAdmin 权限,若低于该权限可能会出现备份异常或者恢复的数据源不可用的情况,请参考以下说明分配用户权限。
以下为本软件 MongoDB 分片集权限参考(含“+”为组合权限,不含“+”为单角色权限):
备份恢复所需单角色权限:root、clusterAdmin(最小单角色权限)
备份恢复所需组合角色权限:hostManager+clusterMonitor+clusterManager
不可成功备份恢复的角色权限:userAdminAnyDatabase、dbAdminAnyDatabase、hostManager、clusterManager、clusterMonitor、readWriteAnyDatabase、readAnyDatabase、userAdmin、readWrite、Read、readWriteAnyDatabase+userAdminAnyDatabase+dbAdminAnyDatabase.
• 由于 MongoDB local 数据库主要存储副本集的配置信息和操作日志,admin 数据库则主要存储MongoDB 的用户、角色等信息, MongoDB 不建议存储应用业务数据在这两个数据库中。本软件对MongoDB 数据库进行备份时,不保证 local 数据库中应用业务数据的准确性。