
Kubernetes InnoDBCluster: 모든 포드는 하나의 PertantVolumeClaim을 공유해야 합니까?
수행원: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은 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가 있으며, 각 POD에는 자체 PVC가 있고 서로 다른 볼륨에 바인딩되어 있습니다. MySQL 데이터는 하나의 볼륨에 저장되어야 합니다. 모든 POD가 하나의 PVC를 공유해야 합니까?
답변1
3개의 mysql POD가 있으며, 각 POD에는 자체 PVC가 있고 서로 다른 볼륨에 바인딩되어 있습니다. MySQL 데이터는 하나의 볼륨에 저장되어야 합니다. 모든 POD가 하나의 PVC를 공유해야 합니까?
MySQL(및 기타 SQL 데이터베이스)은 공유 스토리지에서 작동하도록 구축되지 않았습니다. 단일 인스턴스 이상을 원하는 경우 각 인스턴스에는 자체 전용 스토리지가 필요합니다. 클러스터 구성에서 각 인스턴스는 특정 형태의 복제를 사용하여 로컬 복사본을 클러스터의 다른 구성원과 함께 최신 상태로 유지합니다.
이것이 일반적으로 원하는 것입니다.~할 수 있었다단일 공유 PV를 사용하면 PV를 잃으면 모든 데이터를 잃게 됩니다. 복제를 사용하면 클러스터의 다른 인스턴스가 기본 역할을 맡을 수 있습니다(또는 읽기/쓰기 복제본이 여러 개인 경우 계속 액세스를 제공할 수 있습니다).
너~할 수 있었다단일 볼륨을 사용한 다음 각 인스턴스에 대해 별도의 디렉터리를 사용합니다. 그러나 앞서 언급한 것처럼 스토리지는 단일 실패 지점(및 단일 I/O 경합 지점)이 됩니다.
포드를 삭제하면 로컬 스토리지도 삭제되나요?
데이터베이스에 임시 스토리지를 사용하는 경우 그렇습니다. (비-공유) PV, 그러면 아니오. 일반적으로 PV를 저장용으로 사용하는 것이 가장 좋은 계획입니다. Pod를 다시 시작하는 경우(예: 버전 업그레이드 시) 복제본을 다시 동기화하기 위해 전송해야 하는 데이터 양을 최소화합니다.