58 lines
1.8 KiB
Markdown
58 lines
1.8 KiB
Markdown
# 11.9 备份与恢复
|
||
|
||
:::tip 概述
|
||
备份三件套:**数据库**(核心)、**upload 目录**(业务资产)、**配置与 .env**(密钥)。Redis 不需备份(缓存可重建)。定期演练恢复比备份本身更重要。
|
||
:::
|
||
|
||
## 备份对象与策略
|
||
|
||
| 对象 | 方式 | 频率建议 |
|
||
|---|---|---|
|
||
| MySQL | mysqldump / xtrabackup / 云快照 | 全量每日 + binlog 增量(按 RPO 定) |
|
||
| upload 目录 | rsync / 对象存储同步 | 每日增量 |
|
||
| config.yaml + .env | 纳入配置库(.env 用加密通道) | 变更时 |
|
||
| Redis | 不备份 | 丢失后自动重建缓存(注意黑名单语义变弱) |
|
||
|
||
## mysqldump 示例
|
||
|
||
```bash
|
||
# 全量
|
||
mysqldump -uroot -p --single-transaction --routines \
|
||
easygoadmin.gin.elevue | gzip > backup_$(date +%F).sql.gz
|
||
```
|
||
|
||
`--single-transaction` 保证 InnoDB 一致性快照、不锁表。
|
||
|
||
## 恢复演练
|
||
|
||
```bash
|
||
gunzip < backup_2026-10-25.sql.gz | mysql -uroot -p easygoadmin.gin.elevue
|
||
```
|
||
|
||
恢复后验证:
|
||
|
||
- [ ] 表数量与关键表行数
|
||
- [ ] 超管可登录、菜单完整
|
||
- [ ] upload 目录文件可访问(域名配置一致)
|
||
- [ ] 定时任务正常调度
|
||
|
||
## 恢复目标(RTO/RPO)
|
||
|
||
| 指标 | 含义 | 由什么决定 |
|
||
|---|---|---|
|
||
| RPO | 最多丢多少数据 | 备份频率 + binlog 保留 |
|
||
| RTO | 多快恢复服务 | 备份介质速度 + 恢复演练熟练度 |
|
||
|
||
中小基线:RPO ≤ 24h(每日全量)、RTO ≤ 2h(演练过的标准恢复流程)。
|
||
|
||
## 注意
|
||
|
||
- 备份文件与生产网段隔离(防勒索软件连备份一起加密)
|
||
- 密钥(.env/JWT)单独安全存放——只有库没有密钥无法恢复服务
|
||
- 版本升级/大变更前**强制临时全量**
|
||
|
||
## 相关
|
||
|
||
- [11.3 数据库初始化与迁移](/zh/deploy/db-migrate.html)
|
||
- [11.10 故障排查手册](/zh/deploy/troubleshooting.html)
|