Heim > Datenbank > MySQL-Tutorial > Erste Schritte mit MOCO, dem MySQL-Operator für Kubernetes Teil 1

Erste Schritte mit MOCO, dem MySQL-Operator für Kubernetes Teil 1

DDD
Freigeben: 2025-01-14 14:02:44
Original
534 Leute haben es durchsucht

Getting started on MOCO, the MySQL Operator for Kubernetes Part 1

MOCO (MySQL Operator for Kubernetes) ist ein leistungsstarkes, cloudnatives Tool, das für eine optimierte MySQL-Clusterverwaltung innerhalb von Kubernetes entwickelt wurde. Es automatisiert wichtige Aufgaben wie Bereitstellung, Skalierung, Backups und Wartung und sorgt so für hohe Verfügbarkeit und Zuverlässigkeit. MOCO nutzt Kubernetes-Ressourcen, um Ihre MySQL-Bereitstellungen effizient zu erstellen, zu überwachen und zu verwalten.

MOCO unterstützt bestimmte MySQL- und Kubernetes-Versionen. Derzeit ist es mit MySQL 8.0.28, 8.0.37, 8.0.39, 8.0.40 und 8.4.3 sowie Kubernetes 1.29, 1.30 und 1.31 kompatibel.

Wie MOCO funktioniert

Clusterbereitstellung

MOCO stellt MySQL-Cluster mithilfe von Kubernetes StatefulSets bereit. Dazu gehört:

  1. Definieren einer benutzerdefinierten MySQLCluster-Ressource (CR) unter Angabe der gewünschten Konfigurationen.
  2. Der MOCO-Controller erstellt StatefulSets und Persistent Volume Claims (PVCs) für Clusterknoten.
  3. Konfigurieren von MySQL-Instanzen mit halbsynchroner Replikation für hohe Verfügbarkeit.

Bereitstellungsdienste

MOCO stellt die folgenden Dienste bereit:

  • Primärer Dienst: Leitet den Datenverkehr an den primären Knoten weiter.
  • Replikatdienst: Leitet Leseabfragen an Replikatknoten weiter.
  • Backup-Dienst: Verwaltet Backups über Sidecars, die in das StatefulSet integriert sind.

Bereitstellungstypen

  • Einzelne Primärdatenbank mit Replikaten: Die Standardeinstellung; ein primäres und mehrere Replikate.
  • Multiregionale Cluster: Für geografisch verteilte Replikation.

Sichern und Wiederherstellen

MOCO ermöglicht regelmäßige vollständige und inkrementelle Sicherungen, die im Amazon S3-kompatiblen Objektspeicher gespeichert werden. Zu den Funktionen gehören:

  • Geplante Sicherungen in den Objektspeicher.
  • On-Demand-Backups über die Kubernetes-API.
  • Einfache CR-Updates für Restaurationen.
  • Point-in-Time Recovery (PITR) für eine robuste Notfallwiederherstellung.

Objektspeicher-Bucket

Der Bucket ist die S3-Verwaltungseinheit für Objekte. MOCO speichert Backups in einem bestimmten Bucket. Beachten Sie, dass MOCO alte Backups nicht automatisch entfernt. Hierfür müssen Sie das Bucket-Lifecycle-Management konfigurieren.

Weitere Details finden Sie im bereitgestellten Link.

Umgang mit problematischen Pods

MOCO erkennt und isoliert automatisch MySQL-Knoten mit inkonsistenten Daten (fehlerhafte Pods) und verhindert so Replikationsprobleme. Bei Bedarf ist auch eine manuelle Entfernung möglich.

Replikationsverwaltung

MOCO nutzt halbsynchrone Replikation für Datenkonsistenz und stellt sicher, dass der Primärknoten Änderungen in Replikate schreibt, bevor er Transaktionen festschreibt. Failover werden automatisiert, indem ein Replikat zum Primärserver heraufgestuft wird, wodurch Störungen minimiert werden. MOCO überwacht auch die Replikationsverzögerung, um Synchronisierung und Leistung aufrechtzuerhalten.

Stateful vs. Stateless

MOCO-Bereitstellungen sind aufgrund der dauerhaften Speicheranforderungen von MySQL von Natur aus zustandsbehaftet. Kubernetes StatefulSets stellen Folgendes sicher:

  • Persistente Speicherung über PVCs.
  • Stabile Netzwerkidentitäten für MySQL-Knoten.
  • Geordnete Skalierung und fortlaufende Updates.

Schnellstart

Es stehen zwei Installationsmethoden zur Verfügung:

Rohmanifeste verwenden:

<code class="language-bash">curl -fsLO https://github.com/cybozu-go/moco/releases/latest/download/moco.yaml
kubectl apply -f moco.yaml</code>
Nach dem Login kopieren

Helm-Diagramm verwenden:

<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>
Nach dem Login kopieren

Die Manifestanpassung wird über das Verzeichnis config/ (kustomize) unterstützt.

Clustererstellung

Ein neuer Cluster legt eine beschreibbare Instanz als primär fest; Alle anderen sind schreibgeschützte Replikate. Die folgende YAML erstellt einen Drei-Knoten-Cluster mit Pod-Anti-Affinität und Ressourcenbeschränkungen:

<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>
Nach dem Login kopieren

Weitere Beispielmanifeste finden Sie im Beispielverzeichnis.

Cluster-Nutzung

Das kubectl moco-Plugin (verfügbar in GitHub-Versionen) bietet externen Zugriff auf MOCO-MySQL-Instanzen. Dienste (moco-test-primary.foo.svc und moco-test-replica.foo.svc für einen test-Cluster im foo-Namespace) ermöglichen den Netzwerkzugriff.

Cluster-Statusüberwachung

Verwenden Sie kubectl get mysqlcluster und kubectl describe mysqlcluster, um den Clusterzustand, die Verfügbarkeit und aktuelle Ereignisse zu überwachen.

Protokollzugriff

Greifen Sie mit kubectl logs auf MySQL-Fehler- und langsame Abfrageprotokolle zu.

Switchover und Failover

MOCO übernimmt die automatische Umschaltung und den Failover, um eine hohe Verfügbarkeit sicherzustellen. Eine manuelle Umschaltung ist über kubectl moco switchover CLUSTER_NAME.

möglich

Fehlerhafte Replikate wiederherstellen

Entfernen Sie das PVC und den Pod einer fehlerhaften Replik mit kubectl delete.

Referenz: https://www.php.cn/link/2bbc1cc8fd0e5f9e0b91f01828c87814

Das obige ist der detaillierte Inhalt vonErste Schritte mit MOCO, dem MySQL-Operator für Kubernetes Teil 1. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage