1) 背景:菲律宾节点可能受自然灾害/网络波动影响;2) 目标:保证业务在单点故障时RTO与RPO可控;3) 输出:可执行的多地域(主-备/主主)部署流程与脚本示例,便于按步骤实施。
1) 列出业务组件(静态文件、数据库、缓存、会话);2) 为每项定义RTO(恢复时间)与RPO(可容忍的数据丢失);3) 根据结果决定主动-主动或主动-被动架构,例如支付类用RPO=0选择同步/半同步,日志类可接受异步复制。
1) 主备(主动-被动):主站写,备站异步/半同步接收;2) 主主(主动-主动):两地同时提供读写,需冲突解决和全局ID策略;3) 负载:推荐在菲律宾+邻近区域搭建备点并使用DNS+LB做切换。
1) 在两地各准备相同镜像的VPS,统一操作系统与中间件版本;2) 配置防火墙:开放同步端口(MySQL 3306/Postgres 5432/rsync 873/SSH 22/HAProbe 端口);3) 建立互信:在主备间互换SSH公钥(ssh-copy-id user@backup_ip)。
1) 初始全量:在主机执行 rsync -az --delete /var/www/ backup_user@backup_ip:/var/www/;2) 持续同步(近实时低延迟):推荐安装 lsyncd,示例配置 /etc/lsyncd/lsyncd.conf.lua:sync { default.rsync, source="/var/www/", target="backup_user@backup_ip:/var/www/", rsync={compress=true, archive=true, _extra={"--delete"}} };3) 备份校验:定期在备机计算 checksum 或使用 find /var/www -type f -exec md5sum {} \; | sort > /tmp/list.md5 并与主机对比。
1) MySQL 主从(异步):在主库创建复制用户:CREATE USER 'repl'@'%' IDENTIFIED BY 'repl_pwd'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; 锁表并导出:FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; mysqldump --single-transaction --databases appdb > dump.sql; 解锁:UNLOCK TABLES; 在备库导入并配置:CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl', MASTER_PASSWORD='repl_pwd', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=123; START SLAVE;2) MySQL 半同步:安装插件并启用以降低数据丢失;3) PostgreSQL 流复制:在主库创建replication用户并在postgresql.conf开启 wal_level=replica, max_wal_senders=3; 使用 pg_basebackup -h master_ip -D /var/lib/postgresql/12/main -U repl -P -X stream 创建基线;在备库 recovery.conf 指向主库并启动。
1) 无状态化优先:尽量把会话存储在Redis/Memcached并配置主从或Redis Sentinel;2) 负载均衡:在菲律宾与备点前放置Nginx或HAProxy做健康检查并转发;3) Sticky session:若无法无状态化,使用会话复制或让负载均衡保持会话黏性,示例HAProxy配置绑定cookie。
1) 设低TTL(例如60s):在DNS服务商设置域名TTL=60;2) 健康检查:配置探针检测主站(HTTP 200、TCP 3306);3) 自动切换:编写脚本调用DNS提供商API替换A记录为备点IP(示例伪命令 curl -X PUT "https://dns.api/records/ID" -d '{"content":"backup_ip","ttl":60}' -H "Authorization: Bearer TOKEN");4) 验证:切换后从不同出口执行 nslookup/ dig 确认解析并访问应用。
1) 监控:布署Prometheus+Alertmanager或使用云监控,设置CPU、磁盘、同步延迟(Seconds_Behind_Master)告警;2) 自动化脚本:当监控触发时先执行预置脚本(如停止写入、切换DNS、启用备库为主);3) 灾备演练流程:1-暂停主站写入; 2-执行主->备切换脚本; 3-验证服务可用并回滚测试; 4-记录时间与问题并修正。
问:菲律宾VPS做多地域容灾常见挑战有哪些? 答:包括跨区域网络延迟导致同步延时、带宽成本、不同云商网络策略、防火墙与法律合规(数据主权)问题;解决策略是分级同步(关键数据强同步,其他异步)、选择邻近区域备点并监控链路质量。
问:切换时如何保证数据库一致性并最小化数据丢失? 答:采用半同步或同步复制以降低丢失,关键步骤是切换前冻结写入或启用只读、确认主备binlog/LSN位置对齐、在切换脚本中加入数据完整性校验(checksum或表行数校验),并在切换后跑应用级验证。
问:怎样做验收演练来确认灾备有效? 答:设计每季度的演练计划:1) 模拟主站故障(关闭服务/断网); 2) 执行自动或手动切换脚本;3) 用真实流量或压力工具验证备站性能和数据完整性;4) 记录RTO/RPO并与SLA对比,修正不足。