Z-Blog 数据库升级的完整迁移步骤与回滚方案
摘要
先说结论:数据库升级的关键不是升级命令本身,而是「先备份、再验证、后切换」和一份能真正执行的回滚方案。下面以 MySQL 5.7 → 8.0 为例,方法同样适用于换主机、换云厂商。 一、升级前必须确认的三件事 Z-Blog 版本与其依赖是否
先说结论:数据库升级的关键不是升级命令本身,而是「先备份、再验证、后切换」和一份能真正执行的回滚方案。下面以 MySQL 5.7 → 8.0 为例,方法同样适用于换主机、换云厂商。
一、升级前必须确认的三件事
- Z-Blog 版本与其依赖是否支持目标数据库版本(老版本主题/插件可能用到已移除的函数)。
- 字符集与排序规则:确认是
utf8mb4,避免升级后表情符乱码。 - 是否有足够磁盘空间放一份完整导出(通常按数据库大小 ×1.5 预留)。
二、完整备份
用 mysqldump --single-transaction --routines --triggers --default-character-set=utf8mb4 导出,同时单独打包 zb_users 与根目录配置文件。备份完成后在测试环境实际导入一次,确认文件可用。
三、升级步骤(推荐停机窗口执行)
- 关闭站点访问(维护页或停 PHP),避免升级过程中写入新数据。
- 在新库导入备份,指向新的数据库配置,先在测试域名跑通。
- 登录后台,逐页检查:首页、分类页、文章页、评论、后台文章编辑、附件库。
- 重点验证:中文搜索、分页、伪静态、插件配置读取。
- 确认无误后再切换正式域名解析/配置。
四、常见坑
- 认证插件变化:MySQL 8 默认认证方式变化,老的 PHP 扩展可能连不上,需要调整用户认证插件或升级 PHP。
- 严格模式:默认 SQL 模式更严格,旧插件里的隐式类型转换会直接报错。
- 大小写敏感:Linux 下表名大小写敏感,Windows 迁移过来的站点容易报「表不存在」。
五、回滚方案
回滚要满足两点:能秒回与数据不丢。
- 保留旧库不删,只切换配置文件里的连接信息,回滚即改回连接。
- 若已产生新数据,导出新库增量后再回滚,避免直接丢弃。
- DNS 若已切换,TTL 提前设为较短值,方便快速回退。
把这五步做成一份检查清单,下次换主机或升级版本可以直接照抄执行。
2026年10月22日 10:38
前后30天 · 点日期看归档
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日
11月20日
11月21日