目标是为香港 CN2 云服务器设计一个“廉价、可靠、可恢复”的备份方案:本地快照+增量文件备份+异地对象存储(S3/B2/自建)+定期恢复演练。要求低带宽成本、自动化、可验证性与数据加密。
列出要点:A) 磁盘类型(云盘/本地盘)与分区/LVM;B) 关键数据(/var/www、/etc、数据库)清单;C) 带宽峰值与备份时间窗;D) 目标存储(阿里云OSS、S3、Backblaze B2、同城异机)。准备工具:rsync、tar、lvm2、mysqldump或xtrabackup、rclone、gpg。
步骤:1) 建立备份用户 backup,限制权限;2) 首次全量:sudo rsync -aHAX --delete --numeric-ids /data/ /backup/local/data/;3) 做增量采用 rsync + hardlink(cp -al)方案:先 cp -al /backup/last /backup/$(date +%F) 然后 rsync --link-dest=/backup/last /data/ /backup/$(date +%F)/;4) 定时:写 cron 每日凌晨 2 点运行备份脚本;5) 保留策略:保留7天日备、4周周备、12月月备(用 find 删除旧备份)。
如果使用 LVM:1) sudo lvcreate -L1G -s -n lv_snap /dev/vg/lvdata;2) mount /dev/vg/lv_snap /mnt/snap;3) 使用 rsync/tar 从 /mnt/snap 产生备份到本地或打包 gzip;4) umount /mnt/snap && lvremove /dev/vg/lv_snap。若云提供快照 API(如云盘快照),优先使用 API 快照并导出到对象存储。
MySQL:1) 使用 mysqldump:mysqldump --single-transaction --routines --events -A -u root -p'密码' > /backup/mysql/backup_$(date +%F).sql;2) 大库建议用 Percona XtraBackup 做热备并生成 tar;3) 备份后压缩并计算 sha256sum:gzip && sha256sum file.gz > file.gz.sha256;Postgres:pg_dumpall 或 pg_basebackup。务必保存 binlog 或 WAL 用于增量恢复。
示例 rclone 流程:1) rclone config 添加远端(s3 endpoint 填香港区域或第三方 B2);2) 本地打包并用 gpg 对称加密:gpg --symmetric --cipher-algo AES256 backup.tar.gz;3) rclone copy /backup/remote encrypted_backup:bucket/ --transfers=4 --checkers=8 --use-server-modtime;4) 在 rclone 上启用版本/生命周期策略以节省费用;5) 在脚本中加入重试与错误邮件告警(mailx 或发送 webhook)。
恢复文件:rclone copy encrypted_backup:bucket/backup.tar.gz.gpg /tmp && gpg --output backup.tar.gz --decrypt backup.tar.gz.gpg && tar -xzvf backup.tar.gz -C /restore/path。恢复数据库(MySQL):mysql -u root -p < backup.sql。演练频率:至少季度一次即时恢复演练,记录 RTO 和 RPO,校验 sha256sum。保持恢复文档在版本控制中。
优化点:A) 使用增量与去重(rsync + hardlink 或 borg)减少上传量;B) 在低峰期(夜间)上传大数据,限速避免影响业务;C) 启用对象存储生命周期(冷存/归档)以节约长期存储费用;D) 合理设置快照频率(关键数据日级,次要周级)。
安全措施:使用 SSH key、限制备份用户、对备份文件全盘或文件级加密、备份目标开启 MFA。监控:配置脚本返回码上报到 Prometheus 或通过邮件/钉钉告警;备份文件完整性通过 sha256 校验并保存校验记录。
问:把备份放在同一云商的不同机房能满足异地备份吗?
答:可以作为低成本灾备选项,但最好同时有第三方或自建异地备份(例如公有对象存储或另一家云商),以规避单一供应商故障或区域性事件。
问:香港 CN2 线路带宽有限,备份时如何避免影响业务?
答:限速上传(rsync --bwlimit 或 rclone --bwlimit),安排在业务低峰夜间,首次全量使用快传介质或离线迁移,之后仅传增量并启用压缩与去重。
问:如果恢复失败或数据损坏,有没有推荐的快速回滚方法?
答:保持最近一次可用快照(磁盘快照或 LVM snapshot)并保留短期回滚点;数据库建议保留 binlog/WAL 以做时间点恢复(PITR),并在演练中验证回滚流程。