网站迁移完全指南:更换服务器/主机商的注意事项与步骤

网站迁移听起来简单,但在实际操作中,DNS 传播延迟、数据丢失、SSL 证书问题和配置差异都可能导致网站停机。以下是经过验证的迁移流程。

迁移前准备

1. 完整备份

# 文件备份
tar -czf website-backup-$(date +%Y%m%d).tar.gz /var/www/

# 数据库备份
mysqldump -u root -p --all-databases > db-backup-$(date +%Y%m%d).sql

# 配置文件备份
tar -czf config-backup.tar.gz /etc/nginx/ /etc/apache2/

2. 检查新环境兼容性

  • PHP/Node.js/Python 版本是否匹配
  • 数据库版本是否兼容
  • 是否有必要的系统扩展和库
  • 磁盘空间和 inode 数量是否充足

3. 降低 TTL

在迁移前 48 小时将 DNS TTL 降低到 300 秒(5 分钟),加快 DNS 切换后的生效速度。

迁移执行

步骤一:设置新环境

在新服务器上安装相同的软件栈,恢复配置。

步骤二:迁移数据

# 使用 rsync 高效同步文件
rsync -avz --progress /var/www/ user@new-server:/var/www/

# 导入数据库
mysql -u root -p < db-backup.sql

步骤三:测试新环境

在切换 DNS 之前,通过 hosts 文件或 IP 直连测试新环境:

# 在本地 hosts 文件中添加
# 123.456.789.0 example.com www.example.com

步骤四:切换 DNS

将域名的 A/AAAA 记录或 NS 记录更新指向新服务器。

步骤五:监控和验证

  • 使用 dignslookup 确认 DNS 解析正常
  • 使用 curl -I 检查 HTTP 响应
  • 检查 SSL 证书是否正常
  • 测试网站所有核心功能

常见问题与解决方案

问题 解决方案
DNS 传播延迟 提前降低 TTL,耐心等待 24-48 小时
SSL 证书不匹配 在新服务器重新签发或安装证书
数据库连接失败 检查数据库用户和主机权限
文件权限错误 检查新服务器的文件和目录权限
邮件发送失败 更新 SPF/DKIM/DMARC 记录

回滚计划

如果迁移后出现严重问题,应该能够在 30 分钟内回滚:

  1. DNS 记录切回旧服务器 IP
  2. 保留旧服务器至少 7 天
  3. 保留完整备份以备不时之需

16IDC 观察

网站迁移中 90% 的问题可以通过充分的迁移前准备来避免。建议在迁移前准备一份详细的迁移清单,逐项确认。选择新服务器时,也建议利用试用期进行充分测试。

参考我们的 服务器推荐 来选择可靠的托管服务商。