签入版本
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
# 11.9 备份与恢复
|
||||
|
||||
:::tip 概述
|
||||
备份对象:数据库(核心)、上传文件、配置与密钥。恢复演练与备份同等重要——未经验证的备份不算备份。
|
||||
:::
|
||||
|
||||
## 备份对象与策略
|
||||
|
||||
| 对象 | 方式 | 频率 | 保留 |
|
||||
|------|------|------|------|
|
||||
| MySQL | mysqldump / xtrabackup | 全量每日 + binlog | 30 天 + 月度归档 |
|
||||
| 上传文件 upload/ | rsync 快照 / 对象存储同步 | 每日增量 | 30 天 |
|
||||
| 配置与密钥 | 私有仓库/密钥库 | 变更时 | 长期 |
|
||||
| Redis | 不备份(缓存可重建) | — | — |
|
||||
|
||||
::: warning Redis 不备份的边界
|
||||
Redis 存黑名单/在线会话/验证码——不备份可接受(重启后会话重登录,令牌黑名单靠 TTL 自然过期)。若"强退立即生效"是合规要求,接受重启窗口内的令牌复活风险或启用 Redis 持久化(RDB)。
|
||||
:::
|
||||
|
||||
## MySQL 备份脚本示例
|
||||
|
||||
```sh
|
||||
#!/bin/bash
|
||||
# backup.sh — 每日全量
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
DB=easygoadmin.goframe.elevue
|
||||
DIR=/backup/mysql
|
||||
|
||||
mysqldump -uroot -p"$DB_PASS" --single-transaction --routines --triggers \
|
||||
"$DB" | gzip > "$DIR/${DB}_${DATE}.sql.gz"
|
||||
|
||||
# 保留 30 天
|
||||
find "$DIR" -name "*.sql.gz" -mtime +30 -delete
|
||||
```
|
||||
|
||||
crontab:`0 2 * * * /opt/backup/backup.sh`(避开 LogClean 02:30 高峰可调 01:30)。
|
||||
|
||||
## 上传文件备份
|
||||
|
||||
```sh
|
||||
# rsync 增量(upload 目录每日变化小)
|
||||
rsync -a --delete /opt/easygoadmin/upload/ /backup/upload/
|
||||
```
|
||||
|
||||
多实例共享卷场景:备份一份共享卷即可。
|
||||
|
||||
## 恢复流程
|
||||
|
||||
```text
|
||||
数据库恢复:
|
||||
1. 停服务(防写入)
|
||||
2. mysql -uroot -p "$DB" < 解压后的.sql(或 xtrabackup --copy-back)
|
||||
3. 验证:表数量 / admin 账号 / 行数抽查
|
||||
4. 启服务 → health + 冒烟
|
||||
|
||||
上传文件恢复:
|
||||
rsync 回源目录 → 验证图片/文件可访问
|
||||
```
|
||||
|
||||
## 恢复演练(季度)
|
||||
|
||||
```text
|
||||
□ 独立恢复环境拉起(勿在生产演练)
|
||||
□ 全量备份恢复 → 数据完整性核对(表/行数/关键数据)
|
||||
□ 记录恢复耗时(RTO 评估)
|
||||
□ 修正备份脚本缺陷
|
||||
```
|
||||
|
||||
## RPO / RTO 参考
|
||||
|
||||
| 方案 | RPO(最大数据丢失) | RTO(恢复耗时) |
|
||||
|------|--------------------|-----------------|
|
||||
| 每日全量 | ≤24h | 30min~2h(视数据量) |
|
||||
| 全量+binlog 增量 | 近零(秒级) | 1h~4h |
|
||||
| 主从/双机热备 | 秒级 | 分钟级(自动切换) |
|
||||
|
||||
按业务容忍度选择——中后台系统每日全量+binlog 通常足够。
|
||||
|
||||
## 备份安全
|
||||
|
||||
```text
|
||||
□ 备份文件加密存储(含全量数据=敏感资产)
|
||||
□ 异地存储(防机房级故障)
|
||||
□ 访问权限最小化(备份账号只读)
|
||||
□ 传输通道加密(scp/rsync over ssh)
|
||||
□ 备份保留与合规对齐(操作日志保留 90 天为默认下限)
|
||||
```
|
||||
Reference in New Issue
Block a user