MySQL 8.0 小版本升级不再支持快速回退

一直以来,我们使用MySQL,进行版本升级,比如从5.7.11升级到5.7.12,这种小版本升级是一个很小的事情,即使升级过程中或在升级之后,想要回滚,也很方便,直接将mysql server的二进制文件替换回来即可。但是从MySQL 8.0开始,小版本升级将变得不再可逆,没有办法轻松做到从 8.0.18 回退到 8.0.17。

先来看一个例子,从8.0.17版本升级到8.0.18版本,查看mysql日志,如下:

[System] [MY-010116] [Server] /opt/mysql_templates/mysql-8P/bin/mysqld (mysqld 8.0.18) starting as process 13242
…
[System] [MY-013381] [Server] Server upgrade from '80017' to '80018' started.
…
[System] [MY-013381] [Server] Server upgrade from '80017' to '80018' completed.
…
[System] [MY-010931] [Server] /opt/mysql_templates/mysql-8P/bin/mysqld: ready for connections. Version: '8.0.18'

一切顺利,成功升级到8.0.18版本。但是我们发现升级完成之后,有一些已有的业务工作的不正常,与预期不符合,此时,我们想要回滚到8.0.17版本。使用8.0.17版本的mysql server启动数据库,发现无法启动,报错,如下:

[Server] /opt/mysql_templates/mysql-8P/bin/mysqld (mysqld 8.0.17) starting as process 26663
…
[ERROR] [MY-013171] [InnoDB] Cannot boot server version 80017 on data directory built by version 80018. Downgrade is not supported
…
[System] [MY-010910] [Server] /opt/mysql_templates/mysql-8P/bin/mysqld: Shutdown complete (mysqld 8.0.17)  MySQL Community Server - GPL.
MySQL 8.0 小版本升级不支持回退:

在官方文档中已明确说明,MySQL 8.0 不支持回退到 5.7,8.0高版本不支持回退到8.0低版本,如果想回滚,需要在升级前做好备份,使用备份进行回滚。官方文档如下:

https://dev.mysql.com/doc/refman/8.0/en/downgrading.html

关于升级不可回滚的思考:

在MySQL 8.0之前,升级MySQL小版本是一件微不足道的小事情,不用担心回滚,直接替换mysql server二进制文件即可。而如今,升级MySQL8.0小版本之前,必须要做好准备:

  1. 做一次完全的备份,必须确认备份有效,如果数据量很大,那么回滚的耗时也将很长。
  2. 做小版本升级要慎重,升级之前要充分测试验证,因为一旦发现问题,小版本回滚的成本是非常高的。

文章评论

0条评论