Kubernetes 的 MySQL 运算符  / 第 3 章 MySQL InnoDB 集群  /  3.3 InnoDBCluster 的清单更改

3.3 InnoDBCluster 的清单更改

本节介绍在设置 MySQL InnoDB 集群时定义的常见选项。有关选项的完整列表,请参阅 表 7.1,“InnoDBCluster 的规格表”

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

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: 8.0.31
  router:
    instances: 1
    version: 8.0.31
  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 Operator for Kubernetes 默认安装与 Operator 同版本的 MySQL Server,并安装与 MySQL Server 同版本的 Router。它还默认安装 3 个 MySQL 实例和 1 个 Router 实例。可选择配置每个:

spec:
  instances: 3
  version: 8.0.31
  router:
    instances: 1
    version: 8.0.31

设置 PersistentVolumeClaim 大小

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

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

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

笔记

MySQL Operator for Kubernetes 目前不支持调整存储大小。

有关使用 的相关MySQLBackup示例PersistentVolumeClaim,请参阅 第 6.1 节,“处理 MySQL 备份”

initDB 对象

可选择使用initDB对象 使用数据库初始化 InnoDBCluster ;它仅在创建 InnoDBCluster 时使用。它接受clonedump 定义。

这个简单的 initDB克隆示例从集群中克隆了一个远程 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 服务器的 The Clone Plugin并相应地运行。

有关转储示例(而不是 clone),请参阅 第 6.2 节,“使用 Helm 从转储引导 MySQL InnoDB 集群”

修改 my.cnf 设置

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

  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"]'