In diesem Dokument wird beschrieben, wie Sie die Leistung Ihrer MySQL-Arbeitslasten in Google Kubernetes Engine (GKE) verbessern können, indem Sie optimierte Konfigurationen auf Anwendungs- und Knotenebene generieren. Weitere Informationen finden Sie unter Für Arbeitslasten in GKE optimieren.
Die Optimierungen für MySQL wurden für eine MySQL 8-Instanz ermittelt, die als Single-Node-OLTP-Datenbank („Read/Write OLTP“) mit SSL verwendet wird. Die Leistung wurde mit Sysbench 1.1.0 gemessen. Überlegen Sie, wie die MySQL-Arbeitslast in Ihrem Cluster im Vergleich zu diesem Anwendungsfall verwendet wird. Wenn sich Ihr Anwendungsfall unterscheidet, müssen die empfohlenen Optimierungen möglicherweise an Ihren Kontext angepasst werden.
Hinweis
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die GKE Recommender API und die Google Kubernetes Engine API. APIs aktivieren
- Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem Befehl
gcloud components updateab. In früheren gcloud CLI-Versionen werden die Befehle in diesem Dokument möglicherweise nicht unterstützt.
Voraussetzungen
Verwenden Sie die GKE-Version 1.31.1-gke.12000 oder höher.
Für MySQL-Arbeitslasten optimieren
Wir empfehlen, einen dedizierten Knotenpool für Ihre MySQL-Arbeitslast zu verwenden. Standardmäßig wird ein neuer Knotenpool erstellt, wenn Sie die folgenden Schritte ausführen.
So optimieren Sie die Leistung einer MySQL-Arbeitslast:
Erstellen Sie die Manifeste mit Optimierungen für die MySQL-Arbeitslast:
Generieren Sie Manifeste mit empfohlenen Optimierungen, indem Sie den folgenden Befehl ausführen:
gcloud container workload profiles manifests create \ --workload=mysql-8-oltp --cluster-version=CLUSTER_VERSION --options=machineType=MACHINE_TYPE \ --output-path=/tmp/manifests.yamlErsetzen Sie Folgendes:
CLUSTER_VERSION: die GKE-Version. Wir empfehlen GKE-Version 1.31.1-gke.12000 oder höher.MACHINE_TYPE: der gewünschte Maschinentyp.
Das Flag
--output-path=/tmp/manifests.yamlist optional. Wenn es nicht angegeben ist, werden die Manifeste im Terminal ausgegeben, aber nicht in einer Datei gespeichert.Mit diesem Befehl wird eine einzelne YAML-Datei mit zwei Kubernetes-Ressourcen generiert:
- Eine ConfigMap, die eine MySQL-Konfiguration mit dem Namen
default-auth.cnfangibt. - Ein ComputeClass-Objekt. Damit werden Maschinen für die Ausführung von MySQL angegeben. Dies ist optional. Weitere Informationen zum Angeben von Maschinentypen finden Sie unter Benutzerdefinierte Compute-Klassen.
Sehen Sie sich die Empfehlungen an und ändern Sie die Manifeste so, dass sie die gewünschten Optimierungen enthalten. So können Sie die Empfehlungen bewerten:
- Sehen Sie sich die MySQL-Dokumentation an, um die empfohlene Konfiguration für Ihren Kontext zu ermitteln.
- Vergleichen Sie die Nutzung der MySQL-Arbeitslast in Ihrem Cluster mit dem folgenden Anwendungsfall. Wenn sich Ihr Anwendungsfall unterscheidet, müssen die empfohlenen Optimierungen möglicherweise an Ihren Kontext angepasst werden.
Die Optimierungen für MySQL wurden für eine MySQL 8-Instanz ermittelt, die als Single-Node-OLTP-Datenbank („Read/Write OLTP“) mit SSL verwendet wird. Die Leistung wurde mit Sysbench 1.1.0 gemessen.
Bearbeiten Sie die Manifestdatei, wenn Sie die Konfiguration ändern oder ergänzen möchten.
Wenden Sie die Manifeste mit dem folgenden Befehl auf den Cluster an:
kubectl create -f /tmp/manifests.yaml
Stellen Sie einen Pod bereit, der auf die Optimierungen verweist. Beispiel:
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Ändern Sie den Namen der Compute-Klasse so, dass er mit dem generierten Namen übereinstimmt. Wenden Sie dann das Pod-Manifest auf den Cluster an:
kubectl apply -f pod.yamlPrüfen Sie, ob MySQL die optimierte Konfiguration verwendet. Führen Sie dazu den folgenden Befehl aus, um sicherzustellen, dass MySQL die optimierte Konfiguration verwendet:
kubectl exec mysql -- mysql -e "SELECT DISTINCT VARIABLE_PATH FROM performance_schema.variables_info WHERE VARIABLE_PATH != '';"Die Ausgabe sollte in etwa so aussehen:
VARIABLE_PATH /etc/mysql/conf.d/gke-optimized.cnf /etc/my.cnfSie können auch den Befehl
mysqlverwenden, um die einzelnen Richtlinien abzufragen, die in der optimierten Konfiguration festgelegt sind, z. B.max_connections.
Wenn Sie die Arbeitslast bereitstellen, erstellt der Cluster einen neuen Knotenpool, der der optimierten Konfiguration entspricht, und weist Ihre Pods diesen Knotenpools zu.
Bereits vorhandene Pods werden nicht geändert. Nur Pods, die auf die optimierten Konfigurationen verweisen, werden optimiert. Wenn Sie zuvor MySQL-Arbeitslasten in Ihrem Cluster bereitgestellt haben, müssen Sie diese Arbeitslasten noch einmal bereitstellen, damit sie mit den optimierten Konfigurationen ausgeführt werden.
Nächste Schritte
- Weitere Informationen zur Arbeitslastoptimierung in GKE
- Weitere Informationen zum Bereitstellen eines zustandsorientierten MySQL-Clusters in GKE
- Weitere Informationen zu GKE ComputeClasses
- Informationen zur Optimierung von Redis-Arbeitslasten finden Sie unter Redis-Arbeitslastleistung in GKE optimieren.