VPS迁移完整指南:从旧服务器迁移网站、数据库和配置到新服务器
迁移服务器:做好准备,停机时间可以控制在 5 分钟内
无论是服务商涨价、线路不满意,还是配置需要升级,迁移服务器是每个站长迟早要面对的操作。做好准备的迁移,整个过程可以把用户感知到的停机时间控制在 5 分钟以内。本文提供 WordPress / PHP 站点的完整迁移流程。
一、迁移前准备
# 在新服务器上完成初始化配置(参考服务器初始化教程)
# 安装与旧服务器相同的软件环境
sudo apt update && sudo apt upgrade -y
sudo apt install nginx php8.1-fpm mysql-server -y
# 确认新旧服务器的 PHP 和 MySQL 版本尽量一致
php --version
mysql --version在旧服务器上生成 SSH 密钥,并将公钥添加到新服务器,用于 rsync 传输:
# 在旧服务器上生成密钥(如果还没有)
ssh-keygen -t ed25519 -f ~/.ssh/migration_key -N ""
# 将公钥复制到新服务器
ssh-copy-id -i ~/.ssh/migration_key.pub youruser@新服务器IP二、导出数据库
# 在旧服务器上导出所有数据库
mysqldump -u root -p \
--all-databases \
--single-transaction \
--quick \
--routines \
--triggers \
| gzip > ~/all_databases_$(date +%Y%m%d).sql.gz
# 或只导出特定数据库
mysqldump -u root -p \
--single-transaction \
myapp_db | gzip > ~/myapp_db_$(date +%Y%m%d).sql.gz
echo "数据库导出完成,文件大小:$(du -sh ~/myapp_db_*.sql.gz)"三、迁移网站文件
# 用 rsync 将网站文件同步到新服务器(-a 保留权限,-v 显示进度,-z 压缩传输)
rsync -avz --progress \
-e "ssh -i ~/.ssh/migration_key" \
/www/wwwroot/ \
youruser@新服务器IP:/www/wwwroot/
# 迁移 Nginx 配置文件
rsync -avz \
-e "ssh -i ~/.ssh/migration_key" \
/etc/nginx/sites-available/ \
youruser@新服务器IP:/etc/nginx/sites-available/rsync 支持断点续传,大文件传输中断后重新执行相同命令即可继续,不会重复传已完成的部分。
四、在新服务器导入数据库
# 将数据库文件传输到新服务器
scp -i ~/.ssh/migration_key \
~/myapp_db_*.sql.gz \
youruser@新服务器IP:~/
# 在新服务器上导入数据库
ssh -i ~/.ssh/migration_key youruser@新服务器IP
# 以下在新服务器上执行:
# 创建数据库和用户
mysql -u root -p << EOF
CREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';
FLUSH PRIVILEGES;
EOF
# 导入数据
gunzip -c ~/myapp_db_*.sql.gz | mysql -u root -p myapp_db
echo "数据库导入完成"五、配置新服务器 Web 环境
# 在新服务器上激活 Nginx 站点配置
sudo ln -s /etc/nginx/sites-available/your-site /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
# 设置网站目录权限
sudo chown -R www-data:www-data /www/wwwroot/
sudo chmod -R 755 /www/wwwroot/
# 申请新的 SSL 证书
sudo certbot --nginx -d your-domain.com在正式切换 DNS 之前,通过修改本地 hosts 文件测试新服务器是否正常:
# 在本地电脑的 hosts 文件(Windows: C:\Windows\System32\drivers\etc\hosts)
# Mac/Linux: /etc/hosts
# 添加一行:
新服务器IP your-domain.com
# 访问 your-domain.com 验证新服务器是否正常工作
# 验证完成后删除这一行六、DNS 切换(停机窗口最短化)
# 切换前 24 小时:将域名 DNS TTL 降低到 60 秒
# (在域名 DNS 服务商后台修改 TTL 值)
# 这样 DNS 切换后,全球生效时间从最长 24 小时降低到约 1 分钟正式切换步骤:
- 在旧服务器上开启维护模式(WordPress 可安装 Maintenance 插件)
- 最后一次同步数据库(捕获最新数据):
rsync文件 +mysqldump数据库 - 将域名 A 记录从旧服务器 IP 改为新服务器 IP
- 等待 DNS 生效(TTL 已降为 60 秒,约 1–2 分钟)
- 关闭维护模式
七、迁移后验证清单
| 验证项目 | 验证方法 |
|---|---|
| 网站可正常访问 | 浏览器访问首页和内页 |
| HTTPS 证书正常 | 地址栏显示锁图标 |
| 数据库内容完整 | 检查文章数、用户数等关键数据 |
| 图片和媒体文件 | 检查各页面图片是否正常显示 |
| 表单和动态功能 | 测试联系表单、登录、购物车等 |
| DNS 已指向新服务器 | dig your-domain.com 确认 IP |
总结
VPS 迁移的核心步骤:新服务器环境准备 → 导出数据库 → rsync 文件传输 → 新服务器导入数据库并配置 → 本地 hosts 测试 → 降低 DNS TTL → 最终同步 → 切换 DNS → 验证。提前降低 TTL 是压缩停机时间的关键操作,可以把用户感知到的中断从数小时降至几分钟。
需要迁移到更好的香港服务器,IDC.Net 香港独立服务器提供 CN2 GIA 直连大陆,月付 299 元起,支持支付宝 / USDT 付款,12 小时试用验证线路,确认满意后再正式迁移。