Kubernetes InnoDBCluster: todos os pods devem compartilhar um PersistentVolumeClaim?

Kubernetes InnoDBCluster: todos os pods devem compartilhar um PersistentVolumeClaim?

Kubernetes InnoDBCluster: todos os pods devem compartilhar um PersistentVolumeClaim?

Seguindo: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 obtém 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 obtém 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

Existem 3 PODs mysql, cada um com seu próprio PVC e vinculado a volumes diferentes. Os dados MySQL precisam ser armazenados em um volume. Todos os PODs deveriam compartilhar um PVC?

Responder1

Existem 3 PODs mysql, cada um com seu próprio PVC e vinculado a volumes diferentes. Os dados MySQL precisam ser armazenados em um volume. Todos os PODs deveriam compartilhar um PVC?

MySQL (e outros bancos de dados SQL) não foram criados para operar com armazenamento compartilhado. Se você quiser mais de uma instância, cada instância precisará de seu próprio armazenamento dedicado. Em uma configuração de cluster, cada instância usa alguma forma de replicação para manter sua cópia local atualizada com outros membros do cluster.

Geralmente é isso que você deseja - mesmo se vocêpoderiaSe você usar um único PV compartilhado, perder o PV significaria que você perderia todos os seus dados. Ao usar a replicação, outra instância no cluster pode assumir a função primária (ou pode continuar fornecendo acesso se você tiver várias réplicas de leitura/gravação).

Vocêpoderiause um único volume e, em seguida, use um diretório separado para cada instância, mas como observado anteriormente, isso torna seu armazenamento um ponto único de falha (e também um ponto único de contenção de E/S).

O armazenamento local será excluído quando um pod for excluído?

Se você estiver usando armazenamento efêmero para o banco de dados, sim. Se você colocar o banco de dados armazenado em um (não-compartilhado) PV, então não. Usar um PV para armazenamento geralmente é o melhor plano; no caso de uma reinicialização do pod (como ao atualizar versões) que minimiza a quantidade de dados que precisam ser transferidos para ressincronizar a réplica.

informação relacionada