Kubernetes InnoDBCluster: すべてのポッドは 1 つの PersistentVolumeClaim を共有する必要がありますか?

Kubernetes InnoDBCluster: すべてのポッドは 1 つの PersistentVolumeClaim を共有する必要がありますか?

Kubernetes InnoDBCluster: すべてのポッドは 1 つの PersistentVolumeClaim を共有する必要がありますか?

続く: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 ポッドを取得 -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

3 つの mysql POD があり、それぞれに独自の PVC があり、異なるボリュームにバインドされています。Mysql データは 1 つのボリュームに保存する必要があります。すべての POD で 1 つの PVC を共有する必要がありますか?

答え1

3 つの mysql POD があり、それぞれに独自の PVC があり、異なるボリュームにバインドされています。Mysql データは 1 つのボリュームに保存する必要があります。すべての POD で 1 つの PVC を共有する必要がありますか?

MySQL (および他の SQL データベース) は、共有ストレージで動作するようには構築されていません。複数のインスタンスが必要な場合は、各インスタンスに専用のストレージが必要です。クラスター構成では、各インスタンスは何らかの形式のレプリケーションを使用して、クラスターの他のメンバーとローカル コピーを最新の状態に保ちます。

これは一般的にあなたが望むことです。できた単一の共有 PV を使用する場合、PV を失うとすべてのデータが失われることになります。レプリケーションを使用すると、クラスター内の別のインスタンスがプライマリ ロールを引き継ぐことができます (または、複数の読み取り/書き込みレプリカがある場合はアクセスを提供し続けることができます)。

あなたできた単一のボリュームを使用し、各インスタンスに個別のディレクトリを使用しますが、前述のように、これによりストレージが単一障害点 (および単一 I/O 競合点) になります。

ポッドが削除されるとローカルストレージも削除されますか?

データベースに一時ストレージを使用している場合は、はい。データベースを(レプリカを再同期するために転送する必要があるデータの量を最小限に抑えるため、Pod を再起動する場合 (バージョンのアップグレード時など)、PV をストレージに使用するのが通常は最善の計画です。

関連情報