一直以来,MySQL版本升级依赖额外的工具 mysql_upgrade ,但是从 MySQL 8.0.16 开始,mysql_upgrade 工具将被废弃,取而代之的是MySQL 8.0 新的版本升级方式,升级功能集成到MySQL Server的进程mysqld中,不再依赖额外的外部工具。
这样的升级方式变更带来了哪些好处?
- 升级速度更快
- 升级过程更简单
- 升级过程更安全
- 显著减少升级步骤,更容易自动化
- 不需要重新启动MySQL Server
- 即插即用
8.0.16之前老的版本升级过程:
- 关闭MySQL Server,安装新版本二进制软件包
- 使用新版本软件包启动MySQL Server,此时Server会自动升级 数据字典表。
- 运行mysql_upgrade 工具,升级系统表和用户表。
- 重启MySQL Server,接受业务流量。
8.0.16 版本新的升级过程:
- 关闭MySQL Server,安装新版本二进制软件包
- 使用新版本软件包启动MySQL Server,此时Server会自动检查并执行第一步升级操作,升级数据字典表。在第一步升级完成之后,Server分析系统表和用户表是否需要升级,如果指定了升级选项 upgrade (后面会详细介绍)为AUTO或者FORCE,Server将会执行第二步升级操作,对系统表和用户表进行升级,如果第二步不需要升级,Server将会跳过第二步。
相比于之前的升级方式,整个过程由2步变成了1步,不需要额外的升级工具,降低了升级耗时。
新的Server选项, --upgrade
可能的取值为: NONE, AUTO, MINIMAL, FORCE,默认值为AUTO
- NONE Server启动时不会执行任何的升级动作,如果发现版本不对,Server将会异常退出。这个选项只能在明确知道Server的版本与之前的版本一致时,才可以使用。
- AUTO 是默认选项,Server启动时会尝试升级数据字典表和用户表。如果发现不需要升级,会自动忽略升级过程。
- MINIMAL Server启动时仅仅尝试执行数据字典的升级,其他的系统表、用户表等,不会进行升级。这个选项和之前老的升级方式相同,必须再次使用mysql_upgrade 工具执行剩下的升级过程。然后需要再次重启Server。
- FORCE Server启动时强制执行升级过程,不管是否已经升级过。这个行为与之前 mysql_upgrade --force 相似。
最后:
如果用户对老的升级方式念念不忘,想要与之前的升级方式保持一致,只要在启动Server时,加选项 --upgrade=MINIMAL 就可以了。