升级MySQL InnoDB Cluster的元数据

时间:2022-07-26
本文章向大家介绍升级MySQL InnoDB Cluster的元数据,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

作者:Rene Ramirez 译:徐轶韬

与8.0的每个发行版一样,MySQL Shell 8.0.19包含多个错误修复以及新功能,该版本包含了一些重大更改:

  • 修复了模式定义中的错误:多主模式下的级联键。
  • 引入了InnoDB ReplicaSet。

这些更改需要对一些与先前版本不兼容的元数据架构定义进行更新。使用MySQL Shell 8.0.19创建的InnoDB Cluster和部署ReplicaSet将自动使用新版本的元数据架构。但是,要在MySQL Shell 8.0.19中使用在早期Shell版本(8.0.18或更早版本)中创建的InnoDB Cluster,则需要升级元数据架构。

元数据升级过程本身很简单,可以自动执行。但是,为了最大程度地减少停机时间并保持版本兼容性,必须将MySQL Router升级与MySQL Shell和元数据升级协调起来。

我可以在当前的部署中使用MySQL Shell和MySQL Router 8.0.19吗?

MySQL Router 8.0.19与旧版本兼容,可以继续正常工作。在将元数据升级到2.0.0版之前,MySQL Shell 8.0.19将允许您在InnoDB Cluster上执行读取操作,但是不允许进行集群更改操作。

请注意,MySQL Router8.0.18不适用于元数据的2.0.0版,因此必须确保先升级MySQL Router。

如何升级

通过以下操作进行升级:

  1. 将MySQL Router实例升级到8.0.19版。
  2. 将MySQL Shell升级到8.0.19版。
  3. 将元数据架构升级到版本2.0.0(从先前的版本1.0.1开始)。

升级MySQL Router

升级MySQL Router实例是第一步。MySQL Router的升级过程与往常相同:

  1. 停止MySQL Router
  2. 升级/替换8.0.19版的MySQL Router安装
  3. 重启MySQL Router

MySQL Router 8.0.19可以与旧版本的元数据正常工作。还可以使用旧的元数据来引导Router 8.0.19的新实例。因此,在Shell和元数据不能在Router之后立即升级的情况下不会出现问题。

升级MySQL Shell和元数据

升级MySQL Router实例后,下一步是使用MySQL Shell 8.0.19执行dba.upgradeMetadata()以执行元数据升级。

该过程需要以MySQL的root用户(或等效用户)身份执行。在旧版本的Shell中创建的集群管理帐户将无法工作,因为它们缺少升级所需的一些权限。

要升级元数据,只需使用新的dba.upgradeMetadata()函数。

在元数据升级期间发现未升级的MySQL Router实例。

重要信息:升级元数据后,旧版本的Shell将无法管理InnoDB Cluster。旧版本的Router也将不再起作用。

上图显示了执行升级时发生的两个操作:

  • 引导实例时创建的MySQL Router帐户已升级,以满足元数据2.0.0的要求
  • 进行检查以确保所有MySQL Router实例都已升级到8.0.19版。

注意:MySQL Router 8.0.19允许使用自定义帐户(–account选项)来引导实例,如果使用的帐户没有前缀mysql_router,则在此过程中不会升级该帐户的权限。有关更多详细信息,请参见下面的 升级自定义MySQL Router帐户部分。

升级所有MySQL Router实例是升级到元数据 2.0.0的先决条件,如果升级检查识别出尚未升级的MySQL Router实例,则将在此处列出其中的前10个实例,并要求用户干预。

有三种方法可以解决此问题:

  • 将其余的MySQL Router实例升级到8.0.19版,然后选择选项1继续进行元数据升级。
  • 中止该操作,将其余的MySQL Router实例升级到8.0.19版,然后再次执行upgradeMetadata。
  • 注销,只有当列出的MySQL路由器实例是一些残留的记录时,可以注销它,也就是说,列出的MySQL路由器实例不再存在。

元数据升级过程已完成。

升级过程完成后,MySQL Shell 8.0.19可以完全管理InnoDB Cluster,警告已消失,该警告指示不允许进行任何更改操作。

其他任务

更新集群管理员用户

创建InnoDB Cluster后,可以使用clusterAdmin选项创建集群管理帐户。该帐户将具有管理群集所需的最少权限集。

要在MySQL Shell 8.0.19中使用这些已经存在的集群管理帐户,需要使用新的权限集对其进行更新。可以按照指示执行以下授权语句来更新它们(例如,以root身份连接时):

升级自定义MySQL Router帐户

MySQL Router的引导过程包括创建一个用于与InnoDB Cluster通信的MySQL帐户。这些帐户具有共同的 mysql_router前缀。

从MySQL Router 8.0.19开始,可以通过–account命令行参数在引导过程中使用自定义帐户 。使用此选项可防止Router创建标准帐户,从而允许多个Router实例共享同一帐户。

除非具有mysql_router权限,否则upgradeMetadata过程不会升级MySQL Router帐户 ,如果在引导MySQL Router实例时使用了自定义帐户,则必须手动升级这些帐户。

upgradeMetadata函数列出了应授予这些帐户的正确权限,这些权限是:

要升级此类帐户,只需将<user> @ <host>替换为帐户用户和主机名,然后使用集群管理员帐户或root用户执行语句。

资源

有关MySQL Shell的详细信息,请参阅《 MySQL Shell 用户指南》。

有关此版本引入的功能的更多详细信息以及已修复的错误的完整列表,请查看发行说明。

不要忘记下载并尝试一下,非常欢迎您提供反馈!

您可以通过https://mysqlcommunity.slack.com/中的#shell频道与我们联系。