云备份 CBR MongoDB 备份恢复用户指南
1.1 信息收集
在规划与准备使用 CBR 备份 MongoDB数据库前,请您先获取参考文档了解相关内容并收集虚拟化平台信息。
1.1.1 MongoDB数据库信息收集
为防止操作被中断,建议您提前收集好后续操作要使用的MongoDB数据库信息。
表1-1 MongoDB数据库信息收集表
编号 |
信息项 |
目的 |
1 |
MongoDB数据库所在的主机名和IP地址 |
添加虚拟客户端需要输入表1-1所示信息,为后续备份恢复做准备。 |
2 |
MongoDB数据库对应的节点属性和端口号 |
|
3 |
MongoDB数据库的版本信息 |
1.2 客户端检查
进行MongoDB备份与恢复前,为确保可以正常备份,请您先配置基础项。
在创建虚拟客户端前请先检查客户端配置,对照下表自行检查客户端是否已经符合备份条件,如已确认全部符合,可直接进行1.4中操作步骤。如你未完全配置信息项,可参阅1.2.1~1.2.6进行配置。
本软件支持的MongoDB数据库的部署方式有单机模式、副本集模式和分片集群模式,其中1.2.1-1.2.3是每种模式都需要进行的检查项。
表1-2 客户端配置检查
编号 |
信息项 |
目的 |
1 |
MongoDB客户端服务需保持在线状态 |
保证客户端的基础功能可用 |
2 |
设置MongoDB数据目录所在逻辑卷挂载点时,文件/etc/fstab的第一列必须使用设备文件名,不支持以uuid和LABLE形式挂载的MongoDB数据库的备份 |
保证程序异常退出后,客户端机器能够正常挂载逻辑卷 |
3 |
客户端时间需要同步 |
避免因备份的原实例节点客户端系统时间晚于恢复目的端系统时间,导致恢复后MongoDB数据库无法启动 |
4 |
ss命令可用 |
授权和备份时,需要检测虚拟客户端配置的端口 |
5 |
mongo命令可用 |
①恢复时需要使用该命令清理源数据库的本地信息 ②恢复时需要使用该命令初始化副本集 |
6 |
VG剩余空间应至少大于配置的快照卷大小 |
默认快照卷为大小500M,可根据需要调整 |
7 |
MongoDB数据库可正常通过IP地址端口号访问,可以正常插入数据,show dbs命令可以使用 副本集须保证存在可连接的primary节点 分片集群的shard副本集如果配置有secondary节点,须保证shard副本集均至少存在一个primary节点和一个secondary节点,config副本集有primary节点,且有一个mongos节点可以连接 |
保证备份时存在可以备份的节点 |
8 |
MongoDB数据库已添加用户,且已开启auth认证的数据库用户应具备备份恢复所需的最小权限 |
可以正常鉴权 |
9 |
MongoDB数据库YAML类型配置文件需要是unix标准格式 |
可以正常鉴权 |
单机模式是指配置文件中没有副本集配置选项的MongoDB部署模式。如果MongoDB副本集和分片集将所有的节点都部署在一台客户端上,应该按照副本集和分片集群的方式进行备份恢复,而不是采用单机模式的备份恢复方式。
l 备份MongoDB数据库时,客户端应是外接客户端,不支持使用内置客户端。
l MongoDB外接客户端资源配置建议:至少4核CPU和8G内存。
1.2.1 客户端服务、时间检查
1.2.1.1 客户端服务检查
首先需要安装客户端,客户端安装方法,请参考《云备份 CBR 客户端软件安装卸载用户指南》。客户端安装完成后,可以查看客户端的服务是否正常启动,cd到/客户端端安装目录/HBRBackupClient/ClientService目录下,检测命令为./client_cli runner status,全部显示alived表示客户端服务启动正常,或者使用ps -ef|grep esf命令查看客户端服务进程,可以查看到esf进程则说明客户端服务正常。如果客户端服务异常请检查安装过程中是否报错,并重新安装客户端。
1.2.1.2 客户端时间检查
如果需要将实例恢复到MongoDB客户端,备份前需要确认MongoDB数据库的几台机器的时间是否同步。
使用date命令查看当前物理客户端的时间。
针对时间不同步的物理客户端,可以采用date -s 要同步的时间 命令或者ntp 要同步的IP地址。恢复时,如果选择的目的客户端不属于原MongoDB集群,那么也需要调整时间和备份时的客户端时间保持一致。
1.2.2 数据目录挂载方式检查
CBR中,MongoDB数据库备份,需要确认/etc/fstab中,MongoDB数据目录所在逻辑卷的文件系统为设备文件名的形式,使用UUID形式和LABLE形式挂载逻辑卷,可能会导致快照卷没有被程序正常清理掉的情况下,数据目录挂载在错误的逻辑卷上,请备份前请注意检查MongoDB数据目录所在逻辑卷的挂载方式。
1.2.3 客户端命令、VG空间检查
1.2.3.1 客户端命令检查
l 备份执行之前,需检查客户端服务器上是否支持ss和mongo命令。在终端打印ss -h和mongo -h查看,如提示ss和mongo命令不可用,需要安装相关软件。
l MongoDB安装路径是指MongoDB安装包存放位置,使用rpm方式安装可直接跳过该步骤进行下一步操作。
安装ss命令时,需要根据操作系统版本安装下载iproute工具包,命令可参考:
Centos/Red Hat操作系统:yum install iproute
Ubuntu操作系统:apt-get install iproute
SUSE操作系统:zypper install iproute
1.2.3.2 VG空间检查
备份之前需要确认MongoDB数据文件所属的vg剩余空间大小是否充足。备份时会创建MongoDB数据目录所在逻辑分区的快照,快照卷大小默认设置为500M,如果在执行备份过程中变化的数据块数量超过快照卷的大小,会导致备份失败。可参考2.1.1.2快照原理估算快照卷应设置的大小,并据此预留足够的VG空间。
建议VG剩余空间大小为备份LV的10%,以下为查看VG空间方法。
步骤 1 使用df -h命令,根据MongoDB安装位置确定所占用的LV(逻辑分区)。
步骤 2 通过lvs命令查看所属的VG。
步骤 3 最后,通过vgs命令查看VG空闲空间大小。
步骤 4 快照卷大小设置方法:
编辑"/客户端软件安装路径/HBRBackupClient/etc/ClientService/AggregateApp/mongodb_lvbackup.config"文件,将LVM_SNAP_SIZE的值更换为设定值,并去掉行首的"!"。
----结束
1.2.4 MongoDB分片集实例状态检查及账号创建
在进行MongoDB分片集群数据库进行备份时,要求分片集群必须满足以下条件:
l 至少有一个mongos节点可以正常访问,在mongos服务器上执行命令:mongo --host mongos地址 --port mongos端口号。
l 分片集群的shard副本集如果存在secondary节点,shard副本集须保证secondary节点能和primary节点保持正常通信。检查方法:依次登录config和各个shard节点,用户认证通过后,执行命令:rs.status(),分别查看shard和config副本集中各节点的stateStr值。
l 分片集群的shard副本集中有节点infoMessage参数为“could not find member to sync from”,或者stateStr参数为“not reachable/healthy”时,请检查对应的MongoDB节点是否正常启动,且保证副本集节点所在计算机处于网络互通状态。
l 分片集群备份时,备份shard从节点且多个客户端各自打快照进行备份,为尽量保证数据的一致性,建议在数据库较少插入或者删除的时候进行备份。
l 分别登录mongos和shard的primary节点,创建相同的用户名和密码,后续需要使用该用户名进行授权,创建命令如下(用户名和密码请自行更改):
use admin
db.createUser({
user: "user1",
pwd: "******",
roles: [ { role: "root", db: "admin" } ]
})
l 创建授权账号
如果您的MongoDB数据库需要开启auth认证,那么您的MongoDB数据库必须创建至少一个admin库用户才能进行授权。
l 目前已知开启了auth认证的MongoDB分片集群,集备份恢复所需的MongoDB数据库用户最小单角色权限为ClusterAdmin权限,若低于该权限可能会出现备份异常或者恢复的数据源不可用的情况,请参考以下说明分配用户权限。
l 以下为本软件MongoDB分片集权限参考(含“+”为组合权限,不含“+”为单角色权限):
l 备份恢复所需单角色权限:root、clusterAdmin(最小单角色权限)
l 备份恢复所需组合角色权限:hostManager+clusterMonitor+clusterManager
l 不可成功备份恢复的角色权限:userAdminAnyDatabase、dbAdminAnyDatabase、hostManager、clusterManager、clusterMonitor、readWriteAnyDatabase、readAnyDatabase、userAdmin、readWrite、Read、readWriteAnyDatabase+userAdminAnyDatabase+dbAdminAnyDatabase。
l 由于MongoDB local数据库主要存储副本集的配置信息和操作日志,admin数据库则主要存储MongoDB的用户、角色等信息,MongoDB官方不建议存储应用业务数据在这两个数据库中。本软件对MongoDB数据库进行备份时,不保证local数据库中应用业务数据的准确性。
1.2.5 MongoDB副本集实例状态检查及账号创建
副本集备份至少需要有一个primary和secondary节点可以正常访问,在副本集服务器上执行命令:mongo --host 数据库服务地址 --port 数据库服务端口号。
用户认证通过后,执行命令:rs.status(),查看副本集中各节点的stateStr值。
副本集创建用户的方式和分片集群方式相同,请参考1.2.4,不再赘述。
l 开启了auth认证的副本集,备份恢复所需的MongoDB数据库用户最小单角色权限为ClusterAdmin权限,若低于该权限可能会出现备份异常或者恢复的数据源不可用的情况,请按照以下说明分配用户权限。
l 以下为本软件MongoDB副本集权限参考(含“+”为组合权限,不含“+”为单角色权限):
l 备份恢复所需单角色权限:root、clusterAdmin(最小单角色权限)
l 备份恢复所需组合角色权限:hostManager+clusterMonitor(需要手动初始化为副本集)
l 不可成功备份恢复的角色权限:userAdminAnyDatabase、dbAdminAnyDatabase、hostManager、clusterManager、clusterMonitor、readWriteAnyDatabase、readAnyDatabase、userAdmin、readWrite、Read、readWriteAnyDatabase+userAdminAnyDatabase+dbAdminAnyDatabase。
1.2.6 MongoDB单机实例状态检查及账号创建
单机部署模式的数据库服务要能够正常访问,在单机部署模式服务器上执行命令:mongo --host 数据库服务地址 --port 数据库服务端口号。
单机部署模式创建用户的方式和分片集群方式相同,请参考1.2.4,此处不再赘述。
l 目前已知单机部署模式备份恢复所需的MongoDB数据库用户最小单角色权限为ClusterAdmin权限,若低于该权限可能会出现备份异常,或者恢复的数据源不可用的情况,请按照以下说明分配用户权限。
l 以下为本软件MongoDB单机部署模式权限参考(含“+”为组合权限,不含“+”为单角色权限):
l 备份恢复所需单角色权限:root、ClusterAdmin
l 备份恢复所需组合角色权限:hostManager+clusterMonitor
l 不可成功备份恢复的角色权限:dbAdminAnyDatabaseuserAdminAnyDatabase、hostManager、clusterManager、clusterMonitor、readWriteAnyDatabase、readAnyDatabase、userAdmin、readWrite、Read、readWriteAnyDatabase+userAdminAnyDatabase+dbAdminAnyDatabase。
1.3 添加MongoDB虚拟客户端
请您先仔细查阅产品兼容性,确保要添加的MongoDB数据库版本在兼容范围内。
1.3.1 新建MongoDB分片集客户端
步骤 1 租户登录管理控制台,单击左侧导航栏【资源】→ 【客户端】,进入客户端管理页面。单击【新建虚拟客户端】→【MongoDB虚拟客户端】。
步骤 2 选择分片集群客户端,下拉通过【节点属性】和【端口号】配置MongoDB集群的mongos和config节点信息。
步骤 3 在新建MongoDB分片集虚拟客户端时,可以选择一个或多个物理客户端,分片集虚拟集群客户端必须包含所有的mongos和config节点信息。但对于分片集虚拟集群中的单个物理客户端来说,可以不配置任何属性,例如仅安装了shard节点的物理客户端,在新建分片集虚拟集群客户端时需要选中该客户端,但不需要配置任何节点属性和端口号。
当一个物理客户端有多个属性时,可以通过“#”进行属性的拼接,需要注意的是节点属性与端口号必须要一一对应且填写准确。如下表,是当服务器192.168.120.162和192.168.120.163两台服务器上均部署有mongos和config服务节点时,节点属性和端口号的配置方法。以服务器192.168.120.162为例,其配置的两个mongos节点节点属性的端口是35001和35003,配置的两个config节点的端口是36001和36003,那么192.168.120.162的节点属性应为:mongos#mongos#config#config,对应的端口号应为:35001#35003#36001#36003。192.168.120.163配置的mongos节点节点属性的端口是35002,配置config节点的端口是36002,那么192.168.120.163的节点属性应为:mongos #config,对应的端口号应为:35002#36002,shard节点不做任何配置。
表1-3 客户端端口号节点属性分布表
节点属性 |
mongos |
config |
shard1 |
shard2 |
192.168.120.162 |
35001,35003 |
36001,36003 |
37001,37002,37003 |
|
192.168.120.163 |
35002 |
36002 |
|
38001,38002,38003 |
步骤 4 填写完节点属性或端口号后,单击【应用】,添加完所有的节点属性和端口号后单击【确定】,返回新建虚拟客户端界面,单击【创建】,完成MongoDB分片集虚拟客户端创建。
配置实例时请保证实例节点对应的属性和端口号配置正确,否则可能导致备份恢复失败。如已经配置的实例增加或者减少了节点,请重新创建虚拟客户端进行备份恢复。
----结束
1.3.2 新建MongoDB副本集客户端
步骤 1 选择副本集,勾选副本集客户端,下拉通过【端口号】配置MongoDB副本集集群的节点信息。
步骤 2 在新建MongoDB副本集虚拟客户端时,可以选择一个或多个物理客户端。虚拟副本集客户端整体必须包含所有的副本集节点信息。如果一台服务器有多个节点,则可以通过“#”进行端口号的拼接。如下表,表示服务器192.168.120.162上有两个节点服务,服务对应端口号分别是17017和17018,服务器192.168.120.163有三个节点服务,服务对应端口号分别是17019、17020和17021。
表1-4 客户端端口号分布表
客户端IP |
端口号 |
192.168.120.162 |
17017,17018 |
192.168.120.163 |
17019,17020,17021 |
填写完端口号后,单击【应用】,添加完所有的端口号后单击【确定】,返回新建虚拟客户端界面,单击【创建】,完成MongoDB副本集虚拟客户端创建。
注意:配置实例时请保证实例节点对应的端口号配置正确,否则可能导致备份恢复失败。如已经配置的实例增加或者减少了节点,请重新创建虚拟客户端进行备份恢复。
----结束
1.4 管理MongoDB虚拟客户端
1.4.1 查看MongoDB虚拟客户端
步骤 1 租户或操作员登录管理控制台。
步骤 2 单击左侧导航栏【资源】>【客户端】,勾选需要查看的客户端,可查看已经创建的虚拟客户端信息。
----结束
1.4.2 编辑MongoDB虚拟客户端
选择已创建的虚拟客户端,单击【编辑】,其中客户端名称、代理客户端均支持编辑。编辑后单击【修改】,即可编辑成功。
1.4.3 MongoDB虚拟客户端授权
步骤 1 选择虚拟客户端,单击右上角【权限配置】,单击MongoDB数据库图标。
步骤 2 单击虚拟客户端名称前面的【+】,直至展开自动发现的实例,单击【未授权】或【已授权】。
步骤 3 在授权弹框中,默认开启访问控制,该选项适用于开启了auth认证的MongoDB数据库。输入集群实例的用户名、密码,单击【确定】,输入的用户需要提前在对应的MongoDB数据库中创建,且开启auth认证的用户应对库“admin”具有最低权限。单机部署模式客户端授权方式和虚拟客户端授权方式相同,可参考前两步。
如果数据库未开启auth认证,请关闭访问控制开关并直接单击确定完成授权。
注意:l 单机部署模式客户端授权需要手动输入端口号,输入的端口号和选择的实例的端口号请保持一致。
l 单击【确定】前可以先单击实例授权界面左下角的【测试】,验证输入的信息是否正确。
l 如需重复授权,请确认数据库节点状态和首次授权时状态一致,否则可能导致备份失败。
l 访问控制开关状态须和后台MongoDB数据库的访问控制台状态一致,否则会导致授权失败。
----结束
1.4.4 删除MongoDB虚拟客户端
步骤 1 选择虚拟客户端,单击【删除】,在信息确认框中输入【YES】,点【删除】即可删除虚拟客户端。
----结束
1.5 限制性功能
1.5.1 备份
l 设置MongoDB数据目录所在逻辑卷挂载点时,文件/etc/fstab的第一列必须使用设备文件名,不支持以uuid和LABLE形式挂载逻辑卷的MongoDB数据库的备份
l 暂不支持增量备份、差异备份。
l 一个MongoDB虚拟客户端只能新建一个备份任务。
l 集群内部进行数据迁移时,无法进行备份。可以通过设置对应的balancer窗口,在规定时间内允许迁移,在窗口之外则进行备份。
l 正在执行备份的节点断网,会导致执行中的任务无法停止,需要重新联网或执行任务停止工具。
l 正在执行备份的节点下电,会导致执行中的任务无法停止,需要重新上电或执行任务停止工具。
l 不支持用户名密码含有“\”符和中文字符的MongoDB数据库备份恢复
l 编辑单机备份任务数据源后未删除多余数据源,会造成恢复失败,需要删除至只剩余一个可用数据源后发起备份
1.5.2 恢复
实例恢复时,源实例和目标实例必须保持MongoDB数据库版本、操作系统一致,分片集群实例的恢复,还需保持源实例和目标实例分片数量一致。
1.5.3 其他
l MongoDB实例的数据文件必须存储在LVM(Logical Volume Manager)系统的逻辑分区上。
l 分片集群备份前,需要在mongos和shard的primary节点上基于admin库创建同样的用户名和密码,后续使用该用户名和密码进行授权,如果数据库开启了auth认证,该用户需要拥有库“admin”的最小权限。
l 客户端服务器上必须支持以下命令:
ss/mongod/mongos
l 目前支持单机/副本集/分片集实例的备份,不支持主从复制架构的MongoDB数据库的备份。
2 MongoDB 定时备份
2.1 关于备份
CBR将使用物理备份的方式备份MongoDB数据库。关于备份原理的具体内容,请您参考2.1.1 备份原理。
CBR对MongoDB数据库进行的备份属于无代理备份,有关外接客户端的相关内容,请参考1.2 客户端检查做好客户端环境检查。
下表为MongoDB数据库定时备份恢复支持功能
表2-1 MongoDB数据库定时备份支持功能
功能 |
子功能 |
支持 |
备注 |
备份 |
完全备份 |
√ |
备份粒度:整个数据库 |
数据源自动发现 |
√ |
- |
|
数据保留策略 |
按时间保留 |
√ |
- |
按副本数保留 |
√ |
- |
|
按备份策略的备份周期设置副本保留策略 |
√ |
- |
|
传输与存储加密 |
- |
√ |
- |
数据压缩 |
- |
√ |
- |
流量控制 |
- |
√ |
- |
重复数据删除 |
- |
√ |
- |
备份自动重试 |
- |
√ |
- |
告警 |
- |
√ |
- |
日志 |
- |
√ |
- |
远程复制 |
- |
√ |
- |
内外网 |
- |
√ |
- |
云备份存储库 |
- |
√ |
详见《云备份 CBR D2C 用户指南》 |
磁带 |
- |
√ |
- |
2.1.1 备份原理
2.1.1.1 备份流程
CBR备份 MongoDB数据库,原理如下(以三节点副本集为例):
步骤 1 管理控制台启动备份任务。
步骤 2 控制台向各物理客户端的发送备份命令,各个客户端查找本机节点是否为Primary(主)节点,如果不是Primary(主)节点,该节点备份任务结束。
步骤 3 Primary(主)节点所在客户端获取MongoDB数据目录所在的文件系统,为该文件系统创建快照卷并挂载到一个临时目录。
步骤 4 客户端传输该临时目录的数据到存储服务器。
步骤 5 客户端完成备份,上报任务备份情况到管理控制台,结束整个备份任务。
MongoDB分片集群的备份原理和副本集相同,但需注意分片集群备份的是config和shard副本集的Secondary节点的数据。
----结束
2.1.1.2 快照原理
MongoDB备份是基于LVM快照的物理备份。
以下为和LVM快照相关的概念:
PV(physical volume):物理卷,在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。
VG(volume group):卷组,建立在物理卷上,卷组建立后可动态的添加卷到卷组中。
LV(logical volume):逻辑卷,建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷。
PE(physical extent):物理区域,是物理卷中可用于分配的最小存储单元。
LV由元数据和数据组成。当快照卷创建的时候,仅拷贝元数据,并不拷贝数据,生成位图记录原始卷的数据变化。
当快照卷刚刚创建的时候,备份数据为空,位图记录对应数据块数值均为0。当原LV有数据要写入时,检查位图记录数据为0,拷贝对应数据块的数据到快照卷的备份数据区,并将该位图的对应数值置为1,然后才对要原LV进行写操作。
假设原LV数据块1要再次进行写操作,此时读取位图中数据块1的值为已经被置为1,就不再备份数据到快照卷中,直接对原LV数据块1进行写操作,所以如果只对一个数据块进行多次写操作,也只是备份一次数据到快照卷中。假设原LV数据块2要进行写操作,位图中对应的值为0,还是需要备份对应的数据块到快照卷的备份数据区,并将该位图的对应数值置为1。
由上,快照卷中存的数据块都是原LV发生变化前的数据,即打快照时刻的数据。所以利用快照卷备份时,原LV没有变动的数据块直接进行备份,变动了数据块也在快照卷中有备份数据,保证了数据的一致性。
如果快照卷中备份的数据量超过快照卷本身大小的时候,快照卷就会失效。当MongoDB数据发起备份后,找到备份节点的数据目录所在的LV进行快照,在备份过程中,快照卷失效的时长受以下因素影响:
l 备份时长。备份时长越长,数据变动的概率越高,快照卷失效的概率越高。
l 变动的数据块数量。在备份过程中,变动的数据块数量越多,快照卷越容易失效。
l 快照卷的大小。快照卷较小时,数据块变动量不是很大时快照卷也可能失效,当快照卷设置为和原LV一样大时,虽然可以保证快照卷不失效,但是会造成资源浪费。推荐快照卷大小设置为原LV容量的10%。
请根据以上原理,合理配置MongoDB快照卷大小。
2.1.2 备份方式
CBR 备份MongoDB数据库的备份方式仅支持完全备份。
完全备份将选定数据源的有效数据备份到指定的介质中并产生一个时间点,用于记录备份的内容。
2.1.3 数据保留策略
当您的管理控制台上存在大批量的备份任务时,您可能会遇到备份存储空间不够用的情况。数据保留策略将为您解决这类烦恼,一旦您按需配置数据保留策略后,系统将根据数据保留期限、保留副本个数或备份策略的备份周期来保留备份副本,达到备份存储空间循环利用的效果。同时,CBR 也支持同一个数据保留策略关联不同备份任务,为您减少维护多个备份任务的工作量。
CBR 为您提供以下三种数据保留策略:
l 数据保留期限:超过设置时间的副本将被自动清理。
l 保留副本个数:超过设置个数的副本将被自动清理。
l 按备份策略的备份周期设置副本保留策略:与备份策略结合使用,根据不同的备份策略设置不同的副本保留数。
2.1.3.1 新建策略
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【策略】→【备份数据保留策略】,进入“数据保留策略”界面;
步骤 2 在当前界面,单击【新建】按钮,系统弹出“新建数据保留策略”对话框。
步骤 3 在对话框中,根据要求配置如下参数:
1. 名称:输入数据保留策略的名称。
2. 数据保留策略:默认关闭,须开启后才能继续配置。
3. 数据保留期限:默认保留 1 年的备份副本,即从使用该策略开始到 1 年后,这期间产生的副本将被保留,超过 1 年的副本将被自动清理。
数据保留期限配置参数范围为 1~999;可以选择年、月、周、天为单位。
4. 保留副本个数:默认保留 2 个副本,即同一备份任务的副本超过 2 个后,最旧的副本将被自动清理。保留副本个数配置参数范围为 1~1024。
5. 按备份策略的备份周期设置副本保留策略:
如果备份策略是按天设置,则默认保留 30 个副本。
如果备份策略是按周设置,则默认保留 24 个副本。
如果备份策略是按月设置,则默认保留 12 个副本。
如果备份策略是按年设置,则默认保留 4 个副本。
按照备份策略的备份周期所有参数配置范围均为 1~99999。
只有当任务使用对应备份周期的备份策略后,副本保留策略才生效。
未勾选复选框,则默认保留所有副本。
勾选复选框,但任务没有使用此备份周期的备份策略,则保留自动发起的所有副本。
例如:启用 “按年备份策略”,但任务使用的备份策略没有年度备份策略,则保留所有备份策略自动产生的全部副本。
如果某一个备份周期的备份策略存在多个,则保留副本数为此类备份周期的所有备份策略产生的副本累加。
例如:任务关联了 4 个年度备份策略,则最终将保留 1 年内的 4 个副本。
步骤 4 确认无误后,单击【确定】按钮完成操作。
----结束
2.1.3.2 备份任务关联/移除策略
数据保留策略新建完成后,您必须将其应用到备份任务上才可以生效。如果应用了某数据保留策略的任务不再需要此,您也可以选择移除。
注意事项
l 每个备份任务仅支持添加一个数据保留策略,重复添加后系统将默认使用最近一次添加的模板。
l 正在运行中的备份任务不支持添加和移除数据保留策略,请您耐心等待任务运行结束后再添加或移除。
操作步骤
步骤 1 操作员或租户登录管理控制台,在备份任务页面,选中一个或多个状态为“未启动”的任务,单击【策略】→【添加数据保留策略】,系统弹出“添加数据保留策略”对话框。
步骤 2 在对话框中,选择一个适合该任务的数据保留策略。如果任务之前已经配置过其他策略,这次新的模板将替代旧的策略重新生效。
步骤 3 确认无误后,单击【确定】按钮完成操作。
步骤 4 备份任务添加策略后,数据保留策略即刻生效。
步骤 5 如果您想要移除策略,请在 “备份” 界面,选中一个或多个已配置策略且状态为 “未启动”的任务,单击【策略】→【移除数据保留策略】,系统弹出“提示”对话框。
步骤 6 确认无误后,单击【确定】按钮完成操作。
备份任务移除策略后,数据保留策略即刻失效。
----结束
2.1.3.3 编辑策略
如果您需要对当前已有的数据保留策略相关配置做修改,您可以执行以下操作编辑数据保留策略。
注意事项
如果数据保留策略绑定的任务正在运行中,您将无法编辑该。请您耐心等待任务运行结束后再编辑。
操作步骤
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【策略】→【备份数据保留策略】,进入“数据保留策略”界面。
步骤 2 在当前界面,选中一条数据保留策略,单击【编辑】按钮,系统弹出“编辑数据保留策略”对话框。
步骤 3 在对话框中,您可以关闭数据保留策略,也可以修改数据保留策略条件。名称暂不支持修改。
步骤 4 确认无误后,单击【确定】按钮完成操作。
----结束
2.1.3.4 删除策略
如果您不再需要某数据保留策略,您可以执行以下操作删除数据保留策略。
注意事项
l 如果数据保留策略绑定的任务正在运行中,您将无法删除该。请您耐心等待任务运行结束后再删除。
l 支持批量删除,您可以同时删除多个数据保留策略。
操作步骤
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【策略】→【备份数据保留策略】,进入“数据保留策略”界面。
步骤 2 在当前界面,选中一条或多条数据保留策略,单击【删除】按钮,系统弹出“提示”对话框。
步骤 3 确认无误后,单击【确定】按钮完成操作。
----结束
2.1.3.5 复制策略
如果您想复用某策略,并修改个别参数时,为了简便操作,您可以复制数据保留策略。
注意事项
l 复制的数据保留策略与原保留策略配置相同,如果您需要修改,请使用编辑功能。
l 复制的数据保留策略必须进行重命名。
操作步骤
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【策略】→【备份数据保留策略】,进入“数据保留策略”界面。
步骤 2 在当前界面,选中一条数据保留策略,单击【复制】按钮,系统弹出“复制数据保留策略”对话框。
步骤 3 在对话框中,根据要求输入数据保留策略的名称。
步骤 4 确认无误后,单击【确定】按钮完成操作。
----结束
2.1.4 备份策略
当您的管理控制台上存在大批量的备份任务时,为减少您维护多个备份任务的工作量,CBR 支持为备份任务统一关联同一个备份策略。
2.1.4.1 新建备份策略
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【策略】→【备份策略】,进入“备份策略”界面。
步骤 2 在当前界面,单击【新建】按钮,系统弹出“新建备份策略”对话框。
步骤 3 在对话框中,根据要求配置如下参数:
1. 备份策略名称:输入备份策略的名称。
2. 备份周期:默认为每1天,即每天发起一次备份。
− 当备份周期为天,支持的配置参数范围为1~365。
− 当备份周期为周,默认为每周日发起备份,支持选择周一~周日且支持多选。
− 当备份周期为月,默认每月1日发起备份,支持的配置参数范围为1~31。您可以选择“若当月无选定日期则在最后一天触发”。
− 当备份周期为年,默认每年1月1日发起备份,支持选择具体日期发起备份。
3. 重复发起:默认不开启,开启该项,则在任务第一次发起后,系统将按照所设定的持续时间和频率进行重复发起。
重复发起遵循以下原则:
− 持续时间和频率均支持以分钟或小时为单位。
− 如果以分钟为单位,持续时间的配置参数范围为2~59,频率的配置参数范围为1~58。
− 如果以小时为单位,持续时间的配置参数范围为2~24,频率的配置参数范围为1~23。
− 支持持续时间和频率单位不同,但频率必须小于持续时间。
如果在持续时间内达到了频率时间,且上一个备份任务还没有停止的情况下,系统不会发起备份。
----结束
2.1.4.2 删除备份策略
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【策略】→【备份策略】,进入“备份策略”界面。
步骤 2 在当前界面,选中一条或多条备份策略,单击【删除】按钮,系统弹出“提示”对话框。
步骤 3 仔细阅读警告内容:“删除策略后,使用该策略的任务将不再按照该策略执行,仍要继续删除吗?”确认无误后,单击【删除】按钮完成操作。
l 删除备份策略后,使用该策略的任务将不再按照该策略执行。请谨慎操作。
l 支持批量删除,您可以同时删除多个备份模板
----结束
2.1.4.3 导出/导入备份策略
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【策略】→【备份策略】,进入“备份策略”界面。
步骤 2 在当前界面,选中一条或多条备份策略,单击【导出】按钮,备份策略将以“.xls”格式保存至本地。
步骤 3 导出后的表格内容如下。
l name:备份策略的名称。
l type:备份策略的类型。
l needInterval:重复发起功能,开启显示为“1”,不开启显示为“0”。
l duration:重复发起中的持续时间。
l durationUnit:持续时间的单位,单位为分钟显示为“1”,单位为小时显示为“2”。
l frequency:重复发起中的频率。
l frequencyUnit:频率的单位,单位为分钟显示为“1”,单位为小时显示为“2”。
l params:备份周期选项的参数值。
l auther:新建该备份策略的用户。
l createdTime:创建该策略的时间。
l updateTime:更新该策略的时间。
步骤 4 如果需要导入策略,请您在本地先根据下载的文档格式编辑好策略的参数。确认无误后,在管理控制台的“备份策略”界面,单击【导入策略】按钮。系统弹出“导入备份策略”对话框。
步骤 5 在对话框中,单击【浏览】按钮,选择需要导入的策略。确认无误后,单击【确定】按钮完成操作。
步骤 6 导入成功后,“备份策略”界面将显示导入的策略。
----结束
2.1.4.4 复制备份策略
如果您想复用某个备份策略,并修改个别参数时,为了简便操作,您可以复制备份策略。
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【策略】→【备份策略】,进入“备份策略”界面。
步骤 2 在当前界面,选中一条备份策略,单击【复制】按钮,系统弹出“复制备份策略”对话框。
步骤 3 在对话框中,根据要求输入备份策略的名称。
步骤 4 确认无误后,单击【确定】按钮完成操作。
----结束
2.1.4.5 添加备份策略
注意事项
每个备份任务支持添加并启用多个备份策略。
操作步骤
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据备份】→【备份】,进入“备份”界面。
步骤 2 在当前界面,选中一个或多个任务,单击【策略】→【备份策略】,系统弹出“备份策略”对话框。
步骤 3 在对话框中,单击【添加】按钮,系统弹出“添加”对话框。
步骤 4 在对话框中,选择一个备份策略并选择完全备份,并选择该策略发起的时间。
步骤 5 确认无误后,单击【确定】按钮回到“备份策略”对话框。
步骤 6 如果需要添加多个备份策略,请再次单击【添加】按钮。
步骤 7 在对话框中,选择一个或多个备份策略,单击【启用】按钮,原来“禁用”状态的策略变为“启用”。
步骤 8 如果您不希望备份策略再次应用于此备份任务,您可以单击【禁用】按钮。您另外可以删除列表中的备份策略。
备份策略禁用后,将即刻失效。
----结束
2.1.4.6 编辑备份策略
如果您需要对当前已有的备份策略相关配置做修改,您可以执行以下操作编辑备份策略。
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据备份】→【备份】,进入“备份”界面。
步骤 2 在当前界面,选中一条备份策略,单击【编辑】按钮,系统弹出“编辑备份策略”对话框。
步骤 3 在对话框中,您可以修改备份周期和重新设置重复发起。名称暂不支持修改。
步骤 4 确认无误后,单击【确定】按钮完成操作。
----结束
2.2 新建备份任务
2.2.1 注意事项
l 备份过程中如果遇到难以解决的问题,请您先阅读第五章,查看是否存在相同问题的解决方案。如果不存在,请您联系技术支持工程师进行解决。
l 备份过程中请勿为备份虚拟机执行以下操作:客户端关机、断网。
2.2.2 新建集群备份任务步骤
备份是一种任务驱动型进程,执行备份之前,您需要先新建备份任务,请您根据以下操作新建备份任务:
2.2.2.1 打开新建备份任务向导
请您根据以下操作打开新建备份任务向导:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据备份】,打开“数据备份”界面。
步骤 2 “数据备份”界面分为三个工作区“备份”、“监控”以及“历史记录”,请您在“备份”工作区新建备份任务。
步骤 3 “备份”工作区单击“新建”>“数据级备份任务”打开新建备份任务向导。
----结束
2.2.2.2 选择保护对象和要保护的平台
步骤 1 在向导1中,选择“请选择要保护的对象”,然后选择“请选择要保护的客户端”,最后选择“请选择要保护的应用类型”。
步骤 2 “请选择要保护的对象”选择“客户端”。
步骤 3 从“请选择要保护的客户端”中选择一个需要保护的MongoDB虚拟客户端。
步骤 4 在“请选择要保护的应用类型”中会自动选择MongoDB数据库。
----结束
2.2.2.3 展开要备份的数据源
在向导2中,展开并选择实例,单击“+”展开数据源,MongoDB定时备份任务支持自动发现数据源的功能,选中要备份的MongoDB实例。
2.2.2.4 选择备份介质并配置备份选项
在向导3中,选择“备份介质”,然后配置“备份选项”。
根据需要选择存储介质,目前支持的存储介质为“OFS”、“云备份存储库”和“磁带库”,默认选择OFS存储。其中OFS存储的配置项请参考第2步进行配置,云备份存储库的配置项请参考第3步进行配置,磁带库库配置项请参考第4步进行配置。
步骤 1 OFS存储介质支持的“备份选项”包含:数据压缩、传输和存储加密、重复数据删除、流量控制以及备份自动重试。
1. 数据压缩:
a. 单击“数据压缩”后方的开关可开启和关闭该选项,开关显示为绿色时表示开启,显示为灰色时表示关闭。
b. 开启“数据压缩”后,您有两种选择快速压缩和强力压缩。
2. 传输和存储加密:
a. 单击“传输与存储加密”后方的开关可开启和关闭该选项,开关显示为绿色时表示开启,显示为灰色时表示关闭。
b. 开启“传输与存储加密”后,您有两种选择AES256加密算法和SM4加密算法。
3. 重复数据删除:
a. 单击“重复数据删除”后方的开关可开启和关闭该选项,开关显示为绿色时表示开启,显示为灰色时表示关闭。
开启“重复数据删除”后,可选择“自动创建指纹库”或“自定义创建指纹库”。
b. 只有创建了默认指纹池,“自动创建指纹库”选项可选。选中“自动创建指纹库”选项,会自动为该备份任务创建一个指纹库。
c. 选择“自定义创建指纹库”后,单击“选择“,进入选择重删指纹库界面。
d. 如果没有可用的重删指纹库,可单击新建进入新建重删指纹库界面。
e. 重删指纹库选择成功后,您会看到“请选择重删指纹库”后方展示了您选择的指纹库。
l 您要想开启重复数据删除,您必须提前在管理控制台新建了重删卷、指纹池和指纹库,具体操作参阅《云备份 CBR 定时数据保护重复数据删除用户指南》。
l MongoDB指纹库应用类型选择“数据库”。
4. 重删高级配置:开启后可设置数据切片并发数、计算指纹并发数和压缩数据并发数。此选项需开启重复数据删除选项后方可设置。
5. 数据一致性校验
该选项可选择MD5、CRC32算法校验,开启了此选项的备份任务可在“定时数据保护”-“数据校验”中对备份任务进行校验。
6. 流量控制:开启后表示备份过程中将限制任务的备份速度不高于设置的最大速度,操作:
a. 单击“流量控制”后方的开关可开启和关闭该选项,开关显示为绿色时表示开启,显示为灰色时表示关闭。
b. 开启“流量控制”后,您必须在“最大速度为”输入框中输入最大速度,您也可以通过单击输入框后方的上、下按钮增加和减少最大速度,也可以直接数据输入最大速度。
l 开启该选项后,必须设置最大备份速度,范围1~1024MiB/s。
l 开启该选项后将会影响备份性能,当您的MongoDB数据库处于业务繁忙时,您不希望备份影响您的业务,此时您可以通过设置新增流量控制时段,限制特定时段的备份速度,以达到既能释放网络带宽又能持续备份的目的。
l 开启该选项,当最大速度设置较低时,将会扩大您的备份窗口,此时建议您降低备份频率。
7. 强制数据保留:开启此选项后,在您设定的强制保留时长内数据将不能被清理。
8. 备份自动重试:开启后表示任务执行失败后将会根据设置的等待时间和等待次数,自动发起备份,操作:
a. “自动重试最大次数”的输入框中输入最大次数,您也可以通过单击输入框后方的上、下按钮增加和减少最大次数,也可以直接数据输入最大次数。
b. “重试等待时间”的输入框中输入等待时间,您也可以通过单击输入框后方的上、下按钮增加和减少等待时间,也可以直接数据输入等待时间。
l 自动重试次数范围1~5,重试等待时间范围1~30分钟
l 该选项针对的任务结果是失败,当结果为成功、成功有警告、部分成功以及已停止时,不会触发自动重试。
步骤 2 如需使用云备份存储库,请先勾选“云备份存储库”,并选中对应的存储介质。
云备份存储库介质支持的“备份选项”包含:数据压缩、数据传输和加密、重复数据删除、重删高级配置、云传输并发数、流量控制和备份自动重试。
1. 数据压缩:可参考第1步第1小节。
2. 传输和存储加密:可参考第1步第2小节。
3. 重复数据删除:可参考第1步第3小节。
4. 重删高级配置:可参考第1步第4小节。
5. 云传输并发数:支持多个数据传输线程同时存在该选项为必选项,范围为1~64,一般而言数据较小时传输速度较慢,随着线程数的增加虽然速度会有增加但可能会对资源的占用变高。在您的环境资源充足的情况下,建议MongoDB的线程数可设置为16~64线程。
6. 流量控制:可参考第1步第6小节。
7. 备份自动重试:可参考第1步第8小节。
步骤 3 如需使用磁带库,请先勾选“磁带库”,并选择对应的介质集。
磁带库介质支持的“备份选项”包含:数据压缩、数据传输和加密、流量控制和备份自动重试。
1. 数据压缩:可参考第1步第1小节。
2. 传输和存储加密:可参考第1步第2小节。
3. 流量控制:可参考第1步第6小节。
4. 备份自动重试:可参考第1步第8小节。
----结束
2.2.2.5 配置任务名称和任务备注
步骤 1 在向导4中,配置“任务名称”和“任务备注”。
步骤 2 “任务名称”后方的输入框输入自定义的任务名称。
步骤 3 “任务备注”后方的输入框输入自定义的任务备注。
“任务备注”选项为非必填项,但为了您使用方便,建议您为备份任务自定义一个任务备注,其字符要求0~50个字符。
----结束
2.2.2.6 完成新建备份任务向导
步骤 1 向导4中,“任务名称”和“任务备注”配置完成后,在“任务信息”界面中完成备份任务的配置。
步骤 2 向导4中,单击“完成”,打开“任务信息”界面。
步骤 3 如果您想要在向导完成后立即启动备份任务,请勾选“任务生成后立即执行”。
步骤 4 单击 “确定”,关闭向导。
步骤 5 备份任务新建成功后,您可以看到“备份”工作区新增一条备份任务记录。
----结束
2.2.3 新建单机部署模式备份任务步骤
2.2.3.1 打开新建备份任务向导
请您根据以下操作打开新建备份任务向导:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据备份】,打开“数据备份”界面。
步骤 2 “数据备份”界面分为三个工作区“备份”、“监控”以及“历史记录”,请您在“备份”工作区新建备份任务。
步骤 3 “备份”工作区单击“新建”>“数据级备份任务”,打开新建备份任务向导。
----结束
2.2.3.2 选择保护对象和要保护的平台
步骤 1 在向导1中,选择“请选择要保护的对象”,然后选择“请选择要保护的客户端”,最后选择“请选择要保护的应用类型”。
步骤 2 “请选择要保护的对象”选择“客户端”。
从“请选择要保护的客户端”中选择一个需要保护的MongoDB客户端。在“请选择要保护的应用类型”中选择MongoDB数据库。
----结束
2.2.3.3 展开要备份的数据源
在向导2中,展开并选择实例,单击“+”展开数据源,MongoDB定时备份任务支持自动发现数据源的功能,选中要备份的MongoDB实例。
若实例未授权,不可勾选,请授权后再创建备份任务
2.2.3.4 选择备份介质并配置备份选项
步骤 1 在向导3中,选择“备份介质”,然后配置“备份选项”。
步骤 2 “选择介质”可选择选择“OFS”或云备份存储库。
步骤 3 “备份选项”配置传输和存储加密、数据压缩、重复数据删除、流量控制以及备份自动重试选项配置请参阅2.2.2。
步骤 4 单机部署模式备份任务的配置任务名称和任务备注、完成新建备份任务向导步骤和分片集群一致,具体请参考2.2.2。
----结束
2.2.3.5 监控
任务发起备份后,您可以在“监控”工作区观察任务的实时执行情况,请您根据以下操作查看任务的执行情况:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据备份】,打开“数据备份”界面。
步骤 2 “数据备份”界面分为三个工作区“备份”、“监控”以及“历史记录”,请您在“监控”工作区查看任务的实时信息。
步骤 3 “监控”工作区可以直接观察任务的执行情况,也可以单击任务后方的“详情”进一步观察任务执行情况。
步骤 4 “详情”界面分为 “执行概要”和“执行输出”,您可以切换以查看具体信息。
步骤 5 “详情”界面单击“收起”可以收起“详情”。
----结束
2.2.4 历史记录
备份任务执行结束后,您可以进入“历史记录”工作区查看任务最终的执行情况。
2.2.4.1 查看历史记录
请您根据以下操作查看历史记录:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据备份】,打开“数据备份”界面。
步骤 2 “数据备份”界面分为三个工作区“备份”、“监控”以及“历史记录”,请您在“历史记录”工作区查看历史记录。
步骤 3 “历史记录”工作区可以直接观察任务的执行结果,也可以单击任务后方的“详情”进一步查看任务和虚拟机的执行结果。
步骤 4 “详情”界面分为 “执行概要”和“执行输出”,您可以切换以查看具体信息。
步骤 5 当您进入“详情”界面的“执行输出”部分时,为了方便您查看执行输出,您可以单击“导出”,将执行输出导出到本地进行查看。
步骤 6 单击“导出”后可选择TXT、XLS和PDF格式,请您根据自己的需求选择导出格式。
l MongoDB数据库备份任务运行结果可以为已停止、成功、失败以及成功有警告,只有成功、以及成功有警告的结果才会产生时间点。
l 已停止:备份任务运行过程中触发停止,任务运行结果为已停止,如何触发备份任务停止,具体参阅2.3.3 停止备份任务,触发停止后程序会自动还原并清理备份创建的资源。
l 成功:备份任务必须满足以下要求,其备份结果才会为成功1)备份任务的数据源解析成功;2)解析后存在需要备份的客户端上的数据目录都备份成功;3)任务执行输出和虚拟机执行输出均没有警告信息。
l 失败:以下情况可能导致备份任务执行结果为失败1)备份任务由客户端数据源解析失败;2)数据源虽然解析成功但是均备份失败;3)备份任务触发了一些异常,如进程被中断和网络被中断等。任务执行失败后可能存在残留的快照卷,请您手动清理残留资源。
l 成功有警告:以下情况可能导致备份任务执行结果为成功有警告:1)开启了数据保留策略,但是需要被删除的数据正在恢复或者被远程复制
MongoDB数据库进行备份时会生成eef进程,如果eef进程意外结束,可能会造成相应的快照卷的不能被正确删除,需手动进行清理。可通过lvdisplay命令查看客户端上的卷,软件生成的快照卷有LV snapshot status选项,其中本软件产生的快照卷的命名规则为:/dev/MongoDB数据目录所在VG名/备份任务id_VG名_逻辑卷名。
可以用lvremove命令删除无效的快照卷:
----结束
2.2.4.2 删除历史记录
为了避免任务历史记录数量越来越多,给您带来查询性能损耗,建议您适当的进行手动删除历史记录,其操作如下:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据备份】,打开“数据备份”界面。
步骤 2 “数据备份”界面分为三个工作区“备份”、“监控”以及“历史记录”,请您在“历史记录”工作区删除历史记录。
步骤 3 “历史记录”工作区勾选需要删除的历史记录,单击“删除”,进入“警告”界面。
步骤 4 “警告”界面,单击“删除”,退出“警告”界面。
步骤 5 历史记录删除成功后,“历史记录”界面不能再看到删除的历史记录。
说明:支持批量删除历史记录。
----结束
2.3 管理备份任务
2.3.1 查看备份任务
请您根据以下操作查看备份任务:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据备份】,打开“数据备份”界面。
步骤 2 “数据备份”界面分为三个工作区“备份”、“监控”以及“历史记录”,请您在“备份”工作区查看备份任务详情。
步骤 3 “备份”工作区,单击备份任务后方的“详情”,打开“详情”界面。
步骤 4 “详情”界面分为四个部分“基本信息”、“选项”、“数据源”以及“策略”,请您可以根据自己的需求进行查看。
----结束
2.3.2 启动备份任务
启动备份任务即对任务发起备份,将备份任务的数据源备份到存储服务器中,您可以有两种启动方法添加备份策略,自动启动,具体操作参阅2.1.4 备份策略和手动启动,其操作:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据备份】,打开“数据备份”界面。
步骤 2 “数据备份”界面分为三个工作区“备份”、“监控”以及“历史记录”,请您在“备份”工作区启动备份任务。
步骤 3 “备份”工作区选中备份任务,单击“启动”,打开“启动任务”界面。
步骤 4 “启动任务”界面中,单击“备份方式”下拉框,请选择完全备份。
步骤 5 “执行备注”后方的输入框输入执行备份,然后单击“启动”,退出“启动任务”界面。
步骤 6 任务启动成功后,您可以在“备份”工作区看到任务的状态变为“正在运行”,您可以进入“监控”工作区实时观察任务执行情况,具体请参阅2.2.3。
----结束
2.3.3 停止备份任务
您需要停止备份任务时,请您执行以下操作:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据备份】,打开“数据备份”界面。
步骤 2 “数据备份”界面分为三个工作区“备份”、“监控”以及“历史记录”,请您在“监控”工作区停止备份任务。
步骤 3 “监控”工作区选中备份任务,单击“停止”,打开“警告”视图。
步骤 4 “警告”视图中,单击“停止”,退出“警告”界面。
步骤 5 请稍等几秒钟,您会看到单击停止的任务已不在“监控”工作区,此时您可以进入“历史记录”工作区,查看到任务运行结果为已停止。
----结束
2.3.4 编辑备份任务
当您需要变更备份任务的信息时,请您根据以下操作编辑备份任务:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据备份】,打开“数据备份”界面。
步骤 2 “数据备份”界面分为三个工作区“备份”、“监控”以及“历史记录”,请您在“备份”工作区编辑备份任务。
步骤 3 “备份”工作区勾选备份任务,单击“编辑”,打开编辑备份任务向导。
步骤 4 向导1中,所有选项均不支持编辑。
步骤 5 向导2中,所有选项均支持编辑,编辑规则同新建2.2.2 新建集群备份任务步骤。
步骤 6 向导3中,“备份介质”、“传输和存储加密”、“数据压缩”以及“重复数据删除”不支持编辑,“虚拟机并发备份”、“流量控制”以及“备份自动重试”支持编辑,编辑规则同新建2.2.2 新建集群备份任务步骤。
步骤 7 向导4中,“任务名称”不支持编辑,“任务备注”支持编辑,编辑规则同新建2.2.2 新建集群备份任务步骤。
步骤 8 向导4中单击“完成”,关闭编辑备份任务向导。
步骤 9 任务编辑成功后,您可以根据2.3.1 查看备份任务查看任务最新详情。
----结束
2.3.5 删除备份任务
当您不再需要备份任务时,请您根据以下操作删除备份任务:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据备份】,打开“数据备份”界面。
步骤 2 “数据备份”视图分为三个工作区“备份”、“监控”以及“历史记录”,请您在“备份”工作区删除备份任务。
步骤 3 “备份”工作区勾选备份任务,单击“删除”,打开“警告”界面。
步骤 4 “警告”界面的输入框输入“YES”,然后单击“删除”,退出“警告”界面。
----结束
2.3.6 清理备份数据
若您想要新建清理备份数据任务,请您根据以下操作新建数据清理任务:
2.3.6.1 启动新建清理任务向导
请您根据以下操作启动新建数据清理任务向导:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据清理】,进入“数据清理”界面。
步骤 2 在当前界面,单击【新建】按钮,启动新建清理备份数据任务向导。
----结束
2.3.6.2 选择要清理的备份任务
步骤 1 在向导1中,选择您要清理任务所在的“备份介质”以及对应的“备份任务”。
步骤 2 选择备份介质(OFS、云备份存储库)。
单击【选择】按钮,进入选择备份任务弹窗中选择备份任务。
步骤 3 “备份介质”与“备份任务”设置完成后,单击【下一步】按钮。
----结束
2.3.6.3 选择要清理的数据
2.3.6.4 填写任务备注
在向导3中,配置“任务名称”和“任务备注”。
2.3.6.5 使用向导完成操作
步骤 1 向导3中“任务名称”和“任务备注”配置完成后,在“数据清理信息确认“界面中完成清理备份数据任务的配置。
步骤 2 在向导3中单击完成,打开“数据清理信息确认“界面。如果您确认删除选中的备份任务数据,请在在输入框中输入“YES”,单击【确定】按钮。
步骤 3 清理备份数据任务新建成功后,您可在“数据清理”界面查看新增的清理备份数据任务记录。
----结束
3 MongoDB 定时恢复
3.1 关于恢复
在 CBR 中,恢复是一种任务驱动型进程。执行恢复之前,您需要先新建恢复任务。恢复任务是恢复需求的一个配置集合单元。恢复任务指定了从哪个存储恢复数据、恢复目标平台以及恢复虚拟机的配置等,请参阅3.2.2 新建恢复任务步骤进行恢复任务的新建,恢复任务新建成功后您可以对其进行管理,具体参阅3.2.3.2 MongoDB副本集集群重建。
下表为MongoDB数据库定时恢复支持功能
表3-1 MongoDB数据库定时恢复支持功能
功能 |
子功能 |
支持 |
备注 |
恢复 |
本机恢复 |
|
恢复粒度:整个数据库 |
异机恢复 |
|
||
原端口恢复 |
|
||
异端口恢复 |
|
CBR 恢复 MongoDB数据库,原理如下所示:
3.1.1 副本集或单机恢复过程
步骤 1 管理控制台启动恢复任务。
步骤 2 控制台根据恢复任务勾选的数据源,将存储中的数据恢复到目的客户端的指定路径下。
步骤 3 客户端以不开启auth认证的方式启动数据库,删除local数据库,其中删除local数据库的目的是清理原副本集(或单机)配置信息和操作日志。
步骤 4 数据清理完成后,修改配置文件中的路径为恢复任务选择的路径,更改端口号为新建恢复任务中选择的端口,重新启动MongoDB数据库,副本集节点执行初始化操作。
步骤 5 客户端检测恢复端口,检测到端口被监听后,发送消息给控制台,结束恢复任务。
----结束
3.1.2 分片集群恢复过程
步骤 1 管理控制台启动恢复任务。
步骤 2 控制台根据恢复任务勾选的数据源,将存储中的数据恢复到目的客户端的指定路径下。
步骤 3 数据恢复完成后,分片集群恢复任务结束。
分片集群直接将数据恢复到指定目录下,如需使用数据,请参考3.2.3进行分片集群集群重建
----结束
3.2 新建恢复任务
3.2.1 注意事项
l 恢复过程中请勿操作正在恢复的计算机,若操作可能导致恢复失败或恢复数据存在问题。
l 恢复途过程中请勿占用IP/域名、用户名、密码、存储、网络等信息,若更改可能导致恢复失败。
3.2.2 新建恢复任务步骤
CBR 中,恢复是一种任务驱动型进程,执行恢复之前,您需要先新建恢复任务,请您根据以下操作新建恢复任务:
3.2.2.1 打开新建恢复任务向导
请您根据以下操作打开新建恢复任务向导:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据恢复】→【恢复备份数据】,进入“恢复备份数据”界面。
步骤 2 在当前界面,单击【新建】按钮,进入新建恢复任务向导。
----结束
3.2.2.2 选择备份介质和要恢复的数据
步骤 1 在向导1中,请依次选择备份介质和需要恢复的备份任务。
1. “请选择备份介质”可选择“OFS”、“云备份存储库”和“磁带”,OFS备份介质可选择本地“OFS”或目的端“OFS”。其中,目的端是指配置了控制台通信的目的端服务器。
2. 从“备份任务”中选中一条备份数据。
注意:本地“OFS”包括本地备份任务备份的数据和反向复制的数据;目的端“OFS”包括从本地同步到目的端的数据。
----结束
3.2.2.3 选择时间点和要恢复的数据
步骤 1 在向导2中,选择“选择时间点”,然后选择“请选择要恢复的数据”。
步骤 2 单击“选择时间点”后方的【选择】按钮,打开“请选择时间点”对话框。在对话框中选择一个需要恢复的时间点。
步骤 3 时间点选择成功后,您会看到“选择时间点”后方的方框中展示了您选择的时间点,且“请选择要恢复的数据”下方展示数据源tree。
步骤 4 依次展开“请选择要恢复的数据”下方的数据源tree,勾选需要恢复的虚拟机。
----结束
3.2.2.4 选择恢复方式并进行恢复配置
恢复前请清空你想选择的保存路径,保证恢复的数据的可用性。
3.2.2.4.1 分片集群恢复配置
在向导3中,选择“客户端”,然后选择“恢复目的地”,最后配置“保存路径”。
步骤 1 单击“客户端”后方的【选择】按钮,打开“选择客户端”界面。
步骤 2 “选择客户端”界面选择一个客户端,客户端配置建议请您参考1.2 客户端检查,然后单击【确定】按钮,退出“选择客户端”界面。
步骤 3 客户端选择成功后,您会看到“客户端”后方的方框中展示了您选择的客户端。
步骤 4 单击“恢复目的地”下“保存路径”后方的【浏览】按钮,打开“选择保存路径”界面。
“选择保存路径”界面选择一个空的文件夹,然后单击【确定】按钮,退出“选择保存路径”界面。
步骤 5 保存路径选择成功后,您会看到“保存路径”后方的方框中展示了您选择的保存路径。
----结束
3.2.2.4.2 副本集恢复配置
新建副本集恢复任务第三页界面。需要配置的项为客户端、用户名、保存路径和端口号。
1. 客户端:单击选择,在列表中选择你需要恢复的目的客户端。
2. 用户名:该选项默认为root用户恢复。如需非root用户恢复,该选项须填写所选客户端操作系统上对应的操作系统用户名,该系统用户名需要存在且不应为不可用的操作系统内置用户。
3. 保存路径:填写的用户名须对该保存路径有可读可写可执行权限。
4. 端口号:默认为原端口,如果原端口号被占用,可选择自定义端口号进行恢复。
3.2.2.4.3 云备份存储库恢复配置
步骤 1 在向导1中选中“云备份存储库”,并选择对应的云备份存储库。
步骤 2 向导2界面同OFS存储恢复,可参考3.2.2.4.1第4步
步骤 3 云备份存储库恢复向导3界面配置有云传输并发数选项,可选范围为1~64。可根据需要进行进行选择,在资源充足的情况下,建议MongoDB云备份存储库恢复任务云传输并发数可设置为16~64。
该界面其他配置项可参考3.2.2.4.2。
----结束
3.2.2.5 配置任务名称和任务备注
步骤 1 在向导4中,配置“任务名称”和“任务备注”。
步骤 2 “任务名称”默认已配置,不支持修改。
步骤 3 “任务备注”后方的输入框输入自定义的任务备注。
----结束
3.2.2.6 完成新建备份任务向导
步骤 1 向导4中,“任务名称”和“任务备注”配置完成后,在“任务信息确认”界面中完成恢复任务的配置。
步骤 2 向导4中,单击“完成”,打开“任务信息确认”界面。
步骤 3 默认已勾选 “任务生成后立即执行”,输入框中填写“YES”,单击“确定”,关闭向导。
恢复任务新建成功后,您可以看到“恢复备份数据”工作区新增一条恢复任务记录。
----结束
3.2.3 MongoDB集群重建
3.2.3.1 MongoDB分片集集群重建
步骤 1 集群重建前,需确保目标实例和源实例保持MongoDB版本、分片数量一致。如:源实例有分片集shard1和shard2两个分片集,则目标实例也需要有两个分片集。以下示例集群有两个分片:shard1、shard2 。
l 示例按照原实例恢复的方式进行的恢复,如果原实例正在使用,请重新选择一个目标实例恢复,避免数据丢失。
l 如果你的原始数据库已经损坏不能访问,你希望数据还存储在原集群的存储位置,建议你清空原文件夹,然后将恢复出来的数据文件复制到原实例对应的目录下,最后再参照文档进行集群重建。
l 如果你希望恢复出来的集群使用主机名形式以实现高可用,你需要提前在目标主机的/etc/hosts文件中添加好主机映射,并注意将配置文件中的IP地址配置成主机名形式,在参照下文进行集群重建时,注意将下文中的IP地址更换成主机名。
步骤 2 依次登录所有的mongos、shard节点,并关闭服务,关闭节点服务命令可参考:
use admin
db.auth(‘root’, ‘******’) #目标实例的用户名密码
db.shutdownServer()
步骤 3 关闭所有的config从节点,修改config主节点的配置文件(也可以关闭所有的config节点,任选其中一个节点作为config主节点)。可参考在恢复界面执行输出,修改dbpath为恢复后config数据保存的路径,并将configsvr、replSet、auth、keyFile等参数注释起来,保存配置文件,然后重启config主节点服务。
为表述方便,以下将目标实例的config、shard节点的主从节点,直接表述为config、shard主/从节点。
步骤 4 登录config主节点,删除源实例的local库。
use local
db.dropDatabase()
步骤 5 更改config库中的shard副本集信息。
进入config库,进行分片信息的查询,命令可参考:
use config
db.shards.find( { "_id" : "<shardName>" } )
如果分片集的端口不是要使用的分片端口,需要更新分片集信息,命令可参考:db.shards.updateOne({ "_id" : "shard1" },{ $set : { "host" : "<shardName>/shard host1: shard port1, shard host2: shard port2, shard host3: shard port3" } })
l 请将命令中的<shardName>、shard host1、shard port1等更换成相应的分片名、主机IP(或主机名)和端口号。
l 运行了db.shards.updateOne命令,可根据实际情况选择是否执行这一步。
更新完所有分片信息后,更改config主节点的配置文件,取消掉第3步中configsvr、replSet、auth、keyFile等参数的注释(如果不需要开启auth认证,请保持auth、keyFile参数为注释状态),重启config主节点服务,使用源实例的用户名和密码登录该节点并执行rs.initiate()命令对集群进行初始化。
步骤 6 清空所有config从节点上存储的config数据的文件,并重启所有的config从节点服务。在主节点上执行:rs.add("config_IP:config_port"),依次将所有的config从节点加入进来。以增加一个192.168.120.162主机上36003端口的config从节点为例,可根据实际情况增加节点。
l config节点存储数据的文件路径可以参考相关配置文件中的dbpath路径。
l 清空所有config从节点的数据文件时,也可以先修改config从节点存储数据的文件名,并新建一个相同名称的文件夹用来存储数据。
步骤 7 选择一个分片副本集(以下以shard1为例)上的一个节点作为主节点,修改配置文件,给shardsvr、replSet、auth、keyFile等参数添加注释,将dbpath修改为恢复的shard1数据路径,并重启该节点,然后执行以下命令。
use local
db.dropDatabase()
从admin.system.versions集合中删除minOpTimeRecovery文档:
use admin
db.system.version.deleteOne( { _id: "minOpTimeRecovery" } )
查找分片关联的信息:
use admin
db.system.version.find( {"_id" : "shardIdentity" } )
修改分片信息,将当前分片和config节点信息关联起来(可根据上一步查找到的信息,选择是否更新分片信息):
db.system.version.updateOne({ "_id" : "shardIdentity" },{ $set :{ "configsvrConnectionString" : "configs_name/config_IP1:config_port1, config_IP2:config_port2…"}})
步骤 8 修改shard主节点配置文件,取消掉第7步中shardsvr、replSet、auth、keyFile等参数的注释,重启shard主节点后,使用源实例用户名密码登录,执行命令:rs.initiate()进行初始化。
步骤 9 删除其它shard1从节点存储数据路径(配置文件中dbpath路径)下的文件,然后依次重启shard1从节点服务,并在shard1主节点上执行命令rs.add("shard_IP:shard_port")依次将所有的shard1节点加入到副本集中。
步骤 10 重复步骤7~9,依次重新构建分片副本集(本示例还须重复步骤7~9将shard2进行集群重建)。最后重启所有的mongos节点,并验证恢复的集群数据。
l 如果你的目标实例的shard副本集的数量超过源实例,请先关闭多余的shard副本集后再进行集群重建。
l 完成上述集群重建操作后如需将其他的shard副本集加入到分片集群,请注意这时候通过mongos节点读到的不仅仅是恢复出来的数据,还有这些shard副本集的数据,请谨慎操作。
l 如您不需要多余的shard副本集数据但需要这些shard副本集拓展存储,请先清空这些shard副本集数据目录下的数据,重新构建shard副本集后再加入分片集,具体操作请参考MongoDB官方文档。
----结束
3.2.3.2 MongoDB副本集集群重建
无论源副本集实例有几个节点,恢复后均为单节点副本集,若要保持和源实例节点个数一致,则需要手动操作,进行节点扩展,具体步骤如下。
如果你的原始数据库已经损坏不能访问,你希望数据还存储在原集群的存储位置,建议你先恢复数据到源实例主机下,清空原实例数据文件,然后将恢复出来的数据文件复制到原实例对应的目录下,修改配置文件中dbpath后重启数据库,最后再参照文档进行集群重建。
步骤 1 按照如下配置文件进行其它节点配置文件的创建,其中副本集名称需要与恢复的单节点实例副本集名称保持一致,其它参数可自定义配置,如数据存储路径、日志路径、监听端口号等。
步骤 2 找到恢复的单节点副本集实例的keyfile文件,并将该文件拷贝至扩展节点keyfile文件的配置路径下。
将该文件复制到扩展节点的keyfile路径下,以新节点的keyfile路径指定为:/111/test111/data/mongo_data/mongod@17027/config/mongodb.keyfile例。执行复制命令为:cp /111/test111/data/mongo_data/mongod@17017/config/mongodb.keyfile /111/test111/data/mongo_data/mongod@17027/config。
副本集新扩展节点的keyfile和恢复出来实例的keyfile必须保持一致,如果新扩展节点和恢复出来的实例节点不在同一物理机上,请拷贝keyfile文件到新节点物理机上,建议使用scp命令进行拷贝。
步骤 3 使用扩展节点的配置文件,启动扩展节点扩展节点启动成功。
步骤 4 登录恢复的单节点副本集实例,执行添加节点命令,将扩展节点加入到副本集中,添加命令为:rs.add(‘IP:端口’),其中IP和端口号分别为扩展节点服务指定监听的IP和端口号:
步骤 5 根据实际的副本集节点数量,重复以上步骤1-4,完成副本集节点的扩展。
----结束
3.3 管理恢复任务
3.3.1 观察和查看恢复任务
恢复任务默认新建成功立即执行,请您根据以下操作观察和查看恢复任务:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据恢复】,进入“恢复数据”界面。
步骤 2 “数据恢复”界面分为两个工作区“恢复备份数据”和“恢复归档数据”,请您在“恢复备份数据”工作区新建恢复任务。
“恢复备份数据”工作区,单击恢复任务后方的“详情”,打开“详情”界面。
步骤 3 “详情”界面分为三个部分“任务详情”、“执行概要”以及“执行输出”,您可以根据自己的需求进行查看。
步骤 4 当您进入“详情”界面的“执行输出”部分时,为了方便您查看执行输出,您可以单击“导出”,将执行输出导出到本地进行查看。
步骤 5 单击“导出”后您将有两种选择TXT和XLS,TXT导出后将自动打开文本,XLS导出后需要您手动将其打开,请您根据自己的需求选择导出格式。
l MongoDB数据库恢复任务运行状态可以为已停止、成功以及失败,备份任务的状态有成功和成功有警告,只有成功才表示数据库数据恢复成功。
l 已停止:恢复任务运行过程中触发停止,任务运行结果为已停止,如何触发恢复任务停止,具体参阅3.3.2 停止恢复任务,触发停止后程序会自动还原并清理恢复创建的资源。
l 成功:恢复任务必须满足以下要求其结果才会为成功1)执行输出均没有警告信息。
l 失败:以下情况可能导致恢复任务执行结果为失败1)恢复目的地计算机资源不够或环境异常;2)恢复过程中任务触发了一些异常,如进程被中断和网络被中断等,任务执行失败后可能存在资源残留,请您手动清理残留资源;3)MongoDB目的地计算机版本和原备份计算机数据库版本不一致;4)MongoDB目的地计算机时间晚于原备份计算机时间;5)未恢复数据到空文件夹下。
----结束
3.3.2 停止恢复任务
您需要停止恢复任务时,请您执行以下操作:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据恢复】,进入“恢复数据”界面。
步骤 2 “数据恢复”界面分为两个工作区“恢复备份数据”和“恢复归档数据”,请您在“恢复备份数据”工作区停止恢复任务。
步骤 3 “恢复备份数据”工作区选中恢复任务,单击“停止”,打开“警告”界面。
步骤 4 “警告”界面中,单击“停止”,退出“警告”界面。
步骤 5 请稍等几秒钟,您将会查看到任务运行结果为已停止。
----结束
3.3.3 删除恢复任务
当您不想保留恢复任务历史记录时,您可以执行以下操作删除恢复任务:
步骤 1 操作员或租户登录管理控制台,单击左侧导航栏【定时数据保护】→【数据恢复】,进入“恢复数据”界面。
步骤 2 “恢复备份数据”界面勾选需要删除的恢复任务,单击“删除”,进入“删除”界面。
步骤 3 “删除”界面,输入框输入“YES”,单击“删除”。
步骤 4 恢复任务删除成功后,“恢复备份数据”界面不能再看到删除的恢复任务。
----结束
4 典型场景和问题
4.1 异机恢复场景下,如何调整数据库部署模式
MongoDB单机和副本集恢复后,可直接访问数据库查看数据,而分片集群只是恢复数据到目的客户端,如需使用数据,需要进行集群重建。下表为MongoDB不同部署方式的数据库恢复可转换的部署方式统计表。
表4-1 MongoDB数据库恢复数据可转换的部署方式统计表
MongoDB源数据库部署方式 |
恢复后数据库状态 |
恢复后的数据可转换的部署方式 |
注意事项 |
|
单机部署模式 |
单机模式 |
单机 |
√ |
无 |
副本集 |
√ |
需修改配置文件,请参考4.1.1第2节 |
||
分片集群 |
√ |
需转化成副本集后转化成分片集群,请参考4.1.1第3节 |
||
副本集集群 |
单节点副本集 |
单机 |
√ |
需修改配置文件,请参考4.1.1第1节 |
副本集 |
√ |
拓展节点请参考4.1.2 |
||
分片集群 |
√ |
拓展为分片集群,请参考4.1.2 |
||
分片集集群 |
仅恢复数据到目的客户端 |
单机 |
√ |
需转化成副本集后转化成单机,请参考4.1.3 |
副本集 |
√ |
需缩减分片,请参考4.1.3 |
||
分片集群 |
√ |
需集群重建,请参考3.2.3 |
4.1.1 单机
l 恢复任务成功后,通过“mongo --host IP地址 --port 端口号”命令访问单机数据库,使用原实例用户名密码登录后即可使用数据。
l 如果你需要将恢复出来的MongoDB单机数据库拓展成副本集集群。
首先,关闭单机节点服务,在配置文件里加上副本集信息(YAML格式参数为replSetName,INI格式参数为replSet,具体请参考MongoDB官方文档)。修改完配置文件后重启服务,访问数据库使用rs.initiate()命令将单机节点初始化为单节点副本集,最后参阅3.2.3拓展为多节点副本集集群。
l 如果你需要将恢复出来的MongoDB单机数据库拓展成分片集集群。请先参考第2节将单机模式转换成副本集部署模式,再参考4.1.2的第3节拓展为分片集。
4.1.2 副本集
l 如果你需要将恢复后的副本集数据转化为单机部署模式,请关闭单节点副本集服务,在配置文件里注释掉副本集信息(YAML格式参数为replSetName,INI格式参数为replSet,具体请参考MongoDB官方文档),修改完配置文件后重启服务。注意,副本集单节点更容易拓展成集群,不推荐将单节点副本集转化成单机模式。
l 如果你需要将恢复后的单节点副本集拓展为副本集集群,那么请你参阅3.2.3对MongoDB副本集进行集群重建。
l 如果你觉得副本集应对风险的能力还是在你的预期之外,你需要数据库具备更强的故障恢复功能,那么建议你将恢复出来的副本集拓展成分片集群。
− 首先,配置一个config副本集,具体请参考MongoDB官方文档。
− 然后,关闭单节点副本集节点服务,在配置文件里加上分片集群shard集群信息(YAML格式clusterRole配置为shardsvr,INI格式shardsvr配置为true,具体请参考MongoDB官方文档)后重启MongoDB数据库,再拓展为shard集群。此处建议至少再添加一个shard集群用来均衡数据存储。
− 最后,配置mongos节点,连接config并控制shard副本集。如果拓展为了两个以上shard集群,建议通过mongos节点打开数据均衡器,将数据均匀的分布到每个分片集群上。具体操作请参考MongoDB官方文档。
4.1.3 分片集
l 如果你只是需要查看分片集群某个时间点的数据,不需要分片集具备故障恢复功能,建议你参阅3.2.3对MongoDB分片集进行集群重建时,将config和shard副本集设置为单节点,最后设置一个mongos节点即可查看数据。
l 如果你希望将恢复出来的分片集群转化为副本集群:
− 首先,通过mongos节点使用movePrimary命令将所有数据库的主分片设置成同一个shard副本集(数据不均衡的情况下,建议选择数据量最大的那个分片),具体请参考MongoDB官方文档。
− 然后,使用moveShard命令逐个移除不需要的分片集群,最终在mongos节点使用sh.status()命令可以看到只剩下一个分片副本集,关闭该数据库的所有服务,具体请参考MongoDB官方文档。
− 找到该shard副本集每个节点的配置文件,注释掉分片集相关信息(YAML格式clusterRole配置为shardsvr,INI格式shardsvr配置为true,具体请参考MongoDB官方文档),然后重启副本集服务,就可以不通过mongos节点直接在该副本集上插入数据了。
l 如果你希望将恢复出来的分片集群转化为单机模式数据库,那么请你首先参考第2节将该分片集群转化为副本集,然后利用rs.remove()命令缩减副本集为单节点副本集,最后参考4.1.2第1节将单节点副本集转化为单机。
4.2 如何合理配置备份策略
l 决定备份策略如何配置的核心因素是RPO要求。例如:您最大允许丢失的数据量是一天,那么在一天之内至少保证成功备份一次。那么您可以参照2.1.3设置按天备份策略,根据您的PRO要求设置备份发起时间。
l 如果你的业务网和备份网络没有分离,且MongoDB数据库业务繁忙时备份占用一部分网络资源后业务受到了影响,建议你根据业务高峰期调整备份策略,尽可能避免在业务繁忙时备份,可参阅2.1.3设置备份策略。
l 如果你的业务系统计算资源不充分,为了保证业务的稳定性,同样需要调整备份策略,将备份安排在业务量最低的时段。以下是4C8G客户端(虚拟机)进行备份时计算资源的占用情况统计表,可参考该表对备份策略进行调整。
具体资源占用情况跟实际计算机的资源配置有关,表格中数据仅供参考。
表4-2 4C8G客户端(虚拟机)进行备份时计算资源的占用情况统计表
MongoDB备份客户端高级选项 |
内存资源占用 |
CPU资源占用 |
不使用高级选项功能 |
100MB-160MB |
6%-10% |
开启快速压缩 |
110MB-165MB |
12%-17% |
开启强力压缩 |
270MB-350MB |
70%-90% |
开启AES256加密 |
290MB-350MB |
13%-18% |
开启SM4加密 |
110MB-140MB |
50%-60% |
开启重删 |
320MB-360MB |
25%-40% |
同时使用重删和压缩 |
900MB-1000MB |
75%-95% |
4.3 如何处理存储空间不足问题
如果您的MongoDB数据库数据量的增长在您的计划范围外,可能导致现有控制台存储资源不足,您希望备份任务在计划中进行时,尽可能地减缓存储空间的增加。
建议您停止使用原备份任务,为实例重新创建虚拟客户端,在创建备份任务时开启以下选项:
l 开启数据重删功能,可参阅2.2.2第四步。开启数据重删的备份任务对控制台的内存和CPU资源要求较高,你可以适当加大内存。在内存和CPU资源充足的情况下,MongoDB数据库首次重删比一般在40%左右,二次重删之后重删比最高可达到99%,可以有效地缓解存储空间的增长。
l 开启数据压缩功能,可参阅2.2.2第四步。开启数据重删的备份任务对控制台的CPU和内存资源的要求都比较高,在内存和CPU资源充足的情况下,开启了数据压缩的MongoDB的数据库压缩比例在一般在35%左右。注意:开启了压缩的备份任务备份时间会比之前多5%-30%。
l 同时开启重复数据删除和数据压缩功能,在内存和CPU资源充足的情况下,同时开启重复数据删除和数据压缩功能的MongoDB数据库实际备份数据量一般占总数据量的35%左右。注意:开启了压缩的备份任务备份时间一般比不开任何高级选项的备份任务时长多10%-45%。
下表为开启高级选项后,实际备份数量和备份时长变化统计表,可参考该表对备份任务选项进行调整:
表4-3 开启高级选项后,实际备份数量和备份时长变化
MongoDB备份客户端高级选项 |
实际备份数据量和总数量比值 |
备份时长变化 |
开启重删 |
首次约为60%,最低可至1% |
无明显增长 |
开启强力压缩 |
约65% |
时长约增加5%-30% |
开启快速压缩 |
约65% |
时长约增加5%-30% |
同时使用重删和压缩 |
首次约为35%,最低可至1% |
时长约增加10%-45% |
具体资源占用情况跟实际计算机的资源配置有关,表格中数据仅供参考。
如果您购买了远程复制代理,建议您将本地存储的部分数据远程复制到其他控制台存储上去,清理出来部分存储空间减轻本地存储空间的压力。远程复制的数据在恢复数据时可直接选择远程控制台存储进行恢复。
如果您购买了云备份代理,建议您停止原备份任务,为实例重新创建虚拟客户端,在创建备份任务时存储介质选择云备份存储库,将数据备份到您的云备份存储库上以减轻本地存储空间的压力。
4.4 网络资源紧张,如何配置备份任务
l 如果您的备份网络资源在某些时段比较紧张,但您希望在此时段继续执行MongoDB备份任务,那么你可以在该时段修改备份任务,设置流量限制,限制备份的速度,具体设置可参考3.2.2,需要注意的是,设置流量限制会增大备份时间窗口,增加对其他业务的影响时间。
l 建议您停止使用原备份任务,为实例重新创建虚拟客户端,在创建备份任务时开启以下选项:
− 开启重复数据删除,MongoDB数据库备份二次重删之后重删比最高可达到99%,能在客户端有效消除重复数据库,大幅度降低数据传输量,减少备份时长。
− 开启数据压缩,能在客户端有效地减少MongoDB数据库的备份数据量,但是会增加备份时长,增长对其他业务的影响时间。
l 规划多网络平面,使业务网络和管理网络分离,具体可参考文档《云备份 CBR 网络配置最佳实践》。
4.5 远程复制场景
如果您觉得面对大型灾难风险时,仅仅本地备份是不够的,您希望有异地备份方案,那么您可以参考文档《云备份 CBR 定时数据保护远程复制用户指南》,将本地管理控制台的若干MongoDB数据库备份数据远程同步到一台或多台管理控制台,以达到异地容灾的效果。
在使用远程复制功能时,如果您遇到以下场景:
您在管理控制台A存在一组备份数据,您已通过远程复制的数据同步功能将这组数据同步到管理控制台B。现在,您希望在管理控制台B恢复这组数据。
此时,您可以参考3.2.2 新建恢复任务步骤 内容恢复数据,注意备份任务应选择从源端同步过来的备份数据,数据的产生方式为数据同步:
如果您遇到以下场景:
您在管理控制台A存在一组备份数据,您已通过远程复制的数据同步功能将这组数据同步到管理控制台B。但是由于管理控制台存储异常或备份数据被手动删除,现在,您希望在管理控制台A恢复这组数据到原位置或其他位置。
此时,您可以参考3.2.2 新建恢复任务步骤的内容恢复数据,注意备份介质下面的IP选择目的端IP:
4.6 备份数据至磁带场景
若您需要直接将MongoDB数据库的备份数据归档到磁带中,再从磁带恢复至指定客户端。
如果您购买了磁带备份代理,此时,您可以参考《云备份 CBR D2T用户指南》,将MongoDB数据库的直接备份至磁带,在恢复任务时,选择从磁带进行恢复。
4.7 磁带归档场景
若您需要将存储服务器(OFS)已经存在的MongoDB数据库的备份数据归档到磁带中,再从磁带恢复至OFS卷或者客户端。
如果您购买了磁带备份代理,此时,您可以参考《云备份 CBR D2D2T用户指南》,将OFS中的备份数据进行归档,在恢复任务时,选择从磁带进行恢复。
5 常见问题处理
5.1 虚拟客户端展开数据源或授权失败,如何排查问题?
l 虚拟客户端展开数据源时,提示:“展开数据源失败,获取MongoDB数据源为空”?
【问题原因1】虚拟客户端端口配置错误,因为程序是根据虚拟客户端中填写的信息进行数据源端口查找,端口填写错误不能正确发现数据源。
【解决方案】正确编辑虚拟客户端信息,重新展开数据源
【问题原因2】未配置bindip参数,程序需要根据配置文件中的bindip连接数据库,未配置此参数不能正确识别数据库地址
【解决方案】配置文件添加bindip参数,无需重启数据库,重新展开数据源。
l 授权时提示“授权失败,原因:集群不可访问或者授权信息错误”?
【问题原因1】数据库用户名密码不正确,或用户名密码含有“\”符和中文字符
【解决方案】在数据库中添加符合要求的用户后,再次进行授权
【问题原因2】数据库没有启动
【解决方案】检查MongoDB数据库是否启动,通过“mongo --host IP地址 --port 端口号“命令查看数据库是否可以正常访问
【问题原因3】客户端防火墙没有关闭
【解决方案】可使用“systemctl status firewalld“命令查看防火墙状态,使用“systemctl stop firewalld“命令关闭防火墙
【问题原因4】启动MongoDB服务的方式和本软件所支持的方式不一致
【解决方案】本软件仅支持以配置文件方式启动的MongoDB数据库的备份。所支持的MongoDB服务启动的命令为“mongod/mongos -f/--confg/-config 配置文件路径“或”mongod/mongos –confg=配置文件路径“。
【问题原因5】bindIp参数仅配置为127.0.0.1。且需注意的是,MongoDB数据库使用多台机器搭建集群时,使用127.0.0.1无法进行集群通信。
【解决方案】目前不支持仅使用127.0.0.1作为监听IP。可调整配置文件增加其他可访问IP或主机名,重新进行授权。
【问题原因6】访问控制选择错误
【解决方案】选择正确的访问控制选项。数据库开启auth的情况下开启访问控制按钮,数据库不开auth的情况关闭访问控制进行授权。
5.2 展开数据库或备份失败,如何排查问题?
l 新建备份任务展开数据库时,提示“获取MongoDB数据库为空”?
【问题原因】MongoDB数据库中存在节点服务未启动,或者可连接的节点不能执行“show dbs”命令
【解决方案】请检查数据库是否启动,并进入数据库在admin库下执行“show dbs”命令。最后再重新进行展开数据库操作。
l 备份时提示“解析数据源失败,原因:Mongo数据库服务未启动”
【问题原因1】MongoDB分片集群中mongos、config节点服务都未启动,或者shard节点启动未超过半数,或者shard节点的secondary节点和primary不通信,导致解析数据源失败。或者是MongoDB副本集不存在primary节点,导致解析数据源失败。
【解决方案】请参考1.2.4-1.2.6章节检查数据库状态,启动数据库服务,重新进行备份。
【问题原因2】客户端已离线,导致控制台无法正常连接客户端,解析数据源失败。
【解决方案 】检查客户端状态,启动客户端服务,重新进行备份。
【问题原因3】客户端网络已断开,导致控制台无法正常连接客户端,解析数据源失败。
【解决方案】启动客户端网络,重启客户端服务,重新进行备份。
【问题原因4】程序连接数据库节点超时,解析数据源失败。
【解决方案】对客户端本身的资源状况进行检查,在手动连接数据库响应较快的情况下再次进行备份。
l 备份过程中备份失败, 日志输出“无法执行Balancer停止操作,数据库正在进行内部数据迁移”
【问题原因】MongoDB数据正在迁移时,无法停止Balancer服务(以下情况是当currently running:yes的时候)。
【解决方案】
1. 登录mongos执行db.auth(‘用户名’,‘密码’)认证用户。
2. 执行sh.status ()查看数据是否正在迁移,如果“Currently running”值是“no”,则可直接发起备份,如果Currently running”值是“yes”,则需要设置数据迁移时间窗口,在时间窗口之外发起备份。
3. 设置数据时间窗口命令如下:
db.settings.update({ _id: "balancer" },{ $set: { activeWindow : { start : "<start-time>", stop : "<stop-time>" } } },{ upsert: true }),时间格式为HH:MM,设置完成后,可通过sh.status()命令查看当前数据迁移的时间窗口。
l 备份过程中报备份失败,可能原因是:VG空间不足,快照失败
【问题原因1】在进行备份时,默认需要在数据目录所在逻辑卷的vg卷组上创建大小为500M的快照,当vg空闲空间不足时,将导致快照失败,备份中止。
【解决方案1】根据需要备份过程中数据目录所在lv上数据变化量的大小,计算所需要预留的vg空间。根据计算结果对vg卷组进行扩容,一般建议vg剩余空间应不小于500M,且预留的vg空间应大于数据变化量。
【解决方案2】
1. 修改快照大小配置文件
a. /客户端安装目录/HBRBackupClient/etc/ClientService/AggregateApp/mongodb_lvmbackup.config,取消注释”!”,并将LVM_SNAP_SIZE设置为一个不超过vg空闲空间的值。
2. 重启客户端服务:
cd /客户端安装目录/HBRBackupClient/HBRClientService
./client_cli runner restart all
【问题原因2】操作系统存在问题,导致快照卷不能正确创建。
【解决方案】手动使用lvcreate命令创建一个逻辑卷,查看具体的报错内容并对操作系统进行修复。
l 备份失败时提示:“连接MongoDB数据库内部错误,原因:可能是数据库鉴权信息或者端口错误”
【问题原因1】数据库开启了auth认证,用户权限不够,导致备份失败。
【解决方案】请参考1.2.4~1.2.6所给用户权限重新进行授权,然后再次进行备份。
【问题原因2】数据库更改了用户的密码,导致备份失败
【解决方案】新建虚拟客户,使用修改的用户名密码重新进行授权,然后再次进行备份
l 备份失败时提示:”读取数据块失败”或“文件句柄无效”?
【问题原因】进行MongoDB备份时,会临时创建一个快照卷,这个快照卷的大小和/客户端安装目录/HBRBackupClient/ClientService/mongodb_lvmbackup.config中LVM_SNAP_SIZE有关,默认设置是500M。如果备份过程中,持续变化的数据超过了500M,就会造成读取数据块失败。如果备份任务刚刚发起,持续变化的数据就超过了快照卷的大小,备份数据时快照卷已经失效,就会造成文件句柄无效。
【解决方案】根据预计持续写入的数据的大小,调整LVM_SNAP_SIZE大于该预估值。设置界面可参考1.2.3.2Q5。
5.3 恢复失败,如何排查问题
l MongoDB实例恢复失败,提示“端口被占用”?
【问题原因】当前选择的端口已经被占用,不能够通过这个端口启动MongoDB数据库。
【解决方案】选择一个未占用的端口号,再次发起恢复任务。
l MongoDB副本集实例恢复时,显示“数据恢复后,但是MongoDB数据库启动失败”?
【问题原因1】恢复时选择的文件路径下存有其他MongoDB实例的数据,导致不能正确启动MongoDB服务。
【解决方案】选择一个没有存储其他MongoDB实例数据的空文件夹,再次发起恢复任务。
【问题原因2】恢复的客户端上的MongoDB版本和备份时的MongoDB版本不一致
【解决方案】到恢复地客户端的/客户端安装目录/HBRBackupClient/ClientService/user/路径下,查看rootenv文件下记录的MongoDB数据库的环境变量路径。
分别按照文件中所示顺序执行命令:
/路径/mongod --version
第一个能查询到的路径下的MongoDB版本,即本软件选择的MongoDB恢复版本。可以更换相同MongoDB版本的客户端,即可进行正常的恢复。
【问题原因3】程序没有正确修改恢复后的MongoDB数据库配置文件。
【解决方案】找到恢复后的配置文件,修改文档中的端口或路径为正确的端口或路径(可参考mongod命令参数进行重新配置),重新启动MongoDB进程,即可正常访问恢复后的MongoDB数据库。或者是在备份之前修改配置文件,现在已知配置文件的格式问题有:
1. 现仅支持bindip对应多个参数值,请注意其他参数名不能对应多个参数值。
2. 配置文件中除了配置pidfilepath、logpath、dbpath、keyfile等路径外还配置有别的路径,可能会导致恢复失败。
3. keyfile路径填写不规范,出现多个“/”可能会导致恢复失败。
【问题原因4】恢复的客户端时间晚于备份节点客户端的时间,导致MongoDB数据库不能识别未来的时间点,不能正常启动。
【解决方案】选择时间同步于(或晚于)备份节点的客户端进行恢复。
【问题原因5】数据已经恢复完成,但是恢复地客户端上该目录下已经没有可用的空间,导致启动数据库时没有足够的空间导致恢复失败。
【解决方案】检查恢复地客户端剩余空间,预留足够的空间后再次发起恢复。
【问题原因6】配置了keyfile字段,但未配置auth字段。
【解决方案】根据数据库实际开启认证的情况配置auth字段,重新发起备份恢复。
- 点赞
- 收藏
- 关注作者
评论(0)