新增MySQL备份恢复脚本并完成演练

This commit is contained in:
hello-dd-code
2026-02-28 16:39:53 +08:00
parent 5666dc61a0
commit 016c47ba75
4 changed files with 180 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
# 数据备份策略与恢复演练
对应 issue`#12 [P1][T9] 备份策略与恢复演练`
## 1. 备份策略
- 备份脚本:`scripts/ops/backup_mysql.sh`
- 备份格式:`<db>_YYYYmmdd_HHMMSS.sql.gz`
- 默认保留:`KEEP_DAYS=7`
- 支持告警:`OPS_ALERT_WEBHOOK`
推荐 cron(每天 02:00):
```bash
0 2 * * * MYSQL_HOST=127.0.0.1 MYSQL_PORT=3306 MYSQL_USER=root MYSQL_PASSWORD=*** MYSQL_DATABASE=wx_service BACKUP_DIR=/var/backups/wx_service KEEP_DAYS=7 OPS_ALERT_WEBHOOK="https://example.com/webhook" /path/to/wx_service/scripts/ops/backup_mysql.sh >> /var/log/wx_service-backup.log 2>&1
```
## 2. 恢复流程
- 恢复脚本:`scripts/ops/restore_mysql.sh`
- 为避免误操作,必须显式设置:`CONFIRM_RESTORE=1`
示例:
```bash
CONFIRM_RESTORE=1 MYSQL_HOST=127.0.0.1 MYSQL_PORT=3306 MYSQL_USER=root MYSQL_PASSWORD=*** MYSQL_DATABASE=wx_service /path/to/wx_service/scripts/ops/restore_mysql.sh /var/backups/wx_service/wx_service_20260228_020000.sql.gz
```
## 3. 演练建议
1. 先在演练库执行恢复,不要直接对生产库恢复。
2. 恢复后执行关键表行数与抽样数据校验。
3. 记录耗时、失败点、回滚步骤,形成固定 runbook。
@@ -0,0 +1,28 @@
# 备份恢复演练记录(2026-02-28
对应 issue`#12 [P1][T9] 备份策略与恢复演练`
## 演练环境
- MySQL`mysql:8.0` 临时容器
- 数据库:`wx_service`
- 备份目录:`/tmp/wx_service_backup_drill`
## 演练步骤
1. 初始化库并导入 `docs/sql/smoke.sql`
2. 插入一条样本数据到 `fa_smoke_log`
3. 执行备份脚本:
- `scripts/ops/backup_mysql.sh`
4. 清空 `fa_smoke_log`
5. 执行恢复脚本:
- `scripts/ops/restore_mysql.sh`
6. 对比恢复前后行数
## 演练结果
- 备份文件:`/tmp/wx_service_backup_drill/wx_service_20260228_163926.sql.gz`
- 清空后行数:`0`
- 恢复后行数:`1`
结论:本次恢复演练成功,备份文件可用于恢复关键业务表数据。