本文說明如何產生最佳化的應用程式層級和節點層級設定,進而提升 Google Kubernetes Engine (GKE) 上 MySQL 工作負載的效能。詳情請參閱「針對 GKE 上的工作負載進行最佳化」。
MySQL 的最佳化設定是針對 MySQL 8 執行個體所決定,該執行個體用做單一節點的線上交易處理資料庫 (「讀取/寫入 OLTP」),並使用 SSL,效能則是以 Sysbench 1.1.0 測量。請考量叢集上 MySQL 工作負載的使用方式,與這個用途的差異。如果您的用途不同,建議您視情況調整建議的最佳化設定。
事前準備
開始之前,請務必先完成下列工作:
- 啟用 GKE Recommender API 和 Google Kubernetes Engine API。 啟用 API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。
需求條件
使用 GKE 1.31.1-gke.12000 以上版本。
最佳化 MySQL 工作負載
建議您為 MySQL 工作負載使用專屬節點集區。根據預設,完成下列步驟時,系統會建立新的節點集區。
如要最佳化 MySQL 工作負載的效能,請採取下列做法:
建立資訊清單,並針對 MySQL 工作負載進行最佳化:
執行下列指令,產生含有最佳化建議的資訊清單:
gcloud container workload profiles manifests create \ --workload=mysql-8-oltp --cluster-version=CLUSTER_VERSION --options=machineType=MACHINE_TYPE \ --output-path=/tmp/manifests.yaml更改下列內容:
CLUSTER_VERSION:GKE 版本。 建議使用 GKE 1.31.1-gke.12000 以上版本。MACHINE_TYPE:所需的機器類型。
--output-path=/tmp/manifests.yaml是選用旗標。如果未指定,資訊清單會列印至終端機,但不會儲存至檔案。這項指令會產生單一 YAML 檔案,其中包含兩項 Kubernetes 資源:
- 指定名為
default-auth.cnf的 MySQL 設定的 ConfigMap。 - ComputeClass 物件。這會指定 MySQL 要執行的機器,為選用項目。 如要瞭解如何指定機器類型,請參閱關於自訂 ComputeClass。
查看建議並修改資訊清單,加入您偏好的最佳化項目。如要評估最佳化建議,請執行下列步驟:
- 請參閱 MySQL 說明文件,評估適合您情境的建議設定。
- 請考量叢集上 MySQL 工作負載的使用方式,與下列用途相比如何。如果您的用途不同,建議的調整項目可能需要配合您的情境。
MySQL 的最佳化設定是針對 MySQL 8 執行個體所決定,該執行個體用做單一節點線上交易處理資料庫 (「讀取/寫入 OLTP」),並使用 SSL,效能則是以 Sysbench 1.1.0 測量。
如要修改或新增設定,請編輯資訊清單檔案。
使用下列指令將資訊清單套用至叢集:
kubectl create -f /tmp/manifests.yaml
部署參照最佳化的 Pod。例如:
apiVersion: v1 kind: Pod metadata: name: mysql spec: containers: - name: mysql image: mysql:8 volumeMounts: - name: gke-optimized-workload-config subPath: default-auth.cnf mountPath: /etc/mysql/conf.d/gke-optimized.cnf readOnly: true volumes: - name: gke-optimized-workload-config configMap: name: mysql-config nodeSelector: cloud.google.com/compute-class: optimized-gke-mysql-8-oltp-abc123修改 ComputeClass 名稱,使其與產生的名稱相符。接著,將 Pod 資訊清單套用至叢集:
kubectl apply -f pod.yaml確認 MySQL 使用最佳化設定。如要這麼做,請執行下列指令,確保 MySQL 使用最佳化設定:
kubectl exec mysql -- mysql -e "SELECT DISTINCT VARIABLE_PATH FROM performance_schema.variables_info WHERE VARIABLE_PATH != '';"畫面會顯示類似以下的輸出:
VARIABLE_PATH /etc/mysql/conf.d/gke-optimized.cnf /etc/my.cnf您也可以使用
mysql指令,查詢在最佳化設定中設定的個別指令,例如max_connections。
部署工作負載時,叢集會建立符合最佳化設定的新節點集區,並將 Pod 指派給這些節點集區。
現有 Pod 不會修改。只有參照最佳化設定的 Pod 才會經過最佳化。如果您先前已在叢集中部署 MySQL 工作負載,則需要重新部署這些工作負載,才能以最佳化設定執行。
後續步驟
- 進一步瞭解 GKE 工作負載最佳化。
- 進一步瞭解如何在 GKE 上部署具狀態的 MySQL 叢集。
- 進一步瞭解 GKE ComputeClasses。
- 如要針對 Redis 工作負載進行最佳化,請參閱「在 GKE 上提升 Redis 工作負載效能」。