本节介绍在设置 MySQL InnoDB 集群时定义的常用选项。有关选项的完整列表,请参见 表 8.1,"InnoDBCluster 的 Spec 表".
以下是一个使用大多数默认值的简单示例
Press CTRL+C to copyapiVersion: mysql.oracle.com/v2 kind: InnoDBCluster metadata: name: mycluster spec: secretName: mypwds tlsUseSelfSigned: true
以下是一个具有可选更改的扩展版本
Press CTRL+C to copyapiVersion: 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 个路由器实例。可选择配置每个
Press CTRL+C to copyspec: 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
模板允许设置不同的选项,包括大小和存储类。例如
Press CTRL+C to copydatadirVolumeClaimTemplate: accessModes: - ReadWriteOnce resources: requests: storage: 40Gi
有关其他配置信息,请参见官方 存储:持久卷 文档。 datadirVolumeClaimTemplate
对象设置为 x-kubernetes-preserve-unknown-fields: true
。
MySQL Kubernetes 运算符当前不支持存储大小调整。
有关使用 PersistentVolumeClaim
的相关 MySQLBackup
示例,请参见 第 7.1 节,"处理 MySQL 备份".
可选择使用 initDB 对象来初始化 InnoDBCluster,该对象仅在创建 InnoDBCluster 时使用。它接受 clone
或 dump
定义。
此简单的 initDB clone 示例从集群中克隆一个远程 MySQL 实例。捐赠者 MySQL 服务器的凭据存储在目标服务器上的一个 Secret 中,其中包含用于 "rootUser" 的 "rootPassword" 密钥。
Press CTRL+C to copyinitDB: 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 集群".
使用 mycnf 选项向每个 MySQL 实例的 my.cnf
添加自定义配置。此示例添加一个 [mysqld] 部分,将 max_connections 设置为 162
Press CTRL+C to copymycnf: | [mysqld] max_connections=162
这将添加到生成的 my.cnf
;默认的 my.cnf
模板在 initconf 容器的 ConfigMap 中可见。以下示例用于查看此模板:kubectl get cm ${CLUSTER_NAME}-initconf -o json | jq -r '.data["my.cnf.in"]'.