Maison >base de données >tutoriel mysql >Premiers pas avec MOCO, l'opérateur MySQL pour Kubernetes, partie 1
MOCO (MySQL Operator for Kubernetes) est un puissant outil cloud natif conçu pour rationaliser la gestion des clusters MySQL au sein de Kubernetes. Il automatise les tâches clés telles que le provisionnement, la mise à l'échelle, les sauvegardes et la maintenance, garantissant ainsi une haute disponibilité et fiabilité. MOCO exploite les ressources Kubernetes pour créer, surveiller et gérer efficacement vos déploiements MySQL.
MOCO prend en charge des versions spécifiques de MySQL et Kubernetes. Actuellement, il est compatible avec MySQL 8.0.28, 8.0.37, 8.0.39, 8.0.40 et 8.4.3, ainsi qu'avec Kubernetes 1.29, 1.30 et 1.31.
Comment fonctionne MOCO
MOCO provisionne les clusters MySQL à l'aide de Kubernetes StatefulSets. Cela implique :
Services de déploiement
MOCO déploie les services suivants :
Types de déploiement
Sauvegarde et restauration
MOCO facilite les sauvegardes complètes et incrémentielles régulières stockées dans le stockage d'objets compatible Amazon S3. Les fonctionnalités incluent :
Seau de stockage d'objets
Le bucket est l'unité de gestion S3 des objets. MOCO stocke les sauvegardes dans un compartiment désigné. Notez que MOCO ne supprime pas automatiquement les anciennes sauvegardes ; vous devrez configurer la gestion du cycle de vie du bucket pour cela.
De plus amples détails sont disponibles dans le lien fourni.
Gestion des pods problématiques
MOCO détecte et isole automatiquement les nœuds MySQL avec des données incohérentes (pods errants), évitant ainsi les problèmes de réplication. La suppression manuelle est également possible si nécessaire.
Gestion de la réplication
MOCO utilise la réplication semi-synchrone pour la cohérence des données, garantissant que le nœud principal écrit les modifications dans les répliques avant de valider les transactions. Les basculements sont automatisés en promouvant une réplique au rang de réplique principale, minimisant ainsi les interruptions. MOCO surveille également le décalage de réplication pour maintenir la synchronisation et les performances.
Avec état ou apatride
Les déploiements MOCO sont intrinsèquement dynamiques en raison des exigences de stockage persistantes de MySQL. Kubernetes StatefulSets garantit :
Démarrage rapide
Deux méthodes d'installation sont disponibles :
Utilisation de manifestes bruts :
<code class="language-bash">curl -fsLO https://github.com/cybozu-go/moco/releases/latest/download/moco.yaml kubectl apply -f moco.yaml</code>
Utilisation du graphique Helm :
<code class="language-bash">helm repo add moco https://cybozu-go.github.io/moco/ helm repo update helm install --create-namespace --namespace moco-system moco moco/moco</code>
La personnalisation du manifeste est prise en charge via le répertoire config/
(kustomize).
Création de cluster
Un nouveau cluster désigne une instance inscriptible comme principale ; tous les autres sont des répliques en lecture seule. Le YAML suivant crée un cluster à trois nœuds avec une anti-affinité de pod et des limites de ressources :
<code class="language-yaml">apiVersion: moco.cybozu.com/v1beta2 kind: MySQLCluster metadata: namespace: default name: test spec: replicas: 3 podTemplate: spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - mysql - key: app.kubernetes.io/instance operator: In values: - test topologyKey: "kubernetes.io/hostname" containers: - name: mysqld image: ghcr.io/cybozu-go/moco/mysql:8.4.3 resources: limits: cpu: "10" memory: "10Gi" volumeClaimTemplates: - metadata: name: mysql-data spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi</code>
Des exemples de manifestes supplémentaires se trouvent dans le répertoire des exemples.
Utilisation du cluster
Le plugin kubectl moco
(disponible sur les versions GitHub) fournit un accès externe aux instances MOCO MySQL. Les services (moco-test-primary.foo.svc
et moco-test-replica.foo.svc
pour un cluster test
dans l'espace de noms foo
) autorisent l'accès au réseau.
Surveillance de l'état du cluster
Utilisez kubectl get mysqlcluster
et kubectl describe mysqlcluster
pour surveiller l'état, la disponibilité et les événements récents du cluster.
Accès au journal
Accédez aux journaux d'erreurs mysqld et de requêtes lentes à l'aide de kubectl logs
.
Basculement et basculement
MOCO gère le basculement et le basculement automatiques pour garantir une haute disponibilité. Le basculement manuel est possible via kubectl moco switchover CLUSTER_NAME
.
Récupération des répliques errantes
Supprimez le PVC et le Pod d'une réplique errante à l'aide de kubectl delete
.
Référence : https://www.php.cn/link/2bbc1cc8fd0e5f9e0b91f01828c87814
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!