Kubernetes 版 MySQL Operator 手册  /  升级 MySQL Operator

第 4 章 升级 MySQL Operator

升级 MySQL Operator

应用 MySQL Operator 的最新发布 CRD 来创建一个新的 MySQL Operator 部署,以替换旧的部署。 新的 Operator 启动并准备就绪后,旧的 Operator 将终止,这不会导致停机。

kubectl apply -f https://raw.githubusercontent.com/mysql/mysql-operator/trunk/deploy/deploy-crds.yaml
kubectl apply -f https://raw.githubusercontent.com/mysql/mysql-operator/trunk/deploy/deploy-operator.yaml
注意

这只会更新 MySQL Operator,而不会更新关联的 MySQL InnoDB 集群。

在 URL 中使用 trunk 引用最新的 Kubernetes 版 MySQL Operator 版本,因为 Github 会在发布时更新。 或者,将 URL 中的 trunk 替换为特定的 标记的发布版本

升级 MySQL InnoDB 集群

这假设您已经升级了 MySQL Operator。

我们建议使用 MySQL Shell 的 checkForServerUpgrade() 实用程序来确认 MySQL InnoDB 集群是否已准备好升级。 此示例创建一个临时的 8.4.0 Pod(其中包含 MySQL Shell 8.4.0),以检查名为 mycluster 的 InnoDB 集群是否兼容升级到 MySQL 8.4.0

$> kubectl run --image=container-registry.oracle.com/mysql/community-operator:8.4.0-2.1.3 \
    --rm -it mysh -- mysqlsh -uroot -p -hmycluster -- util checkForServerUpgrade

...

If you don't see a command prompt, try pressing enter.
******
Save password for 'root@mycluster'? [Y]es/[N]o/Ne[v]er (default No): N
The MySQL server at mycluster:33060, version 8.3.0 - MySQL Community Server -
GPL, will now be checked for compatibility issues for upgrade to MySQL 8.4.0.
To check for a different target server version, use the targetVersion option...

1) Issues reported by 'check table x for upgrade' command
  No issues found

Errors:   0
Warnings: 0
Notices:  0

No known compatibility errors or issues were found.
Session ended, resume using 'kubectl attach mysh -c mysh -i -t' command when the pod is running
pod "mysh" deleted

一种常见的升级方法是修补 MySQL 服务器版本。 例如,这会将名为 mycluster 的 MySQL InnoDB 集群的 MySQL 服务器版本更新为 8.4.0

kubectl patch ic mycluster -p '{"spec": { "version": "8.4.0" } }' --type=merge

更新 MySQL InnoDB 集群的 spec.version 会更新以下内容

  • 每个 MySQL 服务器,以滚动更新的方式

    更新 MySQL InnoDB 集群会启动 MySQL 服务器的滚动重启;升级会按名称中从最高值到最低值的顺序替换 MySQL 服务器。 这可能会导致主服务器多次故障转移,具体取决于当前主服务器和已分配的主服务器。

  • MySQL Router 到指定的 spec.version,除非在补丁中也显式设置了 spec.router.version

  • 每个服务器的 MySQL 辅助容器到已安装的 MySQL Operator 版本

  • MySQL Shell 到指定的 spec.version

MySQL InnoDB 集群在升级过程中保持可用,但相关的重启可能会中断现有连接。