1.
迁移前准备与清单梳理
- 清点资产:列出揭阳源端与台湾目标端的IP、操作系统版本、应用、数据库类型与版本、证书、cron 任务、防火墙规则。
- 依赖检查:确认第三方服务(短信、支付、OSS、API 白名单)是否需要更换 IP 或增加新白名单。
- 时间窗口:选择低峰时间段并提前通知相关团队与用户,准备备用联系链。
2.
网络与权限配置
- 建立 SSH 信任:在目标机上添加源端公钥(ssh-copy-id 或手动追加 authorized_keys)。
- 测试连通:ping / traceroute / mtr 检查揭阳到台湾的链路质量,必要时联系带宽提供商或使用 VPN 专线。
- 开放端口:在目标防火墙/安全组放通 22/80/443/3306 等必要端口,仅在迁移期临时放宽。
3.
完整数据备份(文件层)
- 生成清单:在源端用 find 列表文件(示例:find /var/www -type f > filelist.txt)。
- 打包与校验:tar -czf /backup/www_$(date +%F).tar.gz /var/www;sha256sum 生成校验值并保存。
- 离线备份:将备份推送到第三方存储(对象存储或本地 NAS),以防操作失误。
4.
数据库备份与增量策略
- 完整导出:MySQL 示例:mysqldump -u root -p --single-transaction --routines --events --triggers --databases dbname > dbname_full.sql。
- 二进制日志/增量:开启 binlog 并记录当前 position(SHOW MASTER STATUS),迁移窗口内可使用 mysqlbinlog 导出增量。
- 备份验证:在另一台临时实例上恢复测试(mysql < dbname_full.sql),确认表结构与数据一致。
5.
配置与环境同步
- 同步配置文件:rsync -avz --progress --exclude='*.log' /etc/nginx/ target:/etc/nginx/ 并对比差异(diff)。
- 环境依赖:列出软件包(dpkg -l 或 rpm -qa),在目标机上安装相同版本并确认 systemd 服务配置一致。
- SSL/证书:将私钥与证书安全拷贝到目标机,确保目录权限(600/644)恰当。
6.
演练迁移(预演)
- 建立临时子域:把域名 CNAME 指向测试服务器,模拟切换流程并执行全量同步与切换。
- 完成验证:执行站点完整性检查(页面加载、登录、支付流程)并记录时间与问题。
- 优化脚本:将手动步骤写成脚本(备份、rsync、重启服务)以减少切换时的人为错误。
7.
正式切换步骤(无状态静默切换)
- 降低 TTL:提前 24-48 小时将 DNS TTL 调低到 60-300 秒。
- 进入维护模式:如果无法无缝切换,短时启用应用维护页面以阻止写入;或在DB层使用只读锁。
- 最终同步:执行 rsync -avz --delete --progress 源到目标(再次同步以捕获变更),并导出最后的数据库增量并导入目标。
8.
DNS 与流量切换
- 切换方式:推荐先更新负载均衡或 DNS 指向新 IP,若使用 CDN 切换源站。
- 监控生效:使用 dig +trace 与 online tools 确认全网解析已切换;观测错误率、响应时延与日志异常。
- 回滚窗口:在切换后保持监控窗口(通常 1-24 小时)并保留回滚计划与人员就绪。
9.
切换后验证与性能调优
- 功能测试:接口、队列、定时任务、文件上传下载、第三方回调等逐项验证。
- 性能对比:使用 ab、wrk 或监控平台对比 RPS、响应时间、数据库慢查询;调优连接数、缓存策略。
- 日志与告警:检查应用与系统日志,确认告警阈值合理,及时调整。
10.
回滚策略与操作步骤
- 快速回滚准备:保留源端的最后快照与数据库 dump,记录切换前的 DNS TTL 与配置快照。
- 回滚步骤:1) 将流量指回源端(修改 DNS/负载均衡);2) 若数据库已写入,优先将目标增量同步回源或用 binlog 回放;3) 恢复源端快照或导入 dump。
- 校验与通知:恢复后做完整功能测试并通知用户与相关团队。
11.
实用命令与示例脚本片段
- rsync:rsync -azP --delete --exclude='*.log' /var/www/ user@target:/var/www/。
- mysqldump:mysqldump -u root -p --single-transaction --databases db > /backup/db_$(date +%F).sql。
- 恢复示例:mysql -u root -p db < db_2026-08-01.sql。
12.
最佳实践与注意事项
- 自动化与可回放脚本优先,所有命令写入迁移 runbook;
- 保持多点备份(本地+异地),切换后保留旧环境至少 7 天以便回滚;
- 法律/合规:跨境数据迁移注意合规要求(若涉及用户隐私或敏感数据,提前评估并备案)。
13.
问:揭阳到台湾迁移网络延迟如何影响数据同步?
- 答:网络延迟会影响同步速度与 rsync 的实时性,建议用压缩(-z)、并行传输或在两端开通专线/VPN。对大数据量先做快照拷贝(离线物理拷贝或先打包传输),最后以增量 rsync 或 binlog 补同步差异。
14.
问:如果切换后发现无法回滚,最佳补救措施是什么?
- 答:立即关闭新环境对外写入(维护模式),冻结目标数据库写入;从目标导出增量数据并尽快合并回源端或依据业务优先级直接通知用户并启动应急恢复(恢复源端快照或导入最后可用备份)。
15.
问:有哪些常见导致迁移失败的坑,如何规避?
- 答:常见问题包括依赖遗漏(接口白名单、证书)、时间窗口选择不当、未校验备份、DNS TTL 忽略等。规避方法是详尽清单、预演、低 TTL、日志监控与阶段性回滚演练。
来源:揭阳台湾服务器迁移流程详解 数据备份、切换与回滚最佳实践