对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

排除备份和恢复故障

Ops Manager托管的部署的备份和恢复操作可能会因各种原因而失败,包括代理连接问题、磁盘空间限制或oplog不一致。

本页介绍如何确认备份和恢复失败,概述了常见原因和解决方案,并提供了在联系支持之前应收集哪些信息的指导。如果完成以下步骤后问题仍然存在,联系技术支持。

在调查备份或恢复失败的根本原因之前,请检查Ops Manager用户界面或API中的相关状态指示器,确认已发生故障。

使用以下方法确认备份作业或快照已失败。

要确认快照是否失败,请执行以下操作:

1
  1. 单击 Admin(连接)。

  2. 单击 Backups(连接)。

  3. 单击 Snapshots(连接)。

2
3

该列显示快照是成功、正在运行还是失败。

您还可以单击快照旁边的 JSON 以查看其他字段,包括:

  • status

  • createdDate

  • completedDate

  • totalDuration

  • transferSpeed

这些字段有助于确认备份是否成功完成。

For a description of all snapshot states, see Backup Overview.

要检查正在进行的备份作业是否存在问题,请执行以下操作:

1
  1. 单击 Admin(连接)。

  2. 单击 Backup(连接)。

  3. 单击 Jobs(连接)。

2
3

Last SnapshotLast OplogHead Time 等字段在延迟时可能会突出显示,表明备份进程出现问题。

For more information, see Jobs.

要查看备份作业的错误消息,请执行以下操作:

1
  1. 单击 Admin(连接)。

  2. 单击 Logs(连接)。

2

日志显示按时间分组的错误消息,这有助于诊断备份作业失败的原因。

Ops Manager会生成警报,指示备份作业的故障或问题,包括:

  • “备份已达到较高的重试次数”

  • “备份处于意外状态”

  • “副本集有一个延迟快照”

For a full list of backup-related alert conditions, see Alert Conditions.

要检索尚未完成的快照,请使用 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用户界面中查看恢复作业的状态,请执行以下操作:

1
2
3
4

Restores 页面显示最近 300 个恢复作业的表格。检查 Status 列以确定具有以下状态的作业:

  • FAILED

  • CANCELED

  • IN_PROGRESS

  • FINISHED

单击某一行可查看有关该特定恢复操作的更多详细信息。

For more information, see Restores.

要以编程方式检索恢复作业,查询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字段表示作业状态。可能的值包括:

  • FINISHED

  • IN_PROGRESS

  • BROKEN

  • KILLED

statusNameBROKENKILLED 的恢复作业被视为失败。

要使用 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 助手。如果代理停止或不断重新启动,则备份将失败。

症状包括:

  • 诸如“备份 oplog is后台”之类的警报

  • 一小时内未收到oplog切片

要解决此问题,请执行以下操作:

1
2

代理日志通常位于:

/var/log/mongodb-mms-automation/backup-agent.log
3

For more information, see Fix Backup Oplog Issues.

备份代理必须保持与副本集的连接。失败可能是由于网络连接问题、不可用的MongoDB节点或身份验证失败造成的。

代理日志中的症状包括:

  • server selection timeout

  • Authentication failed

要解决此问题,请执行以下操作:

1
mongosh "mongodb://host:port"
2

确认以下内容:

  • 代理托管和副本集节点之间的网络访问权限

  • 副本集可用性

  • 备份用户凭证和所需角色

For more information, see Fix Backup Oplog Issues.

如果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在代理处理之前发生滚动。

  • 集群拓扑结构发生更改。

  • 发生特征兼容性版本 (FCV) 更改。

  • 尝试在MongoDB版本更改之间进行恢复。

要解决此问题,请执行以下操作:

  • 从oplog间隙之前拍摄的最新有效快照恢复,或者

  • 等待创建新快照,然后再次执行恢复。

For more information, see Restore from a Specific Point in Time.

如果目标托管没有足够的存储来容纳快照文件和已恢复的数据库,则恢复会失败。

要解决此问题,请执行以下操作:

1
db.stats()
2

在继续之前,请验证 dbPath 是否有足够的可用磁盘空间来容纳恢复的数据。

有关 dbStats 命令的更多信息,请参阅 dbStats

如果问题仍然存在,请在联系技术支持之前收集以下信息:

  • 来自Ops Manager用户界面或API 的完整错误消息

  • 备份代理日志文件

  • MongoDB服务器版本

  • Ops Manager 版本

  • 相关MongoDB服务器日志

  • 恢复页面或API恢复作业查询的输出