记录一次宝塔面板整站跨服务器迁移的实操过程

核心导读:旧服务器快到期了,趁着周末把手头的几个站点平滑迁移到新机器上。顺手把完整迁移步骤、大文件打包与数据库防丢的实操要点记录下来,方便日后查阅。

双十一买的那台轻量服务器下周就要到期,续费太贵,于是趁着活动入手了一台配置高一点的新机器。周末花了两个小时把上面的三四个站点全迁了过来,期间遇到了数据库编码和上传超时的小坑,这里把整个完整、平滑且丢数据风险最小的搬迁流程记下来备忘。

1. 迁移前的环境对齐与准备

很多人一上来就直接打包解压,结果到了新服务器发现程序打不开,大概率是环境不一致导致的。在开始搬数据之前,先花五分钟检查新旧两台服务器的运行底子:

  • PHP 与 MySQL 版本:尽量保持主版本完全一致(比如老机器是 PHP 7.4 + MySQL 5.7,新机器也先装相同的版本)。
  • PHP 扩展:检查老服务器装了哪些扩展(如 redis、fileinfo、opcache、exif 等),新服务器务必补齐,否则程序调用函数直接报错 500。
  • 放行安全端口:新服务器如果开了云厂商安全组,记得提前放行 8888、80、443 以及后续搬迁可能用到的临时传输端口。

2. 网站文件与数据库的导出及导入

如果数据量在 10G 以内,使用面板自带的打包功能或一键迁移 API 是最稳妥的。以下是关键配置与超时参数建议:

数据规模建议压缩方式PHP超时限制 (max_execution_time)客户端请求超时 (client_max_body_size)
1G 以下面板直接在线打包 .zip默认 60s 即可50M 即可
1G - 5G终端 tar.gz 分卷或后台压缩建议临时调至 300s设为 500M 以上
5G 以上建议终端 rsync / 内网直接传输建议命令行操作,不依赖网页执行不受 HTTP 限制

具体操作顺序如下:

  1. 老站停写:为了防止迁移过程中有新评论或订单写入,最好先在老站点后台开启维护模式,或者临时在 Nginx 停用写入接口。
  2. 导出数据库:宝塔后台直接点击数据库“备份”,下载生成的 .sql.gz 文件。如果库比较大(超 1G),直接去 SSH 终端执行 mysqldump -u用户名 -p密码 数据库名 > db_backup.sql,速度更快且绝不会漏表。
  3. 打包文件:进入网站根目录,把文件打成压缩包。日志目录(logs)、缓存目录(cache)可以直接排除掉,能省下一大半体积。
  4. 新站导入:在新服务器面板新建站点和数据库(保持数据库名、用户名、密码与老站一致,可以省去改配置文件的麻烦),将文件解压到根目录,并在数据库管理中导入刚才的备份文件。

3. 域名解析切换与常见坑位处理

文件和数据库到位后,不要急着把域名全部解析过去,先做本地验证:

  • 修改本地 Hosts 预览:在电脑本地修改 hosts 文件,将域名强制指向新服务器 IP,在浏览器里完整走一遍前后台流程,确认图片、上传、伪静态和文章保存都没问题。
  • SSL 证书迁移:宝塔新站点建立后,把老站点的 Let's Encrypt 或商业证书的密钥与 PEM 内容直接粘贴进新站的 SSL 面板,确保解析切过来的一瞬间 HTTPS 不会报红标。
  • 调整 DNS TTL 值:在改解析的前一天,把域名的解析 TTL 改成 60 秒或 600 秒。等新解析生效、老服务器访问日志彻底没有新请求后,再关停老服务器。

4. 以后如何避免繁琐的手工搬迁?

每次手工打包、下载、上传,不仅耗时耗力,而且一旦中间断流就得重来。对于日后业务量增加、有多台机器或者需要更严谨容灾的站点,更建议搭建自动化的同步机制。

宝塔官方其实提供了几个专门针对这类场景的高阶工具,比如【网站文件多机实时同步】(利用底层 inotify 机制做毫秒级增量文件镜像,主服务器一传图片从服务器自动同步),以及【企业级多云自动备份】(定时将增量数据库加密分发上传到阿里云 OSS、腾讯云 COS 或 AWS S3,哪怕服务器突发故障,拉取异地镜像几分钟就能拉起新机)。

不过大家用面板也知道,宝塔官方这类高级运维插件如果单独买,每个单月都要好几十块,长期下来很不划算。如果你的站点打算长期稳定跑,直接用宝塔企业版就划算得多,包括这两款数据容灾在内的 30 多款企业级插件全都直接解锁免费用。我们网站这边拿到了官方合作的正版终身授权方案,一次买断终身有效,而且支持后台自主免费换绑服务器 IP,换新机也不用担心授权浪费,有长期建站需求的朋友可以在博客首页顺手了解一下。

常见问题与解答 (FAQ)

Q 迁移后部分页面打开报 404 或者后台打不开是怎么回事?

大概率是伪静态规则没有同步复制,去老站的伪静态设置里把规则复制到新站对应位置保存即可;WordPress 等程序还需确认目录权限是否为 www:www(755)。

Q 搬迁时数据库太大,网页端导入经常超时中断怎么办?

大数据库不要走面板的 phpMyAdmin 或网页导入,直接通过 SSH 把 sql 文件传到服务器,用命令行执行 `mysql -u用户名 -p密码 数据库名 < 备份文件.sql`,百兆数据几秒内即可导完且不会超时。

返回运维知识库