第一步明确业务优先级与容忍时间。列出每个站点/服务的恢复时间目标(RTO)与恢复点目标(RPO)。例如:核心业务RTO≤15分钟、RPO≤5分钟;次要站点RTO≤4小时、RPO≤1小时。评估步骤:1) 列表化服务与依赖(Web、DB、缓存、对象存储、DNS);2) 估算数据变化率决定备份频率;3) 计算存储与网络成本;4) 形成SLA矩阵并签署。
采用三层备份:1)本地快照(LVM/ZFS)用于秒级恢复;2)每天增量同步到同城异机房或对象存储(S3兼容);3)每周/每月归档到异地区(国外或台湾另一区)作为灾难恢复。设计要点:备份加密(AES-256),版本管理(保留策略),校验(checksums),自动化与告警。
推荐工具:rsync用于简单同步,borg/restic用于去重加密备份,rclone用于S3兼容远端。示例rsync命令(增量、压缩、保留权限):rsync -azh --delete --numeric-ids --exclude='cache/' /var/www/ backup@remote:/data/site/。示例borg(初始化+备份+ prune): 1) borg init --encryption=repokey /backup/repo 2) borg create /backup/repo::'{hostname}-{now:%Y-%m-%d}' /var/www --compression lz4 3) borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6
对高并发写入目录优先使用快照再导出备份。LVM示例流程:1) lvcreate --size 1G --snapshot --name snap_www /dev/vg/www;2) mount /dev/vg/www-snap /mnt/snap;3) rsync -azh /mnt/snap/ backup@remote:/data/;4) umount /mnt/snap;5) lvremove /dev/vg/www-snap。ZFS示例:zfs snapshot pool/www@bak1;zfs send pool/www@bak1 | ssh remote zfs receive pool/www。
选择行级或物理备份:小库可用逻辑备份(mysqldump),大库应用物理备份(Percona XtraBackup)和主从复制。mysqldump示例: mysqldump --single-transaction --master-data=2 -u root -p database > /backup/db_dump.sql Percona物理备份示例(xtrabackup): xtrabackup --backup --target-dir=/backup/xb201 xtrabackup --prepare --target-dir=/backup/xb201 rsync /backup/xb201 remote:/backup/。 同时配置异地从库:执行 CHANGE MASTER TO MASTER_HOST='master_ip', ...; START SLAVE; 并监控延迟(Seconds_Behind_Master)。
用cron或systemd timer管理备份任务并写日志与告警。示例cron:0 */4 * * * /usr/local/bin/backup_daily.sh >> /var/log/backup.log 2>&1。backup_daily.sh 应包含:锁文件防止并发、清理旧备份、校验sha256、上传并返回状态码。集成Prometheus节点导出器+Alertmanager,失败触发邮件/Slack。
为减少带宽使用:1) 首次全量以物理介质或离线拷贝(若带宽受限);2) 后续使用增量与去重(borg/restic);3) 使用rsync --link-dest实现硬链接保留多个版本;4) 启用压缩(lz4)与加密。网络策略:安排在业务低峰窗口执行、QoS限速、防止拥塞。
为每个故障场景写详细runbook:1) 初步判断(网络/机房/应用故障);2) 启动负责人与通讯链路;3) 恢复优先级列表(DNS切换/读写分离/流量导向);4) 恢复命令示例(从备份恢复MySQL: xtrabackup --copy-back ... ; 恢复文件:rsync -azh backup@remote:/data/site/ /var/www/);5) 验证步骤和回滚指令。定期桌面演练并记录时间。
本地高可用用Keepalived+VRRP或HAProxy做主动/被动切换。跨机房可用DNS做快速切换:1) 选择支持健康检查与低TTL的DNS供应商;2) 预配置备用IP并测试切换;3) 对于有BGP资源的情况,使用BGP Anycast做流量引导。注意DNS缓存和浏览器缓存会影响最终RTO。
每月/每季进行恢复演练(从异地备份恢复完整站点),记录RTO/RPO达成情况。备份日志保留与审计,证明备份成功与数据完整性(校验和)。遵守台湾地区相关法律与客户合约,敏感数据加密并保留数据访问日志。
问:如何在台湾多机房中实现最小RTO?
答:采用主动-主动或主动-被动架构,关键点是实时复制(数据库主从或Galera)、本地负载均衡配合全球/同城DNS健康检查、预热缓存机制和自动化故障切换脚本。提前预置备用实例与同步数据,确保切换后服务能自动恢复并验证。
问:备份数据如何安全传输到第三方对象存储?
答:使用TLS传输并在客户端加密(restic/borg),启用服务端访问控制与生命周期策略。使用临时访问凭证或IAM角色,限制写权限并启用版本与防篡改(object lock)功能,定期轮换密钥。
问:恢复演练频率和评估指标有哪些建议?
答:建议每月做一次小范围恢复(单服务或单节点),每季度做一次全量故障演练。评估指标包含实际RTO、RPO、恢复成功率、手动介入时间和演练中发现的问题数量,演练后更新runbook并修复检测到的缺陷。