> ## Documentation Index
> Fetch the complete documentation index at: https://docs.molesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 在故障发生前验证恢复能力

> 制定恢复目标，保护相互匹配的数据库与对象备份，并在隔离环境中演练恢复。

将 MoleSignal 用于事件调查前，先验证部署故障后能否恢复。备份任务成功是恢复的前提；历史数据可查询、接入能够恢复才是验收结果。

## 制定可测量的恢复目标

明确允许的最大数据损失，即恢复点目标，以及允许的最长恢复时间，即恢复时间目标。根据目标选择备份频率与存储保护方案。时间预算应包括获取凭据、恢复对象、验证数据和重新连接发送端。

首次部署开源版时，优先采用受支持的 standalone 拓扑。拆分角色会增加协调工作，本身不代表高可用。采用分角色部署前，先证明容量需求并验证故障处理方案。

## 保护完整的恢复集合

| 资产 | 推荐保护方式 | 缺失后的影响 |
| - | - | - |
| PostgreSQL 与对象存储 | 保留能用恢复后的对象满足文件目录引用的备份 | 只有元数据无法查询，只有对象也无法恢复目录。 |
| `MS_CIPHER_KEY` | 单独保护副本，并控制恢复访问权限 | 缺少匹配的密钥将无法恢复已加密的凭据。 |
| 配置与镜像版本 | 与每组备份一起记录 | 恢复时可能使用不兼容的配置或不同的 Schema 版本。 |
| 接入 WAL | 使用持久化存储，将未刷写数据纳入损失估算 | 丢失卷可能导致尚未刷写到对象存储的记录丢失。 |

一起规划数据库与对象备份的一致性。确认对象备份完成前，对象删除与垃圾回收不会移除数据库快照所需的文件。根据[备份与恢复](https://docs.molesignal.com/zh-Hans/backup-restore.md)中的时间窗口与版本保留要求选择备份方式。

## 在隔离环境中演练

恢复到独立的 PostgreSQL 数据库与对象存储位置。生产发送端继续指向生产环境。启动恢复环境前，阻止真实通知投递和其他外部副作用。

使用保存的镜像版本与匹配的密钥，记录各阶段耗时和失败情况。验证备份时间边界附近的历史区间，不只检查最近的数据。检查已知日志事件、链路以及事件响应所需的其他信号。

随后发送受控的新数据并查询回读，同时验证历史读取与新增写入。保留足以评估恢复目标的证据后，再销毁演练环境。

## 评估持久性取舍

提高 WAL 持久性可能增加写入延迟与存储活动。变更前，在有代表性的负载和故障条件下测量代价。持久化卷不能代替数据库与对象存储备份。

健康检查成功后，继续检查文件目录与对象的一致性、已知数据、访问权限以及受控写入链路。解决缺失对象报告后，再判断恢复的数据集是否完整。

## 验收标准

* 实测恢复时间与数据恢复边界满足约定目标。
* 使用备份的密钥与配置完成恢复，不暴露密钥值。
* 历史查询与受控新增写入均成功。
* 演练没有产生生产通知或对外写入。
* 明确负责后续改进的团队，并在存储、版本或拓扑发生重要变化后重新演练。

## 相关指南

* [部署 MoleSignal](https://docs.molesignal.com/zh-Hans/deployment)
* [生产检查清单](https://docs.molesignal.com/zh-Hans/deployment/production-checklist.md)
* [备份与恢复](https://docs.molesignal.com/zh-Hans/backup-restore.md)
* [自身可观测性](https://docs.molesignal.com/zh-Hans/self-observability.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.