网站迁移完全指南:更换服务器/主机商的注意事项与步骤
网站迁移听起来简单,但在实际操作中,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 记录更新指向新服务器。
步骤五:监控和验证
- 使用
dig和nslookup确认 DNS 解析正常 - 使用
curl -I检查 HTTP 响应 - 检查 SSL 证书是否正常
- 测试网站所有核心功能
常见问题与解决方案
| 问题 | 解决方案 |
|---|---|
| DNS 传播延迟 | 提前降低 TTL,耐心等待 24-48 小时 |
| SSL 证书不匹配 | 在新服务器重新签发或安装证书 |
| 数据库连接失败 | 检查数据库用户和主机权限 |
| 文件权限错误 | 检查新服务器的文件和目录权限 |
| 邮件发送失败 | 更新 SPF/DKIM/DMARC 记录 |
回滚计划
如果迁移后出现严重问题,应该能够在 30 分钟内回滚:
- DNS 记录切回旧服务器 IP
- 保留旧服务器至少 7 天
- 保留完整备份以备不时之需
16IDC 观察
网站迁移中 90% 的问题可以通过充分的迁移前准备来避免。建议在迁移前准备一份详细的迁移清单,逐项确认。选择新服务器时,也建议利用试用期进行充分测试。
参考我们的 服务器推荐 来选择可靠的托管服务商。