
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.