Ops Manager托管的部署的备份和恢复操作可能会因各种原因而失败,包括代理连接问题、磁盘空间限制或oplog不一致。
本页介绍如何确认备份和恢复失败,概述了常见原因和解决方案,并提供了在联系支持之前应收集哪些信息的指导。如果完成以下步骤后问题仍然存在,联系技术支持。
先决条件检查
在调查备份或恢复失败的根本原因之前,请检查Ops Manager用户界面或API中的相关状态指示器,确认已发生故障。
检查备份故障
使用以下方法确认备份作业或快照已失败。
检查快照状态
要确认快照是否失败,请执行以下操作:
您还可以单击快照旁边的 JSON 以查看其他字段,包括:
statuscreatedDatecompletedDatetotalDurationtransferSpeed
这些字段有助于确认备份是否成功完成。
For a description of all snapshot states, see Backup Overview.
检查备份作业页面
要检查正在进行的备份作业是否存在问题,请执行以下操作:
For more information, see Jobs.
检查备份日志
要查看备份作业的错误消息,请执行以下操作:
日志显示按时间分组的错误消息,这有助于诊断备份作业失败的原因。
检查警报
Ops Manager会生成警报,指示备份作业的故障或问题,包括:
“备份已达到较高的重试次数”
“备份处于意外状态”
“副本集有一个延迟快照”
For a full list of backup-related alert conditions, see Alert Conditions.
查询API是否有不完整的Atlas 备份快照
要检索尚未完成的快照,请使用 completed=false查询参数查询Ops Manager API :
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/json" \ "https://{OPSMANAGER-HOST}:{PORT}/api/public/v1.0/groups/{PROJECT-ID}/clusters/{CLUSTER-ID}/snapshots?completed=false"
响应包括一个 results数组,其中每个对象代表一个快照。complete字段指示快照是否成功完成。
注意
快照API不提供指定的故障状态。complete: false 的快照可能仍在进行中,也可能已失败。
For more information, see Get All Snapshots for One Cluster.
检查恢复失败
使用以下方法确认恢复作业是否失败。
检查恢复页面
要在Ops Manager用户界面中查看恢复作业的状态,请执行以下操作:
Restores 页面显示最近 300 个恢复作业的表格。检查 Status 列以确定具有以下状态的作业:
FAILEDCANCELEDIN_PROGRESSFINISHED
单击某一行可查看有关该特定恢复操作的更多详细信息。
For more information, see Restores.
查询API以查找失败的恢复作业
要以编程方式检索恢复作业,查询Ops Manager API:
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/json" \ "https://{OPSMANAGER-HOST}:{PORT}/api/public/v1.0/groups/{PROJECT-ID}/clusters/{CLUSTER-ID}/restoreJobs"
响应包括一个 results数组,其中每个对象代表一个恢复作业。statusName字段表示作业状态。可能的值包括:
FINISHEDIN_PROGRESSBROKENKILLED
statusName 为 BROKEN 或 KILLED 的恢复作业被视为失败。
要使用 jq过滤失败的作业:
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/json" \ "https://{OPSMANAGER-HOST}:{PORT}/api/public/v1.0/groups/{PROJECT-ID}/clusters/{CLUSTER-ID}/restoreJobs" \ | jq '.results[] | select(.statusName=="BROKEN" or .statusName=="KILLED")'
For more information, see Get All Restore Jobs for One Cluster.
常见问题和解决方案
以下部分介绍备份和恢复失败的常见原因以及解决方法。
备份失败
以下部分介绍备份失败的常见原因以及解决方法。
磁盘空间不足
副本集成员节点上可用磁盘空间不足可能导致集群进入不健康状态,从而导致备份失败。
要解决此问题,请增加受影响节点 dbPath 上的可用存储容量。定期监控磁盘使用情况,防止类似情况再次发生。
MongoDB Agent 已关闭或不稳定
备份进程取决于持续运行的MongoDB 助手。如果代理停止或不断重新启动,则备份将失败。
症状包括:
诸如“备份 oplog is后台”之类的警报
一小时内未收到oplog切片
要解决此问题,请执行以下操作:
For more information, see Fix Backup Oplog Issues.
代理无法访问副本集
备份代理必须保持与副本集的连接。失败可能是由于网络连接问题、不可用的MongoDB节点或身份验证失败造成的。
代理日志中的症状包括:
server selection timeoutAuthentication failed
要解决此问题,请执行以下操作:
For more information, see Fix Backup Oplog Issues.
Oplog 问题
如果oplog太小或备份代理无法跟上写入活动,备份会滞后并最终失败。
症状包括以下警报:
“备份需要重新同步”
“备份oplog落后”
要解决此问题,请执行以下操作:
增加oplog大小,以便oplog window涵盖足够的历史记录(建议至少 24 小时)。
如果备份严重落后,请重新同步备份。
备份作业无法绑定到备份守护程序
备份作业需要具有足够空间的备份守护程序来存储已备份副本集的本地副本。如果没有守护进程有足够的空间,则作业无法绑定。要解决此问题,请添加额外的备份守护程序以增加容量。
在副本集未检测到主节点 (primary node in the replica set)时,也可能会出现此问题。要解决此问题,请在重试备份之前确保副本集运行正常且具有主节点 (primary node in the replica set)。
For more information, see Backup FAQ.
恢复失败
以下部分介绍恢复失败的常见原因以及解决方法。
尝试恢复分片集群中的单个分片
恢复分片集群时,必须恢复所有分片。如果您尝试单独恢复单个分片,隔离性恢复进程将失败。
For more information, see Restore Limitations.
备份和目标数据库之间的设置不匹配
当源备份和目标数据库的某些存储设置不匹配时,自动恢复可能会失败。如果恢复尝试失败, Ops Manager会显示任何不匹配的设置。
For a list of settings that must match, see Potential Causes for Automated Restore Failure.
时间点恢复期间的 Oplog 间隔
时点还原需要连续的oplog历史记录。如果oplog中存在间隔,则恢复将失败。
oplog间隙的常见原因包括:
备份代理停止跟踪oplog。
oplog在代理处理之前发生滚动。
集群拓扑结构发生更改。
发生特征兼容性版本 (FCV) 更改。
尝试在MongoDB版本更改之间进行恢复。
要解决此问题,请执行以下操作:
从oplog间隙之前拍摄的最新有效快照恢复,或者
等待创建新快照,然后再次执行恢复。
For more information, see Restore from a Specific Point in Time.
恢复主机上磁盘空间不足
如果目标托管没有足够的存储来容纳快照文件和已恢复的数据库,则恢复会失败。
要解决此问题,请执行以下操作:
有关 dbStats 命令的更多信息,请参阅 dbStats。
为获得更多支持而收集的诊断信息
如果问题仍然存在,请在联系技术支持之前收集以下信息:
来自Ops Manager用户界面或API 的完整错误消息
备份代理日志文件
MongoDB服务器版本
Ops Manager 版本
相关MongoDB服务器日志
恢复页面或API恢复作业查询的输出