(1)明确RPO与RTO:先定义恢复点目标(RPO,例如15分钟、1小时或24小时)和恢复时间目标(RTO,例如30分钟、4小时或24小时)。
(2)资产清单:列出站群服务器、数据库、存储、配置文件、证书与DNS记录。记录每一项的重要性(A/B/C级)。
(3)合规与数据主权:台湾业务若有当地法规或客户要求,明确数据需留在台湾或允许跨境备份。
(1)三级备份策略:热备(同步/近同步)、冷备(定时备份)与离线备份(离站或云)。
(2)拓扑建议:生产机 -> 本地备份服务器(NFS/对象存储) -> 异地备份中心或云(新北/台中或海外区域)。
(3)网络与带宽规划:根据RPO估算带宽,开启压缩与差异传输以节省流量。
(1)使用rsync做增量同步(示例命令):rsync -az --delete --numeric-ids --log-file=/var/log/rsync-www.log /var/www/ backup@backup01:/backup/www/ 。将其放入root crontab:*/15 * * * * /usr/bin/rsync --options。
(2)或使用restic做加密备份到对象存储(示例流程):export RESTIC_REPOSITORY=s3:bkt/backup; export AWS_ACCESS_KEY_ID=xxx; restic init; restic backup /var/www --tag siteA 。配置restic forget/prune策略:restic forget --keep-daily 7 --keep-weekly 4 --prune。
(3)校验:每周执行restic check或rsync校验脚本,保存校验报告并报警。
(1)逻辑备份:使用mysqldump实现单表或全库备份(示例):mysqldump --single-transaction --quick --routines --events -u backup -pPASS dbname > /backup/dbname_$(date +%F_%H%M).sql 。适用于InnoDB且对大库影响小。
(2)物理、无停机快照:若使用LVM或ZFS,先对数据库做FLUSH TABLES WITH READ LOCK(或使用Percona XtraBackup做在线热备),然后对数据盘做快照并解锁;将快照数据rsync或上传至异地。
(3)增量/二进制日志:开启binlog并上传binlog到备份服务器,结合全备+binlog以实现PITR(point-in-time recovery)。恢复示例步骤写入恢复Runbook。
(1)VM快照与镜像:在Proxmox/VMware上定期创建快照并导出为OVA/镜像,保存到异地存储。命令化导出并上传到对象存储(示例:qm snapshot/ export)。
(2)容器数据卷备份:对Docker卷使用tar或restic备份,Kubernetes则使用Velero备份etcd与PV数据。配置定期备份CronJob并测试恢复。
(3)恢复流程:记录从镜像/快照启动流程、网络重映射、证书与IP调整的步骤,确保在异地能快速上线。
(1)自动化脚本:将备份执行、上传、保留策略写成可复用脚本,使用Ansible或Salt统一部署与更新。示例:Ansible playbook执行rsync或restic备份并收集日志。
(2)监控与报警:采集备份任务成功率、上传速率、备份大小;配置Prometheus+Alertmanager或Zabbix在失败时告警(邮件、Slack、SMS)。
(3)恢复演练自动化:季度进行自动恢复演练,验证数据完整性与RTO,记录耗时并纳入KPI。
问:如何在不影响业务的情况下对站群进行热备并保证数据库一致性?
答:采用组合方案:文件层用增量同步(rsync或restic)频繁传输,数据库使用Percona XtraBackup或mysqldump+binlog实现无停机全备与增量。具体步骤:开启binlog并配置用户权限->使用xtrabackup进行备份(备份后apply-log)->把备份上传到异地->持续传送binlog并在恢复点合并。若使用LVM/文件系统快照,先触发数据库fsync或事务一致性快照再做磁盘快照,随后解锁。
问:DNS与流量切换在灾备中的具体实现步骤是什么?
答:建议多层切换:第一步在同一台湾站点内用Keepalived/HAProxy做内网漂移;第二步使用DNS故障转移(Route53/Cloudflare或本地DNS with low TTL)预置备用A记录与健康检查;第三步若需跨地域切换,使用Anycast或BGP+NAT在备用机房宣布IP。操作步骤包括:设置健康检查->配置低TTL(60秒)->准备备用机房并完成数据同步->触发DNS切换并监控收敛时间。
问:如何定期验证备份可用性和恢复可执行性?
答:建立恢复演练制度并自动化:每周随机选择一份备份进行完整恢复到沙箱环境,验证应用能启动、数据库可读写、业务关键路径通过。记录演练时间和失败点,按严重性建立改进计划。自动化方面可用CI/CD流水线触发恢复验证脚本,生成报告并纳入SLA审查。
