1. 目的:为台湾托管服务器制定可执行的云空间备份与灾备(DR)演练流程,目标达到明确的RPO(数据丢失窗口)与RTO(恢复时间目标),并能在演练中验证可恢复性。实施前先确定负责人员、通讯链与联络方式。
2. 步骤:列出所有主机、虚拟机、应用、数据库、存储卷与DNS记录。按重要性分类(P0/P1/P2)。示例表格字段:主机名、IP、服务、数据路径、备份频率、负责人、恢复优先级。
3. 定义:为每类资产设定RPO与RTO(例如:P0 RPO=1小时,RTO=2小时)。选择备份类型:快照(VM/卷)、增量/差异、全量、数据库一致性备份。指定异地备份位置(例如台湾外公有云或国际S3兼容对象存储)。
4. MySQL 推荐:使用 xtrabackup 做热备,或 mysqldump 做逻辑备份。示例 mysqldump 命令:mysqldump --single-transaction --quick --lock-tables=false -u backup -p'密码' mydb > /backup/mydb_$(date +%F_%H%M).sql。若使用 xtrabackup:xtrabackup --backup --target-dir=/backup/xtrabackup/$(date +%F_%H%M)。完成后打包并上传到对象存储。
5. 文件备份:使用 LVM/ZFS 快照或直接 rsync 增量同步到备份节点。rsync 示例:rsync -az --delete --link-dest=/backup/prev /var/www/ backup@backup-host:/data/backups/$(date +%F)/。若使用虚拟机快照(例如 KVM qcow2 或 VMware),先暂停或冻结文件系统(fsfreeze),创建快照,再复制快照镜像。
6. rclone 配置与上传:rclone config 新建 remote 指向 S3 或 Arvan、GCP、AWS。示例同步:rclone sync /backup remote:bucket-name/backups/$(hostname)/ --transfers=16 --checkers=8 --fast-list。启用服务端加密或 rclone crypt 进行客户端加密。
7. 示例 crontab:0 */1 * * * /usr/local/bin/backup_db.sh >> /var/log/backup/db.log 2>&1(每小时数据库);0 2 * * * /usr/local/bin/backup_full.sh(每日全量)。建议以 systemd timer 管理复杂任务以获得可观察性与失败重试。
8. 策略示例:保留最近7天小时级备份、最近30天每日备份、最近12个月每月备份。自动清理命令示例:find /data/backups/ -type f -mtime +90 -name '*.tar.gz' -delete。对象存储可配置Lifecycle规则自动归档/删除。
9. 每次备份后需做校验:对文件计算 sha256sum 并与上次对比;数据库备份可做快速恢复到测试库并运行关键查询验证。示例:sha256sum file.tar.gz > file.tar.gz.sha256。rclone check remote:bucket/path /local/path --one-way。
10. 演练流程:1) 设定演练目标与范围;2) 通知相关人员与业务窗口;3) 启动只读流量隔离(降低影响);4) 从备份主机恢复到隔离网络:恢复数据库、应用文件、配置;5) 修改本地 /etc/hosts 或临时 DNS(低 TTL)进行流量切换;6) 运行 smoke test(关键接口与交易);7) 记录耗时与差异;8) 回滚与复盘。演练后产出改进清单并修订 runbook。
11. 恢复命令示例:数据库恢复:mysql -u root -p'密码' mydb < /restore/mydb_2026-05-01.sql。文件恢复:rsync -av --progress backup@backup-host:/data/backups/2026-05-01/ /var/www/。对象存储下载:rclone copy remote:bucket/backups/hostname/2026-05-01 /restore/ --checksum。
12. 答:建议至少每季度做一次全流程演练(包含恢复到异地环境与 DNS 切换),每月做一次局部恢复测试(数据库或关键服务恢复),并在重大变更后立即补做一次演练。
13. 答:可选用台湾境内+境外两端策略:短期快速恢复放在台湾其它机房或同城对象存储以降低恢复延迟,长期冷备放在廉价海外对象存储。利用 rsync 增量与对象存储 Lifecycle 降低传输与存储成本。
14. 答:采用事务一致备份(如 xtrabackup 或 binlog+增量备份),开启二进制日志并保留足够天数以支持 point-in-time 恢复;恢复时先导入全备再回放 binlog 到目标时间点,验证完整性后上线。