MySQL InnoDB集群升级元数据

2023年 9月 12日 83.4k 0

和每个版本一样,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之前,不允许执行集群更改操作。

如何升级

完成以下操作后,升级成功完成:

  1. 将MySQL路由器实例升级到版本8.0.19。
  2. 将MySQL Shell升级到8.0.19版。
  3. 将元数据模式升级到版本2.0.0(从以前的版本1.0.1)。

升级MySQL Router

升级MySQL路由器实例是第一步。路由器的升级过程与平时一样:

  1. 停止MySQL路由器
  2. 用8.0.19版升级/替换MySQL路由器安装
  3. 重启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管理,指示不允许任何更改操作的警告消失了。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论