docs(ops): add backup and restore runbook

This commit is contained in:
nav
2026-05-12 12:44:08 +00:00
parent b7d66f334a
commit 0f7b99c687
2 changed files with 84 additions and 1 deletions

View File

@@ -0,0 +1,83 @@
# Fabric 备份与恢复 Runbookv1
## 1. 范围
- MySQL Center`fabric_center`
- MySQL Guild`fabric_guild`
- 可选:持久卷级别备份(`mysql_center_data` / `mysql_guild_data`
---
## 2. 备份策略(建议)
- 频率:每天 1 次全量(低峰期)
- 保留:最近 7~14 天
- 方式:`mysqldump`(逻辑备份)+ 异地对象存储
- 校验:每周至少一次恢复演练
---
## 3. 手动备份命令
> 在 `Fabric/` 目录执行
### 3.1 备份 Center
```bash
docker exec fabric-mysql-center sh -lc \
'mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" --single-transaction --quick --routines --events fabric_center' \
> backup-center-$(date +%F-%H%M%S).sql
```
### 3.2 备份 Guild
```bash
docker exec fabric-mysql-guild sh -lc \
'mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" --single-transaction --quick --routines --events fabric_guild' \
> backup-guild-$(date +%F-%H%M%S).sql
```
### 3.3 压缩
```bash
gzip backup-center-*.sql
gzip backup-guild-*.sql
```
---
## 4. 恢复流程
### 4.1 停写(建议)
- 先停 `backend-center` / `backend-guild`,避免恢复时写入冲突。
### 4.2 恢复 Center
```bash
gunzip -c backup-center-YYYY-MM-DD-HHMMSS.sql.gz | \
docker exec -i fabric-mysql-center sh -lc 'mysql -uroot -p"$MYSQL_ROOT_PASSWORD" fabric_center'
```
### 4.3 恢复 Guild
```bash
gunzip -c backup-guild-YYYY-MM-DD-HHMMSS.sql.gz | \
docker exec -i fabric-mysql-guild sh -lc 'mysql -uroot -p"$MYSQL_ROOT_PASSWORD" fabric_guild'
```
### 4.4 恢复后检查
- 启动后端服务
- 调用:
- `GET /api/healthz`
- `GET /api/metrics`
- 随机抽查:
- 用户登录
- 节点注册列表
- 消息拉取/回补
---
## 5. 演练清单
- [ ] 恢复耗时记录
- [ ] 数据一致性抽样
- [ ] 回滚预案验证
- [ ] 文档更新(命令/版本/风险)
---
## 6. 风险与注意事项
- 恢复前先确认目标库环境(避免误写生产)
- 密钥与密码不要写入仓库,统一走环境变量
- `DB_SYNC` 在生产保持 `false`,结构变更走 migration