# 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)