复杂操作指并不是单纯的升级、升配、扩缩容,而是混合了部分或者所有意图的操作方式。Kubernetes 的声明式 API 要求我们高效地实现这样的操作,因此 operator 也支持了。

举个例子,我们将同时

  1. 修改 CN 的镜像为 polardbx/polardbx-sql:v2.0
  2. 修改 CDC 的配置为 8C32G
  3. 增加 DN 的节点,到 3 个

同样,我们可以用 kubectl editkubectl patch 的方式实现,这里演示 kubectl patch 的方式。

首先准备一个 patch 文件,

spec:
  topology:
    nodes:
      cn:
        template:
          image: polardbx/polardbx-sql:v2.0
      dn:
        replicas: 3
      cdc:
        template:
          resources:
            limits:
              cpu: 8
              memory: 32Gi

执行下面的命令来进行上述操作:

kubectl patch --type='merge' pxc polardbx-test --patch-file patch.yaml

此时我们将同时观察到 CN、DN、CDC 的变化和数据搬迁:

kubectl get pxc polardbx-test -o wide
NAME           PROTOCOL   GMS   CN    DN    CDC   PHASE     DISK       STAGE                       REBALANCE   VERSION                            AGE
polardbx-test  8.0        1/1   1/2   2/3   1/2   Upgrading 22.6 GiB                                8.0.3-PXC-5.4.13-20220418/8.0.18   35d
kubectl get pxc polardbx-test -o wide
NAME           PROTOCOL   GMS   CN    DN    CDC   PHASE     DISK       STAGE                       REBALANCE   VERSION                            AGE
polardbx-test  8.0        1/1   2/2   3/3   2/2   Upgrading 22.6 GiB   RebalanceWatch   50%         8.0.3-PXC-5.4.13-20220418/8.0.18   35d

注:如《不可中断的情况 》中所说,数据搬迁中不可中断。

results matching ""

    No results matching ""