1.
评估现状与制定迁移计划
- 统计:列出当前服务(网站、数据库、缓存、邮件、备份)与端口、带宽需求、并发与峰值流量。
- 目标:决定迁移目标(同香港地区更换供应商、转内地/新加坡/日本云、或按需多区域部署)。
- 窗口:选定迁移时间(低峰),并与团队订好回滚窗口和联系人。
2.
选择新VPS与网络策略
- 指标:选择关键指标:上/下行带宽、延迟、SLA、可用区、浮动IP、快照与备份方案、安全组规则、价格。
- 测试:用iperf或ping/traceroute先测网络质量;若是云厂商,先开一个测试小实例做压力与网络测试。
3.
准备新服务器环境
- 系统:在新VPS上安装相同或兼容的操作系统版本,安装SSH并禁用root直连(建议使用密钥)。
- 软件:按清单安装Web(nginx/apache)、语言运行时(PHP/Python/Node)、数据库(MySQL/Postgres)、缓存(Redis)、依赖库。
- 安全:配置防火墙(ufw/iptables)、Fail2Ban,设置时区与系统时钟同步(ntp/chrony)。
4.
降低DNS TTL提前准备
- 操作:在迁移前48小时将相关域名的TTL降至60-300秒(取决于域名注册与DNS缓存)。
- 验证:使用dig或nslookup确认生效:dig A example.com +noall +answer。
5.
全量备份与数据导出
- 文件备份:用tar压缩网站目录并生成校验:tar czf /tmp/site.tar.gz /var/www && sha256sum /tmp/site.tar.gz。
- 数据库导出:MySQL示例:mysqldump -u root -p --single-transaction --quick --routines --triggers dbname > /tmp/db.sql。Postgres用pg_dump。
- 配置:导出nginx/apache、crontab、systemd服务文件与环境变量配置。
6.
传输数据到新VPS(推荐 rsync + SSH)
- 命令示例:rsync -azP -e "ssh -i /path/key" /var/www/ user@新IP:/var/www/,带-P可续传并显示进度。
- 大库分割:若数据库很大,先传导出的SQL.gz:gzip -c /tmp/db.sql | pv | ssh user@新IP "gunzip -c > /tmp/db.sql"。
7.
在新VPS上导入数据库与恢复服务
- 导入MySQL:mysql -u root -p dbname < /tmp/db.sql。注意字符集与权限,必要时执行SET NAMES。
- 恢复文件权限:chown -R www-data:www-data /var/www && find /var/www -type d -exec chmod 755 {} \;。
- 启动服务并检查日志:systemctl start nginx && journalctl -u nginx -f。
8.
SSL 证书与域名配置
- 证书迁移:若使用Let's Encrypt,可在新机直接用certbot获取证书(需要域名解析临时指向新IP或使用DNS验证)。
- 配置核对:复制nginx虚拟主机配置并确认ssl_certificate/ssl_certificate_key路径与权限。
9.
预上线测试(用hosts文件+分流验证)
- 临时测试:在测试机上修改/etc/hosts将域名指向新IP,验证页面、API、登录、支付等功能。
- 接口测试:使用curl -v、ab或wrk做接口压测,检查性能与并发表现。
10.
最终切换DNS并监控状态
- 切换:在低峰期将域名A记录更新为新IP;监控TTL生效后通过dig确认。
- 监控:实时查看访问日志、错误日志与应用监控(Prometheus/Grafana或第三方),重点观察错误率、响应时间和丢包。
11.
回滚与应急方案
- 回滚步骤:若新环境严重故障,立即将DNS指向旧IP并恢复数据库增量(用二进制日志或最近备份)。
- 通讯:按事先设定的通信链通知客户并告知预计恢复时间。
12.
迁移后优化与长期建议
- 多点部署:考虑使用CDN、跨区容灾或主从数据库,减少单点故障风险。
- 自动化:用脚本或配置管理工具(Ansible/Terraform)管理部署,便于未来快速重建。
13.
常见命令与示例清单(备查)
- rsync: rsync -azP -e "ssh -i key" /src/ user@host:/dst/。
- mysqldump/import: mysqldump ... > db.sql; mysql ... < db.sql。
- 查看DNS: dig +short example.com。
14.
Q1:迁移会造成多长时间的停机?(问)
15.
A1:通常停机窗(答)
- 如果提前做好预热、降低TTL并使用rsync增量同步,实际切换时只需短时间DNS生效与数据库最后一次小范围锁表导出,通常可将感知停机控制在数秒到数分钟;复杂系统可能需30分钟左右。
16.
Q2:如何保证数据在切换时不丢失?(问)
17.
A2:保证数据一致的做法(答)
- 使用数据库的二进制日志或主从复制做实时同步;在切换瞬间执行事务安全的dump(--single-transaction)并阻止写入或短暂维护模式,完成后再切换DNS。
18.
Q3:如果新VPS网络不稳定,我该如何快速回退?(问)
19.
A3:快速回退步骤(答)
- 保留旧VPS至少若干小时,切换DNS回旧IP并确认服务正常;如有数据库写入,使用增量日志或手动导入新增数据;事后分析网络不稳定原因并选择更合适的供应商或多线方案。
来源:迁移指南当香港vps哪家稳定无法满足业务时的切换方案