MySQL Kubernetes 运算符手册  /  MySQL InnoDB 集群  /  InnoDBCluster 的清单变更

3.3 InnoDBCluster 的清单变更

本节介绍在设置 MySQL InnoDB 集群时定义的常用选项。有关选项的完整列表,请参见 表 8.1,"InnoDBCluster 的 Spec 表".

以下是一个使用大多数默认值的简单示例

apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mycluster
spec:
  secretName: mypwds
  tlsUseSelfSigned: true

以下是一个具有可选更改的扩展版本

apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mycluster
spec:
  secretName: mypwds
  tlsUseSelfSigned: true
  instances: 3
  version: 9.0.0
  router:
    instances: 1
    version: 9.0.0
  datadirVolumeClaimTemplate:
    accessModes: 
      - ReadWriteOnce
    resources:
      requests:
        storage: 40Gi
  initDB:
    clone:
      donorUrl: mycluster-0.mycluster-instances.another.svc.cluster.local:3306
      rootUser: root
      secretKeyRef:
        name: mypwds
  mycnf: |
    [mysqld]
    max_connections=162

以下是针对初始 InnoDBCluster 配置所做的每个更改的说明。

路由器和服务器版本以及实例

默认情况下,MySQL Kubernetes 运算符会安装与运算符相同版本的 MySQL 服务器,并安装与 MySQL 服务器相同版本的路由器。默认情况下,它还会安装 3 个 MySQL 实例和 1 个路由器实例。可选择配置每个

spec:
  instances: 3
  version: 9.0.0
  router:
    instances: 1
    version: 9.0.0

设置持久卷声明大小

设置 MySQL 实例的存储配置。为了存储 MySQL 服务器的数据目录 (datadir),每个 MySQL 服务器 Pod 都使用一个持久卷声明 (PVC)。每个 PVC 遵循命名方案 datadir-{clustername}-[0-9]。一个 datadirVolumeClaimTemplate 模板允许设置不同的选项,包括大小和存储类。例如

  datadirVolumeClaimTemplate:
    accessModes: 
      - ReadWriteOnce
    resources:
      requests:
        storage: 40Gi

有关其他配置信息,请参见官方 存储:持久卷 文档。 datadirVolumeClaimTemplate 对象设置为 x-kubernetes-preserve-unknown-fields: true

注意

MySQL Kubernetes 运算符当前不支持存储大小调整。

有关使用 PersistentVolumeClaim 的相关 MySQLBackup 示例,请参见 第 7.1 节,"处理 MySQL 备份".

initDB 对象

可选择使用 initDB 对象来初始化 InnoDBCluster,该对象仅在创建 InnoDBCluster 时使用。它接受 clonedump 定义。

此简单的 initDB clone 示例从集群中克隆一个远程 MySQL 实例。捐赠者 MySQL 服务器的凭据存储在目标服务器上的一个 Secret 中,其中包含用于 "rootUser" 的 "rootPassword" 密钥。

  initDB:
    clone:
      donorUrl: mycluster-0.mycluster-instances.another.svc.cluster.local:3306
      rootUser: root
      secretKeyRef:
        name: mypwds

MySQL 服务器在使用克隆操作填充数据后重新启动,在相关 Pod 的重启列中会显示 "1"。克隆利用 MySQL 服务器的 克隆插件 并相应地执行。

有关 dump 示例(而不是 clone),请参见 第 7.2 节,"使用 Helm 从转储文件引导 MySQL InnoDB 集群".

修改 my.cnf 设置

使用 mycnf 选项向每个 MySQL 实例的 my.cnf 添加自定义配置。此示例添加一个 [mysqld] 部分,将 max_connections 设置为 162

  mycnf: |
    [mysqld]
    max_connections=162

这将添加到生成的 my.cnf;默认的 my.cnf 模板在 initconf 容器的 ConfigMap 中可见。以下示例用于查看此模板:kubectl get cm ${CLUSTER_NAME}-initconf -o json | jq -r '.data["my.cnf.in"]'.