Files
Fabric/docs/backup-and-restore-runbook.md

84 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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