在迁移前首先要对整体环境做全面评估:业务拓扑、域名与多IP映射、会话和缓存策略、数据库主从关系、SSL证书、第三方回调及防火墙策略。制定迁移计划时,把关键点标注为台湾地域的网络延迟、运营商黑名单、以及站群的IP分配策略。
准备工作要包括:降低DNS TTL至60秒或更低;对站群中每个站点列出依赖服务(如Redis、MySQL、CDN/API);确定可接受的最大停机窗口;准备应急联系人清单与时间表。对风险要量化,例如:数据丢失概率、回滚时间、SEO影响(变更IP是否影响收录)等。
确保有完整的备份策略(数据库离线备份+增量binlog/GTID)、文件增量同步方案(rsync/lsyncd/对象存储),以及可用的负载均衡或浮动IP方案(如keepalived或云端弹性IP)。
与运营、客服与第三方(如支付、短信)沟通迁移时间窗口并在低峰时段执行;在社交渠道和站点发布维护公告以降低业务投诉。
备份要分层次:文件层(静态文件、媒体)、数据库层(业务数据)、配置层(APP配置、SSL、证书、crontab)。数据库优先采用热备+物理冷备双保险:使用Percona XtraBackup或mysqldump做冷备,再保留binlog进行增量恢复。
文件同步采用双阶段rsync:第一阶段做全量同步(rsync -az --delete),第二阶段在迁移前做短间隔增量同步直到最终切换。对大文件或高并发写入目录,考虑使用对象存储(S3/OSS)并在切换前进行镜像验证。
在目标环境启动应用并使用一致性校验(如校验文件哈希、对比数据库行数和关键表摘要),执行业务流测试(登录、下单、支付回调),确保数据一致性和业务通路通畅。
在非高峰期做一次完整恢复演练:从快照或备份恢复一套完整环境并跑流量脚本,确认恢复步骤、时间与潜在问题。
针对多IP站群要采取分阶段切换策略。先将DNS TTL下调至短值(60s或更低),然后采用蓝绿或灰度切换:先将一部分流量(或子域名)导向新IP,监控错误率与性能,再逐步扩大流量。
若使用云厂商提供的弹性IP或浮动IP,优先使用这些机制做IP迁移,避免长时间依赖DNS传播。对于本地VPS或裸金属,考虑使用keepalived+VIP或BGP任何可行的浮动IP方案。
为了避免会话丢失,迁移前把会话从本地内存迁移到Redis或数据库共享存储,或在负载均衡层启用粘滞会话。清理并同步缓存策略,调整CDN回源设置以防回源压力过大。
切换IP时保持URL不变,确保301/302策略一致,检查robots与sitemap,及时更新CDN回源与第三方回调IP白名单。
纵向扩容(提升CPU/内存/磁盘)适用于短期性能瓶颈,注意先在低峰准时做快照备份并监控I/O压力。横向扩容(增加实例)更稳定,通过加入到负载均衡池实现线上扩容。
横向扩容的步骤:准备新实例(环境一致性通过自动化镜像或容器化确保),同步代码与配置,加入监控/日志系统,然后先加入LB为备用节点做健康检查,流量稳定后提升权重。
数据库横向扩容通常采用读写分离或分库分表方案:新增只读副本用于读取压力,使用Proxy(如ProxySQL)或中间件实现流量分配。变更架构前做好容量规划与索引优化。
使用配置管理(Ansible/Terraform)与容器编排(K8s)可以快速扩缩容。扩容失败时保留老节点并降低新节点权重,用脚本或IaC快速回滚。
迁移后必须建立实时监控与告警:HTTP 5xx/4xx比率、平均响应时间、数据库慢查询、磁盘I/O、网络丢包与带宽。设置阈值并与值班人员绑定通知渠道(短信/电话/企业微信)。
回滚策略要预案化:若新增环境发生严重故障,立即切换回旧IP或旧集群(使用DNS回退或浮动IP切换),并把写流量重定向至旧主库。回滚前确保目标数据与旧环境的一致性(最后一次binlog/rsync增量)。
1) 保留故障时间点的数据库备份与binlog;2) 将负载均衡流量权重恢复到老集群;3) 若使用DNS,立即恢复TTL较短的旧纪录并观察;4) 回滚后做完整一致性校验再开放写入。
迁移后至少72小时内高频监控,并执行定期一致性快照与日志审计,确保没有遗漏的错误或数据漂移。