
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 をストレージに使用するのが通常は最善の計画です。