宝塔面板迁移需先停新站web服务再同步:用mysqldump加--single-transaction等参数导库,rsync -avz --delete同步文件并排除动态目录,dns切换前用hosts+curl验证,ttl应提前24小时设为60,切完后优先查错误日志而非重装php。

宝塔面板迁移时,网站文件和数据库怎么同步才不丢数据
直接 rsync 或 cp 复制网站目录 + mysqldump 导出导入,是最容易出问题的组合。关键不是“能不能动”,而是“动的时候用户还在访问”。
- 必须先在新服务器上停掉
nginx(或apache),避免迁移过程中写入新日志、上传文件或 session 覆盖 - 数据库导出要用
mysqldump --single-transaction --routines --triggers,否则高并发下可能漏掉未提交事务里的数据 - 文件同步优先用
rsync -avz --delete,但注意排除runtime/、logs/、cache/这类动态目录——它们在新环境重建更安全 - 如果原站用了
opcache或redis缓存,迁移后要清空,否则旧缓存键可能指向已失效路径
域名 DNS 切换前,怎么验证新服务器能正确响应请求
DNS 生效有缓存,不能等切完再测。得绕过本地 DNS,直接用 IP 测试服务是否就绪。
- 在本地 hosts 文件临时加一条:
新服务器IP 域名,然后 curl -I 或浏览器直连,确认返回 200 且页面内容完整 - 检查宝塔面板里该站点的「SSL」设置:如果启用了强制 HTTPS,但新服务器还没部署证书,会直接 301 跳转失败——此时先关掉「强制 HTTPS」再测
- 特别注意伪静态规则:宝塔默认 Nginx 配置里
include /www/server/panel/vhost/rewrite/xxx.conf,迁移后这个路径要存在且内容一致,否则 WordPress 等路由 404
DNS TTL 设为 60 秒后,为什么还是等了几个小时才生效
TTL 是建议值,不是强制指令。运营商、ISP、甚至手机系统自带 DNS 都可能无视它,硬扛着缓存 2 小时以上。
- 切 DNS 前 24 小时,就把原站
TTL改成 60(宝塔 → 网站 → 设置 → DNS 管理 → 修改 TTL) - 真正切换时,不要只改 A 记录,
www子域名也得同步更新,否则部分用户走 www 仍打在旧 IP - 用
dig 域名 +trace或nslookup -debug 域名查当前解析链路,比单纯 ping 更准;国内推荐用114.114.114.114和223.5.5.5双线验证
切完 DNS,用户反馈白屏或 502,第一反应不该是重装 PHP
90% 的“切完就崩”其实卡在权限、配置路径或进程状态上,不是代码或版本问题。
- 立刻看宝塔面板里该站点的「错误日志」:
/www/wwwlogs/域名.error.log,重点搜Permission denied、connect() failed、No input file specified - 常见权限坑:
/www/wwwroot/域名所属用户必须是www(不是 root),且php-fpm进程运行用户也要匹配,否则 502 - PHP 版本看似一样,但扩展可能缺:比如原站用了
imagick,新环境只装了gd,图片处理接口就直接报 500 - 别急着重启整个
php-fpm,先用systemctl status php-fpm-74(按实际版本号)确认它真在跑,且没报Failed to start
最麻烦的其实是 CDN 缓存——哪怕 DNS 切了,CDN 节点还在回源到旧 IP。如果用了 Cloudflare 或百度云加速,记得手动清缓存或临时暂停 CDN。










