Z-Blog 数据库升级的完整迁移步骤与回滚方案

· zblog · 阅读 3
摘要

先说结论:数据库升级的关键不是升级命令本身,而是「先备份、再验证、后切换」和一份能真正执行的回滚方案。下面以 MySQL 5.7 → 8.0 为例,方法同样适用于换主机、换云厂商。 一、升级前必须确认的三件事 Z-Blog 版本与其依赖是否

先说结论:数据库升级的关键不是升级命令本身,而是「先备份、再验证、后切换」和一份能真正执行的回滚方案。下面以 MySQL 5.7 → 8.0 为例,方法同样适用于换主机、换云厂商。

一、升级前必须确认的三件事

  1. Z-Blog 版本与其依赖是否支持目标数据库版本(老版本主题/插件可能用到已移除的函数)。
  2. 字符集与排序规则:确认是 utf8mb4,避免升级后表情符乱码。
  3. 是否有足够磁盘空间放一份完整导出(通常按数据库大小 ×1.5 预留)。

二、完整备份

用 mysqldump --single-transaction --routines --triggers --default-character-set=utf8mb4 导出,同时单独打包 zb_users 与根目录配置文件。备份完成后在测试环境实际导入一次,确认文件可用。

三、升级步骤(推荐停机窗口执行)

  1. 关闭站点访问(维护页或停 PHP),避免升级过程中写入新数据。
  2. 在新库导入备份,指向新的数据库配置,先在测试域名跑通。
  3. 登录后台,逐页检查:首页、分类页、文章页、评论、后台文章编辑、附件库。
  4. 重点验证:中文搜索、分页、伪静态、插件配置读取。
  5. 确认无误后再切换正式域名解析/配置。

四、常见坑

  • 认证插件变化:MySQL 8 默认认证方式变化,老的 PHP 扩展可能连不上,需要调整用户认证插件或升级 PHP。
  • 严格模式:默认 SQL 模式更严格,旧插件里的隐式类型转换会直接报错。
  • 大小写敏感:Linux 下表名大小写敏感,Windows 迁移过来的站点容易报「表不存在」。

五、回滚方案

回滚要满足两点:能秒回与数据不丢。

  • 保留旧库不删,只切换配置文件里的连接信息,回滚即改回连接。
  • 若已产生新数据,导出新库增量后再回滚,避免直接丢弃。
  • DNS 若已切换,TTL 提前设为较短值,方便快速回退。

把这五步做成一份检查清单,下次换主机或升级版本可以直接照抄执行。