1. 迁移前评估与准备
- 确认当前服务架构(单机/主从/负载均衡)、IP类型(弹性IP/浮动IP/VIP)与依赖(数据库、对象存储、第三方API)。
- 列出所有域名、证书、防火墙规则、SNAT/DNAT、健康检查与监控项。
- 制定回滚点与维护窗口,通知 stakeholders 并将 DNS TTL 临时降低到 60-300 秒以便切换快速生效。
2. 在目标环境创建实例与网络配置
- 在新加坡目标区域创建云服务器,配置相同或更高规格的CPU/内存/盘;为重要服务挂载独立数据盘。
- 配置安全组/防火墙,放行必要端口(80/443/22/数据库端口等),并设置相同的子网与路由策略。
- 如果云提供商支持浮动IP/弹性IP,提前申请并准备绑定流程。
3. 证书与配置文件迁移
- 将TLS/SSL证书(.pem/.key)复制到新机(使用scp/rsync),确保权限与路径一致:chmod 600。
- 迁移Nginx/Apache/应用配置文件,调整任何包含旧IP的硬编码值(比如回调地址、第三方白名单)。
- 生成并验证服务账户、API密钥在新环境可用。
4. 文件数据同步(静态文件/上传文件)
- 使用rsync增量同步:rsync -azP --delete /data/ user@newserver:/data/,先做一次全量同步,再多次差异同步以减小停机。
- 对大文件或对象存储优先考虑使用云厂商提供的复制工具或直接挂载共享存储以避免重复传输。
- 验证文件完整性(校验md5或ls -l对比),并在新机上启动服务读取文件进行 smoke test。
5. 数据库迁移与增量同步策略
- 小型数据库可以使用mysqldump:mysqldump -u root -p --single-transaction --master-data=2 db > dump.sql,然后在目标导入mysql -u root -p db < dump.sql。
- 对于大流量生产库使用主从复制或GTID:在新机配置为从库,通过binlog进行增量复制,待数据同步完成后做一次短暂的写入冻结并提升新库为主。
- 验证数据一致性(表行数、重要记录对比、CHECKSUM TABLE)并测试应用在新库上的读写。
6. 应用状态切换与短暂停写方案
- 在最终切换前,设置应用进入只读或维护模式以避免数据差异(例如启用网站维护页、队列暂停)。
- 做最后一次rsync和binlog应用,确保新机与旧机数据一致。记录最后的binlog位置或GTID。
- 在切换窗口内尽量缩短停机时间,通知用户并打开监控更高频率采样。
7. IP/浮动IP绑定与网络切换
- 若使用浮动IP:在切换时把弹性/浮动IP从旧机解绑定并绑定到新机,通常是几秒钟即可完成。
- 若使用新IP并通过DNS切换:确保新机公网可达并已配置好反向DNS(如需要)。
- 更新路由、NAT或负载均衡器后检查后端健康检查通过。
8. DNS 切换步骤(最关键)
- 在DNS切换前已将TTL降为短值(见第1步)。切换时修改域名A记录指向新IP或负载均衡器VIP。
- 保存旧记录以便回滚,提交更改并立即使用dig、nslookup验证:dig @8.8.8.8 example.com A。
- 同时更新相关子域、SRV或TXT记录(如ACME验证)并确认成功解析。
9. 切换后验证与流量回流
- 逐项验证:网页正常加载、API调用正常、数据库写入成功、文件上传/下载无误、SSL链正常。
- 使用curl -I https://example.com 检查响应头,使用日志查看是否出现错误,观察监控和报警。
- 若使用CDN或负载均衡,清除缓存并监测边缘节点命中率。
10. 回滚计划与常见问题处理
- 若出现不可接受的错误:立即将DNS回滚到旧IP或将浮动IP退回旧主机;若使用数据库提升需准备降级脚本或数据合并策略。
- 常见问题:连接超时(检查安全组/路由)、证书错误(检查域名与证书匹配)、数据不一致(回放binlog或回滚事务)。
- 切换稳定后逐步将TTL恢复到正常值(例如3600-86400),并记录迁移过程用于改进。
11. 问:DNS切换后为什么还会访问到旧服务器?
答:DNS缓存仍然存在于客户端或ISP,若TTL设置较高(如3600以上)会导致解析未及时更新。解决方法:在迁移前将TTL降到60-300秒,切换后等待TTL过期或强制清理本地DNS缓存(如ipconfig /flushdns)并在多个公共解析器上验证(8.8.8.8、1.1.1.1)。
12. 问:如何保证数据库切换零数据丢失?
答:使用主从复制或GTID确保增量无缝同步,切换时先冻结写入(应用只读),完成最后的binlog消费并记录位置后再做好提升。对于不能停写的场景,可考虑双写短期同步或使用中间层队列保证最终一致性,并在切换后验证关键记录一致性。
13. 问:如果切换失败,如何快速回滚?
答:提前准备好回滚步骤:保存旧服务器的IP与DNS记录、保留最新数据快照或binlog位置;遇到问题立即把浮动IP退回旧机或将DNS改回旧IP并恢复TTL,监控流量回流并核对数据完整性。回滚过程中通知用户并记录原因以便事后修复。
来源:新加坡云服务器地址迁移实战步骤从数据同步到DNS切换的全流程