和每个版本一样,MySQL Shell 8.0.19包含了几个错误修复和新特性。但是,此版本包括一些重大变化:
- 修复了模式定义中的错误: Cascading keys in multi-primary mode.
- InnoDB ReplicaSet简介
这些更改需要更新元数据模式定义,其中一些与以前的版本不兼容。使用MySQL Shell 8.0.19创建的InnoDB集群和复制集部署将自动使用新版本的元数据模式。但是,要将在旧Shell版本(8.0.18或更早版本)中创建的InnoDB集群部署与MySQL Shell 8.0.19一起使用,需要进行元数据模式升级。
我可以在当前部署中使用MySQL Shell和MySQL Router 8.0.19吗?
MySQL路由器8.0.18将无法使用元数据的第2版,因此您必须确保首先升级路由器。MySQL路由器8.0.19是向后兼容的,因此它可以继续工作,没有任何问题。
另一方面,MySQL Shell 8.0.19将允许您在InnoDB集群上执行读取操作,但是,在元数据升级到版本2.0.0之前,不允许执行集群更改操作。
如何升级
完成以下操作后,升级成功完成:
- 将MySQL路由器实例升级到版本8.0.19。
- 将MySQL Shell升级到8.0.19版。
- 将元数据模式升级到版本2.0.0(从以前的版本1.0.1)。
升级MySQL Router
升级MySQL路由器实例是第一步。路由器的升级过程与平时一样:
- 停止MySQL路由器
- 用8.0.19版升级/替换MySQL路由器安装
- 重启MySQL路由器
MySQL路由器8.0.19可以使用旧版本的元数据正常工作。您还可以根据旧的元数据引导路由器8.0.19的新实例。因此,如果不能在路由器之后立即升级外壳和元数据,应该没有问题。
升级MySQL Shell and Metadata
MySQL路由器实例升级后,下一步是使用MySQL Shell 8.0.19并执行
dba.upgradeMetadata()
执行元数据升级。
这个过程需要以MySQL root(或同等用户)的身份执行。在旧版本的Shell中创建的集群管理帐户将无法工作,因为它们缺少升级所需的一些权限。
要升级元数据,只需使用新的dba.upgradeMetadata()函数。
元数据升级期间发现未升级的MySQL路由器实例
上图显示了执行升级时发生的两个操作:
- 引导实例时创建的MySQL 路由器帐户被升级以满足元数据 2.0.0的要求
- 进行检查以确保所有MySQL 路由器实例都已升级到版本 8.0.19
注意:如果使用的帐户没有前缀,MySQL路由器8.0.19允许使用自定义帐户(–account选项)来引导实例 mysql_router 在此过程中,此帐户的权限不会升级。
–account 选项可防止路由器创建标准帐户,从而允许多个路由器实例共享同一个帐户 。
升级所有MySQL路由器实例是升级到Metadata 2.0.0的先决条件,如果升级检查发现MySQL路由器实例尚未升级,其中的前10个将在此列出,并要求用户干预。
有三种方法可以克服这个问题:
- 将剩余的MySQL路由器实例升级到版本8.0.19,并选择选项1继续元数据升级。
- 中止操作,将剩余的MySQL路由器实例升级到版本8.0.19,然后再次执行upgradeMetadata。
- 注销列出的MySQL路由器实例,只有当它是一些剩余的记录,这是,列出的MySQL路由器实例不再存在。
元数据升级过程已完成
升级过程后,InnoDB集群完全可由MySQL Shell 8.0.19管理,指示不允许任何更改操作的警告消失了。