Rumah >pangkalan data >tutorial mysql >Bermula dengan MOCO, Operator MySQL untuk Kubernetes Bahagian 1
MOCO (Operator MySQL untuk Kubernetes) ialah alat asli awan yang berkuasa yang direka untuk pengurusan kluster MySQL yang diperkemas dalam Kubernetes. Ia mengautomasikan tugas utama seperti peruntukan, penskalaan, sandaran dan penyelenggaraan, memastikan ketersediaan dan kebolehpercayaan yang tinggi. MOCO memanfaatkan sumber Kubernetes untuk mencipta, memantau dan mengurus penggunaan MySQL anda dengan cekap.
MOCO menyokong versi MySQL dan Kubernetes tertentu. Pada masa ini, ia serasi dengan MySQL 8.0.28, 8.0.37, 8.0.39, 8.0.40 dan 8.4.3 serta Kubernetes 1.29, 1.30 dan 1.31.
Bagaimana MOCO Berfungsi
MOCO menyediakan kluster MySQL menggunakan Kubernetes StatefulSets. Ini melibatkan:
Perkhidmatan Penggunaan
MOCO menggunakan perkhidmatan berikut:
Jenis Alokasi
Sandarkan dan Pulihkan
MOCO memudahkan sandaran penuh dan tambahan biasa yang disimpan dalam storan objek serasi Amazon S3. Ciri-ciri termasuk:
Badi Penyimpanan Objek
Timba ialah unit pengurusan S3 untuk objek. MOCO menyimpan sandaran dalam baldi yang ditetapkan. Ambil perhatian bahawa MOCO tidak mengalih keluar sandaran lama secara automatik; anda perlu mengkonfigurasi pengurusan kitaran hayat baldi untuk ini.
Butiran lanjut tersedia dalam pautan yang disediakan.
Mengendalikan Pod Bermasalah
MOCO secara automatik mengesan dan mengasingkan nod MySQL dengan data yang tidak konsisten (pod sesat), menghalang isu replikasi. Pembuangan manual juga boleh dilakukan jika diperlukan.
Pengurusan Replikasi
MOCO menggunakan replikasi separa segerak untuk ketekalan data, memastikan nod utama menulis perubahan pada replika sebelum melakukan transaksi. Failover diautomasikan dengan mempromosikan replika kepada utama, meminimumkan gangguan. MOCO juga memantau ketinggalan replikasi untuk mengekalkan penyegerakan dan prestasi.
Stateful vs. Stateless
Penyerahan MOCO sememangnya dinyatakan kerana keperluan penyimpanan berterusan MySQL. Kubernetes StatefulSets memastikan:
Permulaan Pantas
Dua kaedah pemasangan tersedia:
Menggunakan Manifes Mentah:
<code class="language-bash">curl -fsLO https://github.com/cybozu-go/moco/releases/latest/download/moco.yaml kubectl apply -f moco.yaml</code>
Menggunakan Carta 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>
Penyesuaian manifes disokong melalui direktori config/
(kustomize).
Penciptaan Kluster
Kluster baharu menetapkan satu contoh boleh tulis sebagai yang utama; semua yang lain adalah replika baca sahaja. YAML berikut mencipta gugusan tiga nod dengan anti-afiniti pod dan had sumber:
<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>
Manfes contoh tambahan terdapat dalam direktori contoh.
Penggunaan Kluster
Pemalam kubectl moco
(tersedia pada keluaran GitHub) menyediakan akses luaran kepada kejadian MySQL MOCO. Perkhidmatan (moco-test-primary.foo.svc
dan moco-test-replica.foo.svc
untuk kelompok test
dalam foo
ruang nama) membenarkan akses rangkaian.
Pemantauan Status Kluster
Gunakan kubectl get mysqlcluster
dan kubectl describe mysqlcluster
untuk memantau kesihatan kelompok, ketersediaan dan acara terbaharu.
Akses Log
Akses ralat mysqld dan log pertanyaan perlahan menggunakan kubectl logs
.
Tukar dan Gagal
MOCO mengendalikan penukaran automatik dan failover untuk memastikan ketersediaan yang tinggi. Pertukaran manual boleh dilakukan melalui kubectl moco switchover CLUSTER_NAME
.
Memulihkan Replika Sesat
Alih keluar PVC dan Pod replika yang sesat menggunakan kubectl delete
.
Rujukan: https://www.php.cn/link/2bbc1cc8fd0e5f9e0b91f01828c87814
Atas ialah kandungan terperinci Bermula dengan MOCO, Operator MySQL untuk Kubernetes Bahagian 1. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!