Ce document explique comment améliorer les performances de vos charges de travail MySQL sur Google Kubernetes Engine (GKE) en générant des configurations optimisées au niveau de l'application et du nœud. Pour en savoir plus, consultez Optimiser les charges de travail sur GKE.
Les optimisations pour MySQL ont été déterminées pour une instance MySQL 8 utilisée comme base de données de traitement des transactions en ligne à nœud unique ("OLTP en lecture/écriture") avec SSL, avec des performances mesurées à l'aide de Sysbench 1.1.0. Comparez l'utilisation de la charge de travail MySQL sur votre cluster à celle de ce cas d'utilisation. Si votre cas d'utilisation est différent, il faudra peut-être ajuster les optimisations recommandées en fonction de votre contexte.
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Activez l'API GKE Recommender et l'API Google Kubernetes Engine. Activer les API
- Pour utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande
gcloud components update. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.
Conditions requises
Utilisez GKE version 1.31.1-gke.12000 ou ultérieure.
Optimiser pour les charges de travail MySQL
Nous vous recommandons d'utiliser un pool de nœuds dédié pour votre charge de travail MySQL. Par défaut, un pool de nœuds est créé lorsque vous effectuez les étapes suivantes.
Pour optimiser les performances d'une charge de travail MySQL, procédez comme suit :
Créez les fichiers manifestes avec des optimisations pour la charge de travail MySQL :
Générez des fichiers manifestes avec les optimisations recommandées en exécutant la commande suivante :
gcloud container workload profiles manifests create \ --workload=mysql-8-oltp --cluster-version=CLUSTER_VERSION --options=machineType=MACHINE_TYPE \ --output-path=/tmp/manifests.yamlRemplacez les éléments suivants :
CLUSTER_VERSION: version de GKE. Nous recommandons la version 1.31.1-gke.12000 ou ultérieure de GKE.MACHINE_TYPE: type de machine souhaité.
L'option
--output-path=/tmp/manifests.yamlest facultative. Si ce n'est pas le cas, les fichiers manifestes sont imprimés dans le terminal, mais ne sont pas enregistrés dans un fichier.Cette commande génère un fichier YAML unique contenant deux ressources Kubernetes :
- Un ConfigMap spécifiant une configuration MySQL nommée
default-auth.cnf. - Un objet ComputeClass. Cette option spécifie les machines sur lesquelles MySQL doit s'exécuter. Elle est facultative. Pour en savoir plus sur la façon de spécifier les types de machines, consultez À propos des classes de calcul personnalisées.
Examinez les recommandations et modifiez les fichiers manifestes pour qu'ils incluent les optimisations de votre choix. Pour évaluer les recommandations, vous pouvez procéder comme suit :
- Consultez la documentation MySQL pour évaluer la configuration recommandée dans votre contexte.
- Comparez l'utilisation de la charge de travail MySQL sur votre cluster au cas d'utilisation suivant. Si votre cas d'utilisation est différent, il faudra peut-être ajuster les optimisations recommandées en fonction de votre contexte.
Les optimisations pour MySQL ont été déterminées pour une instance MySQL 8 utilisée comme base de données de traitement des transactions en ligne à nœud unique ("OLTP en lecture/écriture") avec SSL, avec des performances mesurées à l'aide de Sysbench 1.1.0.
Modifiez le fichier manifeste si vous souhaitez modifier la configuration ou l'enrichir.
Appliquez les fichiers manifestes au cluster à l'aide de la commande suivante :
kubectl create -f /tmp/manifests.yaml
Déployez un pod faisant référence aux optimisations. Exemple :
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-abc123Modifiez le nom ComputeClass pour qu'il corresponde à celui généré. Appliquez ensuite le fichier manifeste de votre pod au cluster :
kubectl apply -f pod.yamlVérifiez que MySQL utilise la configuration optimisée. Pour ce faire, vous pouvez exécuter la commande suivante afin de vous assurer que MySQL utilise la configuration optimisée :
kubectl exec mysql -- mysql -e "SELECT DISTINCT VARIABLE_PATH FROM performance_schema.variables_info WHERE VARIABLE_PATH != '';"Un résultat semblable aux lignes suivantes doit s'afficher :
VARIABLE_PATH /etc/mysql/conf.d/gke-optimized.cnf /etc/my.cnfVous pouvez également utiliser la commande
mysqlpour interroger les directives individuelles définies dans la configuration optimisée, telles quemax_connections.
Lorsque vous déployez la charge de travail, le cluster crée un pool de nœuds qui respecte la configuration optimisée et y attribue vos pods.
Les pods existants ne sont pas modifiés. Seuls les pods qui font référence aux configurations optimisées sont optimisés. Si vous avez déjà déployé des charges de travail MySQL dans votre cluster, vous devez les redéployer pour les exécuter avec les configurations optimisées.
Étapes suivantes
- En savoir plus sur l'optimisation des charges de travail sur GKE
- Découvrez comment déployer un cluster MySQL avec état sur GKE.
- En savoir plus sur les ComputeClasses GKE
- Pour optimiser les charges de travail Redis, consultez Optimiser les performances des charges de travail Redis sur GKE.