1.
准备工作与架构设计
- 确认业务规模:估算需备份的数据量(每日变更量)、恢复点目标(RPO)与恢复时间目标(RTO)。
- 节点规划:至少准备 3 个物理/云节点:主生产(CN2 VPS 日本)、异地备份节点 A(国内或香港)、异地备份节点 B(另一区域),形成多活或主备+候备架构。
- 选择工具:文件/数据库可选 rsync/rsnapshot、增量加密备份可选 borg/restic、对象存储可选 S3 / rclone 对接。
2.
网络与安全配置(CN2 VPS 特殊考虑)
- 检查 CN2 链路:在日本 VPS 上用 mtr / ping 检测到各备份节点的链路延迟与丢包率,确认稳定性。
- 防火墙与只允许备份源 IP:在每个节点上配置 ufw/iptables,仅开放 SSH(端口建议改为非22)和备份端口。示例:ufw allow from 1.2.3.4 to any port 2222。
- SSH 密钥:在主机生成专用备份密钥(ssh-keygen -t ed25519 -f /root/.ssh/backup_cn2),将公钥放到备份节点的 /home/backup/.ssh/authorized_keys,禁用密码登录。
3.
部署基础备份用户与目录
- 创建备份用户:useradd -m -s /bin/bash backup && passwd -l backup。
- 目录与权限:在备份节点创建 /data/backups、/data/archives,chown backup:backup 并设置 700 权限。
- 磁盘与挂载:为备份分配独立磁盘或 LVM,格式化并写入 fstab,保证挂载点稳定。
4.
使用 rsync 设置基础增量传输
- 命令示例(主 -> 备节点):rsync -azP --delete --link-dest=/data/backups/latest /var/www/ backup@10.0.0.2:/data/backups/incoming/。
- 使用 hardlink 实现增量节省空间:本地在备节点创建 daily-YYYYMMDD,然后用 rsync + link-dest 指向 latest。
- 定时:在主机上写 crontab:0 2 * * * /usr/local/bin/backup_rsync.sh,脚本中包含日志轮转与异常报警(通过邮件或 webhook)。
5.
采用 borg/restic 做可验证的加密备份
- 初始化仓库(示例 borg):sudo -u backup borg init --encryption=repokey /data/backups/borgrepo。
- 备份命令示例:borg create -v --stats /data/backups/borgrepo::'{hostname}-{now:%Y-%m-%d}' /etc /var/lib/mysql。
- 验证与垃圾回收:borg check / borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6。restic 操作类似,支持 S3 后端。
6.
多节点复制与异地冗余策略
- 主节点推送 + 备份节点互推:主节点先把数据推到节点 A,节点 A 再同步副本到节点 B,或同时并行推到 A 和 B。并行通过后台并发任务或队列管理。
- 异地对象存储:使用 rclone 将备份仓库定期上传到 S3 / 阿里云 OSS(加密后),示例:rclone copy /data/backups/borgrepo remote:bucket/backups --transfers=4。
- 跨区域校验:每日自动校验每个节点上的备份校验和,确保一致性(borg check/restic check 或 rsync --checksum)。
7.
自动化与系统服务化(systemd timers)
- 将脚本包装为 systemd service 与 timer,替代 cron 更易于监控与重试。示例单位文件 /etc/systemd/system/backup.service 与 /etc/systemd/system/backup.timer。
- 示例 timer:OnCalendar=02:00,Restart=on-failure,记录日志到 journal 并收集到集中日志(ELK / Loki)。
8.
数据库备份注意事项(MySQL/Postgres)
- MySQL:优先使用物理快照(LVM snapshot)或使用 mysqldump/ Mariabackup。示例 mysqldump --single-transaction --master-data=2。
- Postgres:使用 pg_basebackup 或 WAL 归档+ restore,确保备份与 WAL 的分离并能重放。
- 将数据库备份文件纳入同样的 borg/restic 流程并加密传输。
9.
监控、报警与演练流程
- 监控:暴露备份任务状态(成功/失败/耗时/大小),使用 Prometheus node_exporter + 自定义 exporter 抓取脚本返回码。
- 报警:失败通过钉钉/邮箱/SMS 通知,并自动触发次级重试。
- 演练:至少每季度做一次恢复演练,从备份中恢复文件与数据库,验证 RTO。记录演练报告,修正流程瓶颈。
10.
恢复与故障切换实操步骤
- 小规模恢复:在恢复节点用 borg extract /restic restore 恢复指定路径,检查权限与 SELinux。
- 故障切换:若日本 CN2 VPS 故障,DNS 切换到备节点(缩短 TTL),或用 BGP/负载均衡做 IP 级切换。确保应用配置中的数据库/缓存地址能快速切换。
- 回切:主站恢复后,采用双向增量同步避免数据丢失(禁用自动双写前先冷对比)。
11.
常见问题与优化建议
- 带宽与窗口:CN2 链路有带宽限制时,使用分片/限速(rsync --bwlimit)或夜间窗口,优先传输增量。
- 存储成本:冷存储 + 热存储分层策略,近期快速恢复保存在本地,长期归档上 S3 Glacier。
- 合规与加密:备份必须加密并管理密钥(KMS),定期轮换密钥并保留密钥备份。
12.
实施清单与验收标准
- 清单:SSH 密钥、备份用户、磁盘挂载、备份脚本、systemd timers、监控报警、恢复演练记录、加密与密钥管理。
- 验收标准:完成 7 天内任一时间点恢复、每日备份成功率 99.9%、跨节点校验无误差、演练通过并记录。
13.
问:在 CN2 VPS 日本节点做备份有什么特殊需要注意的地方?
- 答:注意链路稳定性与带宽,提前用 mtr/ping 测试延迟和丢包;调整 rsync 限速(--bwlimit)与并发。对外出口 IP 可能变动或受流量策略影响,建议配合弹性公网 IP 或 DNS 切换策略。
14.
问:如何保证多节点备份的一致性与不重复占用空间?
- 答:使用支持去重的备份工具(borg/restic)或 rsync+hardlink 的增量策略;在每个节点做校验(checksum)并采用统一的保留策略(如 keep-daily/weekly/monthly),避免无限复制。
15.
问:演练与自动化失败时如何快速定位并恢复?
- 答:先查看 systemd/journal 日志与备份脚本日志,确认失败阶段(传输/写入/校验)。采用最近一份成功的备份进行恢复,并在恢复后修复根因:网络、权限、磁盘空间或密钥问题,同时触发报警复盘。
来源:企业级备份部署教程 cn2 vps 日本 与多节点容灾策略