类型说明频率保留时间全量备份备份所有数据每周一次4周增量备份备份新增数据每天7天差异备份备份与上次全量差异每天7天实时备份数据变化即时同步实时-
markdown
# 数据备份策略
版本:V1.0
更新日期:YYYY-MM-DD
维护人:XXX
---
## 1. 备份目标
### 1.1 备份范围
| 数据类型 | 重要程度 | 数据量 | 说明 |
|----------|----------|--------|------|
| 业务数据 | 关键 | XX GB | 核心业务数据 |
| 用户数据 | 关键 | XX GB | 用户信息 |
| 配置数据 | 重要 | XX MB | 系统配置 |
| 日志数据 | 一般 | XX GB | 操作日志 |
| 代码仓库 | 重要 | XX GB | Git仓库 |
### 1.2 恢复时间目标(RTO)
- 关键业务:≤1小时
- 一般业务:≤4小时
### 1.3 恢复点目标(RPO)
- 关键业务:≤15分钟
- 一般业务:≤1小时
---
## 2. 备份策略
### 2.1 数据库备份
| 备份类型 | 执行时间 | 保留策略 |
|----------|----------|----------|
| 全量备份 | 每周日 02:00 | 保留4周 |
| 差异备份 | 每天 02:00 | 保留7天 |
| 日志备份 | 每15分钟 | 保留7天 |
### 2.2 文件备份
| 备份类型 | 执行时间 | 保留策略 |
|----------|----------|----------|
| 全量备份 | 每周日 03:00 | 保留4周 |
| 增量备份 | 每天 03:00 | 保留7天 |
### 2.3 配置备份
| 备份类型 | 执行时间 | 保留策略 |
|----------|----------|----------|
| 变更时备份 | 配置变更时 | 保留10个版本 |
---
## 3. 备份存储
### 3.1 存储架构
本地磁盘(每日) ↓ 本地备份服务器(每周) ↓ 异地云存储(每月)
text
### 3.2 存储位置
| 层级 | 位置 | 用途 |
|------|------|------|
| L1 | 应用服务器本地 | 快速恢复 |
| L2 | 备份服务器 | 本地冗余 |
| L3 | 云存储(OSS/S3) | 异地容灾 |
### 3.3 存储容量规划
| 数据类型 | 日增量 | 月总量 | 存储规划 |
|----------|--------|--------|----------|
| 数据库 | XX GB | XX GB | 留100%余量 |
| 文件 | XX GB | XX GB | 留50%余量 |
---
## 4. 备份脚本示例
### MySQL备份脚本
```bash
#!/bin/bash
# MySQL全量备份脚本
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup/mysql"
MYSQL_USER="backup"
MYSQL_PASS="password"
DATABASE="myapp"
# 创建备份目录
mkdir -p ${BACKUP_DIR}/${DATE}
# 执行备份
mysqldump -u${MYSQL_USER} -p${MYSQL_PASS} \
--single-transaction \
--routines --triggers \
${DATABASE} | gzip > ${BACKUP_DIR}/${DATE}/${DATABASE}.sql.gz
# 删除7天前的备份
find ${BACKUP_DIR} -type d -mtime +7 -exec rm -rf {} \;
# 记录日志
echo "[$(date)] Backup completed: ${DATABASE}" >> /var/log/backup.log
bash
#!/bin/bash
# 文件增量备份脚本
DATE=$(date +%Y%m%d)
SOURCE_DIR="/data/app"
BACKUP_DIR="/backup/files"
REMOTE_BUCKET="s3://mybackup"
# 创建备份目录
mkdir -p ${BACKUP_DIR}/${DATE}
# 增量备份(使用rsync)
rsync -av --delete \
${SOURCE_DIR}/ \
${BACKUP_DIR}/${DATE}/
# 同步到云存储
aws s3 sync ${BACKUP_DIR}/${DATE}/ ${REMOTE_BUCKET}/${DATE}/
# 记录日志
echo "[$(date)] File backup completed" >> /var/log/backup.log
bash
# 全量恢复
gunzip < backup.sql.gz | mysql -u root -p database
# 基于时间点恢复
mysqlbinlog --stop-datetime="2024-01-01 10:00:00" binlog.000001 | mysql
bash
# 从本地恢复
rsync -av /backup/files/20240101/ /data/app/
# 从云存储恢复
aws s3 sync s3://mybackup/20240101/ /data/app/
频率内容执行人每季度完整恢复演练DBA每月数据抽样恢复测试运维每周备份完整性检查自动
监控项阈值告警方式备份任务状态失败短信/邮件备份大小异常变化>50%邮件存储空间使用>80%邮件恢复演练未执行>90天邮件