备份与恢复 #

一、备份概述 #

1.1 备份类型 #

text
备份类型:
├── 自动备份
│   ├── 自动创建
│   ├── 保留期可配置
│   └── 支持时间点恢复
├── 手动快照
│   ├── 手动创建
│   ├── 永久保留
│   └── 可跨区域复制
└── 快照导出
    └── 导出到S3

1.2 备份特点 #

text
Neptune备份特点:
├── 增量备份
├── 不影响性能
├── 自动存储复制
├── 加密存储
└── 跨可用区

二、自动备份 #

2.1 配置自动备份 #

bash
# 设置备份保留期
aws neptune modify-db-cluster \
  --db-cluster-identifier my-neptune-cluster \
  --backup-retention-period 7 \
  --preferred-backup-window "03:00-04:00"

2.2 备份保留期 #

text
保留期选项:
├── 0:禁用自动备份
├── 1-35天:标准保留期
└── 建议:生产环境至少7天

2.3 时间点恢复 #

bash
# 恢复到指定时间点
aws neptune restore-db-cluster-to-point-in-time \
  --source-db-cluster-identifier my-neptune-cluster \
  --db-cluster-identifier my-neptune-restored \
  --restore-to-time "2024-01-15T10:00:00Z"

# 恢复到最近时间
aws neptune restore-db-cluster-to-point-in-time \
  --source-db-cluster-identifier my-neptune-cluster \
  --db-cluster-identifier my-neptune-restored \
  --use-latest-restorable-time

三、手动快照 #

3.1 创建快照 #

bash
# 创建集群快照
aws neptune create-db-cluster-snapshot \
  --db-cluster-snapshot-identifier my-snapshot-2024-01-15 \
  --db-cluster-identifier my-neptune-cluster

# 查看快照状态
aws neptune describe-db-cluster-snapshots \
  --db-cluster-snapshot-identifier my-snapshot-2024-01-15

3.2 从快照恢复 #

bash
# 从快照恢复集群
aws neptune restore-db-cluster-from-snapshot \
  --db-cluster-identifier my-neptune-restored \
  --snapshot-identifier my-snapshot-2024-01-15 \
  --db-subnet-group-name my-neptune-subnet

# 创建实例
aws neptune create-db-instance \
  --db-instance-identifier my-neptune-restored-primary \
  --db-instance-class db.r5.large \
  --engine neptune \
  --db-cluster-identifier my-neptune-restored

3.3 管理快照 #

bash
# 列出所有快照
aws neptune describe-db-cluster-snapshots

# 删除快照
aws neptune delete-db-cluster-snapshot \
  --db-cluster-snapshot-identifier my-old-snapshot

# 复制快照
aws neptune copy-db-cluster-snapshot \
  --source-db-cluster-snapshot-identifier arn:aws:rds:region:account:snapshot:source-snapshot \
  --target-db-cluster-snapshot-identifier my-copied-snapshot

四、跨区域复制 #

4.1 复制快照到其他区域 #

bash
# 复制到其他区域
aws neptune copy-db-cluster-snapshot \
  --source-db-cluster-snapshot-identifier arn:aws:rds:us-east-1:account:snapshot:my-snapshot \
  --target-db-cluster-snapshot-identifier my-snapshot-copy \
  --source-region us-east-1 \
  --region us-west-2

4.2 跨区域恢复 #

bash
# 在目标区域恢复
aws neptune restore-db-cluster-from-snapshot \
  --db-cluster-identifier my-neptune-dr \
  --snapshot-identifier my-snapshot-copy \
  --region us-west-2

五、快照导出 #

5.1 导出到S3 #

bash
# 创建导出任务
aws neptune start-export-task \
  --export-task-identifier my-export \
  --source-arn arn:aws:rds:region:account:snapshot:my-snapshot \
  --s3-bucket-name my-export-bucket \
  --iam-role-arn arn:aws:iam::account:role/neptune-export-role \
  --kms-key-id arn:aws:kms:region:account:key/key-id

5.2 导出格式 #

text
导出格式:
├── Parquet:列式存储
├── CSV:逗号分隔
└── JSON:JSON格式

六、备份策略 #

6.1 推荐备份策略 #

text
备份策略建议:
├── 自动备份:7-35天保留期
├── 每日快照:保留7天
├── 每周快照:保留4周
├── 每月快照:保留12个月
└── 跨区域复制:关键快照

6.2 自动化备份脚本 #

bash
#!/bin/bash

CLUSTER_ID="my-neptune-cluster"
DATE=$(date +%Y-%m-%d)
SNAPSHOT_ID="daily-${DATE}"

# 创建快照
aws neptune create-db-cluster-snapshot \
  --db-cluster-snapshot-identifier ${SNAPSHOT_ID} \
  --db-cluster-identifier ${CLUSTER_ID}

# 删除7天前的快照
OLD_DATE=$(date -d "-7 days" +%Y-%m-%d)
OLD_SNAPSHOT="daily-${OLD_DATE}"

aws neptune delete-db-cluster-snapshot \
  --db-cluster-snapshot-identifier ${OLD_SNAPSHOT} || true

七、恢复测试 #

7.1 恢复测试流程 #

text
恢复测试步骤:
├── 1. 创建测试环境
├── 2. 从快照恢复
├── 3. 验证数据完整性
├── 4. 验证应用连接
├── 5. 记录恢复时间
└── 6. 清理测试环境

7.2 恢复验证脚本 #

bash
#!/bin/bash

# 恢复集群
aws neptune restore-db-cluster-from-snapshot \
  --db-cluster-identifier test-restore \
  --snapshot-identifier my-snapshot

# 等待集群可用
aws neptune wait db-cluster-available \
  --db-cluster-identifier test-restore

# 验证数据
curl -X POST https://test-restore-endpoint:8182/status

# 清理
aws neptune delete-db-cluster \
  --db-cluster-identifier test-restore \
  --skip-final-snapshot

八、灾难恢复 #

8.1 DR架构 #

text
DR架构选项:
├── 备份恢复
│   └── RTO: 小时级, RPO: 分钟级
├── 跨区域复制
│   └── RTO: 小时级, RPO: 小时级
├── 全球数据库
│   └── RTO: 分钟级, RPO: 秒级
└── 多活架构
    └── RTO: 秒级, RPO: 秒级

8.2 DR演练 #

text
DR演练步骤:
├── 1. 触发DR流程
├── 2. 在备用区域恢复
├── 3. 验证数据完整性
├── 4. 切换应用流量
├── 5. 验证业务功能
└── 6. 记录演练结果

九、最佳实践 #

9.1 备份最佳实践 #

text
备份建议:
├── 启用自动备份
├── 定期创建手动快照
├── 配置跨区域复制
├── 定期测试恢复
└── 监控备份状态

9.2 恢复最佳实践 #

text
恢复建议:
├── 记录恢复步骤
├── 定期演练恢复
├── 验证数据完整性
├── 监控恢复时间
└── 保留恢复日志

十、总结 #

备份与恢复要点:

项目 说明
自动备份 时间点恢复
手动快照 永久保留
跨区域复制 灾难恢复
快照导出 数据迁移
恢复测试 验证可用性

最佳实践:

  1. 启用自动备份
  2. 定期创建快照
  3. 配置跨区域复制
  4. 定期测试恢复
  5. 监控备份状态

下一步,让我们学习安全配置!

最后更新:2026-03-27