Kubernetes 的 MySQL 運算子手冊  /  MySQL InnoDB 叢集  /  InnoDBCluster 的 Manifest 變更

3.3 InnoDBCluster 的 Manifest 變更

本節涵蓋設定 MySQL InnoDB 叢集時定義的常見選項。如需選項的完整清單,請參閱表格 8.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: 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 配置所做的每個變更。

Router 和伺服器版本及執行個體

預設情況下,Kubernetes 的 MySQL 運算子會安裝與運算子相同版本的 MySQL 伺服器,並安裝與 MySQL 伺服器相同版本的 Router。預設情況下,它也會安裝 3 個 MySQL 執行個體和 1 個 Router 執行個體。您可以選擇性地設定每一個執行個體

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

設定 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

注意

Kubernetes 的 MySQL 運算子目前不支援儲存調整大小。

如需使用 PersistentVolumeClaim 的相關 MySQLBackup 範例,請參閱第 7.1 節,「處理 MySQL 備份」

initDB 物件

您可以選擇使用 initDB 物件使用資料庫初始化 InnoDBCluster,它僅在建立 InnoDBCluster 時使用。它接受 clonedump 定義。

這個簡單的 initDB clone 範例會從叢集複製遠端 MySQL 執行個體。捐贈者 MySQL 伺服器的憑證會以 'rootPassword' 金鑰儲存在目標伺服器上的 Secret 中,供 'rootUser' 使用。

  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 從 Dump 引導 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"]'