Kubernetes InnoDBCluster: Alle Pods sollten einen PersistentVolumeClaim gemeinsam nutzen?

Kubernetes InnoDBCluster: Alle Pods sollten einen PersistentVolumeClaim gemeinsam nutzen?

Kubernetes InnoDBCluster: Alle Pods sollten einen PersistentVolumeClaim gemeinsam nutzen?

Weiter:https://dev.mysql.com/doc/mysql-operator/en/mysql-operator-innodbcluster-simple-kubectl.html

kubectl create namespace mysql-cluster-test
kubectl create secret generic mypwds \
  --from-literal=rootUser=root \
  --from-literal=rootHost=% \
  --from-literal=rootPassword=123456 -n mysql-cluster-test
kubectl apply -f mycluster.yaml -n mysql-cluster-test

Kubectl get pods -n mysql-cluster-test

NAME                                READY   STATUS    RESTARTS   AGE
mycluster-0                         2/2     Running   0          12m
mycluster-1                         2/2     Running   0          12m
mycluster-2                         2/2     Running   0          12m
mycluster-router-5d87fbd754-zhsrh   1/1     Running   0          10m

kubectl get pvc -n mysql-cluster-test

NAME                  STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
datadir-mycluster-0   Bound    pvc-b3bf5f24-99d0-4497-bd34-fd91eb4adc6c   2Gi        RWO            hostpath       8m9s
datadir-mycluster-1   Bound    pvc-1c042c50-bc3f-43f8-8e16-094042495e6d   2Gi        RWO            hostpath       8m9s
datadir-mycluster-2   Bound    pvc-85fbf9f9-d975-4899-a292-d247644cb2d2   2Gi        RWO            hostpath       8m9s

Es gibt 3 MySQL-PODs, von denen jeder seinen eigenen PVC hat und an unterschiedliche Volumes gebunden ist. MySQL-Daten müssen in einem Volume gespeichert werden. Sollen sich alle PODs einen PVC teilen?

Antwort1

Es gibt 3 MySQL-PODs, von denen jeder seinen eigenen PVC hat und an unterschiedliche Volumes gebunden ist. MySQL-Daten müssen in einem Volume gespeichert werden. Sollen sich alle PODs einen PVC teilen?

MySQL (und andere SQL-Datenbanken) sind nicht für den Betrieb mit gemeinsam genutztem Speicher ausgelegt. Wenn Sie mehr als eine Instanz benötigen, benötigt jede Instanz ihren eigenen dedizierten Speicher. In einer Clusterkonfiguration verwendet jede Instanz eine Form der Replikation, um ihre lokale Kopie auf dem neuesten Stand mit den anderen Mitgliedern des Clusters zu halten.

Dies ist im Allgemeinen das, was Sie wollen - auch wenn SiekönnteVerwenden Sie ein einzelnes gemeinsam genutztes PV. Der Verlust des PV würde bedeuten, dass Sie alle Ihre Daten verlieren. Durch die Verwendung der Replikation kann eine andere Instanz im Cluster die primäre Rolle übernehmen (oder weiterhin Zugriff gewähren, wenn Sie mehrere Lese-/Schreibreplikate haben).

DukönnteVerwenden Sie ein einzelnes Volume und dann für jede Instanz ein separates Verzeichnis. Wie bereits erwähnt, wird Ihr Speicher dadurch jedoch zu einem einzelnen Ausfallpunkt (und auch zu einem einzelnen Punkt für E/A-Konflikte).

Wird der lokale Speicher gelöscht, wenn ein Pod gelöscht wird?

Wenn Sie temporären Speicher für die Datenbank verwenden, dann ja. Wenn Sie die Datenbank auf einem (nicht-shared) PV, dann nein. Die Verwendung eines PV zur Speicherung ist normalerweise der beste Plan; im Falle eines Pod-Neustarts (z. B. beim Upgraden von Versionen) minimiert dies die Datenmenge, die übertragen werden muss, um das Replikat erneut zu synchronisieren.

verwandte Informationen