1.
总体架构与目标
目标:实现RPO可控(分钟/小时级)、RTO可测(数分钟至数十分钟)、并能在台湾VPS原生IP或物理机故障时快速切换。小分段:1) 划分主备节点(至少两台跨机房或跨可用区);2) 明确数据一致性要求(数据库同步/异步);3) 网络方案(浮动IP/VRRP或BGP)。
2.
环境清单与准备
小分段:1) 列出要保护的服务(web、db、文件存储);2) 确定备份目标机(物理机或同机房VPS);3) 准备备份存储(NFS、备份VPS、对象存储如S3兼容)和足够磁盘;4) 安装基础工具:rsync、ssh、borg/restic、lvm2、zfsutils。
3.
文件级/文件系统级备份实操(rsync 与 LVM/ZFS)
小分段:1) LVM快照流程:lvcreate -L1G -s -n snap /dev/vg/lv;mount /dev/vg/snap /mnt/snap;rsync -aHAX --delete /mnt/snap/ backup@10.0.0.2:/backup/host/;umount /mnt/snap;lvremove /dev/vg/snap。2) ZFS:zfs snapshot pool/data@$(date +%F-%T);zfs send -R pool/data@... | ssh backup zfs receive backupPool/data。3) 定期任务:用cron或systemd timer封装脚本并保留轮换策略。
4.
增量与去重备份(Borg/Restic)
小分段:1) 初始化:borg init --encryption=repokey /path/to/repo 或 restic init -r s3:bucket/path;2) 备份命令示例:borg create --stats repo::'{hostname}-{now:%Y-%m-%d}' /etc /var/www;3) 策略:每日全量(或首日全量后增量)、保留7天/30天/365天;4) 验证:borg list repo、borg check --verify-data。
5.
数据库备份与同步(MySQL/Postgres)
小分段:1) MySQL:使用mysqldump或xtrabackup;推荐XtraBackup做物理热备份:xtrabackup --backup --target-dir=/tmp/xb && xtrabackup --prepare。2) PostgreSQL:使用pg_basebackup或Barman。3) 复制:配置主从/半同步;监控延迟并告警。
6.
网络冗余与原生IP切换方法
小分段:1) 若供应商支持浮动IP(Floating IP),使用API实现自动绑定/解绑;示例:调用provider API在健康检查失败时把浮动IP移到备用节点。2) 若无浮动IP,使用Keepalived+VRRP在同一子网内漂移VIP:编写/etc/keepalived/keepalived.conf,配置priority、auth、virtual_ipaddress。3) BGP方案:有公网BGP条件下使用ExaBGP/BIRD宣告前缀实现跨机房切换。
7.
高可用服务层(负载均衡、健康检查)
小分段:1) 部署HAProxy/Nginx做反向代理+健康检查,后端为多台应用实例;2) 健康检查策略:TCP/HTTP、超时、重试;3) 配合Keepalived实现前端VIP高可用;4) DNS方面:降低TTL(例如60秒)并结合主动健康检查与自动更改A记录作为补充。
8.
监控、告警与自动化切换
小分段:1) 监控栈:Prometheus + Alertmanager + Grafana,监控CPU、磁盘、网络、备份时长与成功率;2) 告警:备份失败、复制延迟、节点不可达触发自动脚本;3) 自动化:使用Ansible + provider API或ssh脚本触发VIP切换与服务重启。
9.
灾难恢复演练与验证
小分段:1) 制定演练计划:每季度至少一次完整恢复演练;2) 恢复步骤示例:获取最近备份->挂载快照或restic/borg restore -> 启动服务->切换VIP或DNS -> 验证业务流;3) 验证要点:数据完整性、性能、外部接入。
10.
安全与合规注意点
小分段:1) 备份加密:使用restic或borg的加密功能,或对端对象存储启用加密;2) 传输加密:rsync over ssh;3) 访问控制:备份账号使用最小权限、密钥管理与审计;4) 保留策略与法规合规(如需保存几年,做好分级存储)。
11.
运维脚本与示例命令汇总
小分段:1) rsync示例:rsync -aHAX --delete --exclude='/proc/*' / root@backup:/backup/host/;2) borg示例:borg create --compression lz4 repo::'{hostname}-{now:%Y-%m-%d}' /etc /var/www;3) keepalived快速模板:vrrp_instance VI_1 { state MASTER; interface eth0; virtual_router_id 51; priority 100; authentication { auth_type PASS; auth_pass secret; } virtual_ipaddress { 10.0.0.100 } }
12.
成本与运维建议
小分段:1) 按价值分层备份:热数据+冷数据分离,热数据复本多、冷数据异地归档;2) 测试恢复成本纳入预算(时间、人力、带宽);3) 自动化优先:用脚本和CI/CD把切换过程写成可复现的playbook。
13.
问:在台湾VPS环境中,如何保证原生IP在物理机故障时能快速切换?
问:如何保证原生IP在物理机故障时能快速切换? 答:优先使用供应商提供的浮动IP或API做IP绑定/解绑;若仅在同一二层网络内,可使用Keepalived/VRRP在主备间漂移VIP;跨机房需使用BGP或DNS+低TTL配合API切换;无论哪种方案都要实现自动化脚本并进行演练。
14.
问:备份恢复时常见的陷阱和如何避免?
问:备份恢复时常见的陷阱和如何避免? 答:常见问题包括缺少一致性快照(数据库未停止/无事务快照)、权限丢失、网络带宽不足导致恢复慢。避免方法:采用应用感知备份(如xtrabackup/pg_basebackup)、保存并恢复权限/SELinux上下文、在演练中量测带宽与时间并预留余量。
15.
问:如何制定RTO/RPO并衡量架构是否满足?
问:如何制定RTO/RPO并衡量架构是否满足? 答:根据业务重要性分类(关键、重要、普通),设定RPO(数据丢失容忍度)与RTO(可接受恢复时间),然后通过备份频率、同步方式和切换时间预算来设计架构。定期演练并记录实际恢复时间与数据差异,若不达标则提升同步策略或缩短DNS/切换延迟。
来源:台湾vps原生ip 物理机备份容灾与高可用架构最佳实践