本文是发表在mysql工程团队博客饿译文,原文链接“https://mysqlserverteam.com/upgrading-mysql-innodb-cluster-metadata/”
作者: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。
如何升级
通过以下操作进行升级:
将MySQL Router实例升级到8.0.19版。
将MySQL Shell升级到8.0.19版。
将元数据架构升级到版本2.0.0(从先前的版本1.0.1开始)。
升级MySQL Router
升级MySQL Router实例是第一步。MySQL Router的升级过程与往常相同:
停止MySQL Router
升级/替换8.0.19版的MySQL Router安装
重启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函数列出了应授予这些帐户的正确权限,这些权限是:
要升级此类帐户,只需将
资源
有关MySQL Shell的详细信息,请参阅《 MySQL Shell 用户指南》。
有关此版本引入的功能的更多详细信息以及已修复的错误的完整列表,请查看发行说明。
不要忘记下载并尝试一下,非常欢迎您提供反馈!
您可以通过https://mysqlcommunity.slack.com/中的#shell频道与我们联系。
本文同步发表在公众号“MySQL解决方案工程师”,欢迎关注!