
1) 列出要迁移的服务(网站、数据库、缓存、邮件、公网 IP、BGP 公告等);2) 确认新机房是否支持 CN2/GIA 通道或可与提供商对接;3) 获取新 IP、账号、控制台权限、SSH 密钥与防火墙白名单;4) 将 DNS TTL 提前 24-48 小时降到 60-300 秒。
1) 使用 Looking Glass / mtr/traceroute 检测旧机房和新机房到中国目标的路由:mtr -r -c 100 your.ip.or.domain;2) 向提供商确认新机房是否有直连中国电信 CN2/GIA,如果没有,会造成延迟或路由回流;3) 若保留原 IP,询问是否支持 IP 跳转或 BGP / 代理隧道(GRE/IPSec/Anycast)以减少切换影响。
1) 在新机房按既有环境安装相同版本的系统、Web、PHP/Node、MySQL/Postgres、Redis 等;2) 导出配置清单(/etc、cron、systemd、证书、防火墙规则)并同步;3) 测试依赖(外部 API、第三方服务、支付回调、Webhook)能否在新 IP 下正常访问。
1) 文件:初次全量 rsync:rsync -azP --delete /var/www/ root@NEW_IP:/var/www/;多次增量 rsync,最后一次在切换前停止写入并做一次最终同步;2) MySQL:先创建复制账号:CREATE USER 'repl'@'NEW_IP' IDENTIFIED BY 'pass'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'NEW_IP'; 然后在旧库执行 mysqldump --single-transaction --master-data=2 --databases dbname > dump.sql,在新库导入并按 dump 中的 binlog 位点配置 CHANGE MASTER TO ...,启动 slave 并等待追上;3) 对于大表或高并发可采用主从实时复制(异步/半同步),切换时将应用写入短暂停用,确保无数据落下。
1) 在低峰时段执行;2) 将 DNS TTL 预先降低到 60 秒;3) 最终同步文件(rsync 一次 --delete),确认数据库 slave 已追上并停止应用写操作;4) 在新机房启动服务并在本地 /etc/hosts 指向新 IP 做 smoke test(HTTP、DB 连接、登录、支付);5) 切换 DNS 并观察,监控 2×TTL 时间确认流量切换完成;6) 保留旧机房 24-72 小时做回滚通道。
1) 路由差导致中国访问变慢:联系机房要求 CN2/GIA 或使用隧道回原 CN2 节点;2) IP 无法保留:使用短 TTL,或临时做 TCP 隧道/反向代理保留老 IP;3) 邮件投递变差:同步 SPF/DKIM/DMARC,更新发送 IP 并监控投递日志;4) SSL 问题:优先使用 certbot 在新机房重新签发或安全拷贝私钥。
1) 回滚准备:保留老环境、保持 DNS TTL 短、保留数据同步渠道;2) 监控:配置流量、错误率、RTT(mtr)、应用性能(APM)与邮件退信监控;3) 日志:保存切换前后 48 小时的访问/错误日志,便于定位和向提供商取证。
答 1:第一时间联系新机房询问是否已开通 CN2 并提供路由信息;若没有,可请求在新机房建立到原 CN2 POP 的隧道或使用运营商提供的 CN2 连接,必要时临时回滚至老机房并延长 DNS 切换窗口。
答 2:采用主从实时复制然后在切换瞬间暂停写入并做最终 binlog 位点确认(SHOW MASTER STATUS / SHOW SLAVE STATUS),保证 slave 追上后再切换,并保留旧主作为回滚备份。
答 3:可将 TTL 提前降到最低、使用老 IP 到新机房的隧道或反向代理、在 DNS 切换期间用负载均衡/Anycast 缓解流量,必要时与运营商协商短期路由转发。