本段介绍迁移目标(相同服务迁移至新VPS或不同镜像),以及主要风险:数据丢失、配置不一致、DNS切换延迟、性能回退。建议先做完整快照与离线备份以便回滚。
列出检查项:当前系统版本内核、软件版本(nginx/mysql/php等)、磁盘布局、crontab、SSL证书位置、公网IP白名单、防火墙规则,记录并导出配置文件(/etc、/var/www、/home 等)。
测量网络、CPU、IO、数据库性能:网络用 iperf3(iperf3 -s/-c);HTTP用wrk或ab;磁盘用 fio;CPU/数据库用 sysbench。记录吞吐、延迟(p95/p99)、IOPS、平均负载。
在香港VPS上安装相同软件版本或更优版本,统一时区、Locale和内核参数,配置用户与权限。确保防火墙/安全组允许必需端口(22,80,443,3306等)。
建议先rsync文件:rsync -azP --delete --exclude='cache/' /var/www/ user@new:/var/www/,为减少服务中断先做一次完整同步,再在切换前做增量同步(同命令再次运行)。
小型库可用mysqldump:mysqldump -A --single-transaction --master-data=2 -u root -p | gzip > dump.sql.gz,再在新机导入;大库建议用Percona XtraBackup或建立主从后切换以实现零停机。
复制nginx/pm2/systemd配置,校验路径、ssl证书(cat/openssl x509 -noout -text),测试nginx -t,启动服务并验证本地curl http://127.0.0.1:端口返回正常。
先降低DNS TTL(如60秒)24小时提前;采用双写/双跑:在旧服继续对外服务,同时新服开放并接收流量的部分(负载均衡或限流)。也可使用Keepalived或云上漂移VIP无缝切换。
1) 再次做增量rsync/备份;2) 暂时设置维护页(若无法双跑);3) 在低流量窗口将DNS指向新IP或切换VIP;4) 观察健康检查与错误率;5) nginx -s reload 优雅重载,数据库切换完成后断开旧主。
用和基线相同的工具重复测试(iperf3, fio, sysbench, wrk)。重点比较吞吐(requests/sec)、延迟分位数、CPU利用、磁盘延迟。记录并生成差异报告,若回退需按快照恢复。
若新服性能差:检查CPU频率、磁盘类型(SSD vs HDD)、网络带宽限制、MTU、Nagle、TCP参数(tcp_tw_reuse/fin_timeout)。调整mysql缓冲池、nginx worker_processes 与 keepalive。
切换并稳定后:清理旧机计划任务、密钥,关闭不再使用的端口,开启长期监控(Prometheus+Grafana/ELK),并将DNS TTL恢复到正常值。
答:使用先全量再增量同步的rsync流程,数据库大表可用主从复制或xtrabackup建立热备,切换瞬间短暂停写或使用GTID同步最后的binlog位置以保证一致性。
答:提前降低TTL到60或更低(至少一天生效),切换时再观察各地解析情况;必要时配合VIP/负载均衡进行零DNS切换;并在切换后逐步恢复TTL。
答:保持旧服在切换后短时间内可回退,使用快照或之前的备份还原,若使用DNS切换则将TTL期间快速指回旧IP;记录好切换点与binlog位置,回滚前暂停写入并验证一致性。