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