Se a sua base de dados for executada num cluster do Kubernetes, pode colocar a base de dados em modo de manutenção desativando as sondas de atividade e as sondas de arranque, que são executadas na sua aplicação em contentor, para garantir que o pod da base de dados está em bom estado. O modo de manutenção ajuda a colocar um pod num estado de execução quando precisa de fazer uma atualização de manutenção ou reparar o pod.
Ative o modo de manutenção
Verifique se existem sondas num pod de base de dados:
Sonda de atividade:
kubectl get po -n NAMESPACE DATABASE_POD_NAME -o jsonpath='{.spec.containers[?(@.name=="database")].livenessProbe}'Substitua o seguinte:
NAMESPACE: o nome de um espaço de nomes usado para executar a sua base de dados, por exemplo,db.DATABASE_POD_NAME: o nome do pod da base de dados, por exemplo,al-4017-dbcluster-sample-0.
Segue-se um exemplo de saída com uma sondagem de atividade:
{"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}Sonda de arranque:
kubectl get po -n NAMESPACE DATABASE_POD_NAME -o jsonpath='{.spec.containers[?(@.name=="database")].startupProbe}'O exemplo seguinte mostra a saída de exemplo com uma sondagem de arranque:
{"exec":{"command":["/usr/lib/postgresql/15/bin/psql","-hlocalhost","-Ualloydbadmin","-c","SELECT 1"]},"failureThreshold":180,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}
Defina
modecomomaintenancena secçãospecdo manifesto DBCluster:apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME namespace: NAMESPACE spec: allowExternalIncomingTraffic: false isDeleted: false mode: maintenance primarySpec: ...Substitua
DB_CLUSTER_NAMEpelo nome deste cluster de base de dados, por exemplo,my-db-cluster.Aplique o manifesto:
kubectl apply -f DB_CLUSTER_YAMLSubstitua
DB_CLUSTER_YAMLpelo nome deste ficheiro de manifesto do cluster da base de dados, por exemplo,alloydb-omni-db-cluster.yaml.Para verificar se o modo de manutenção está ativado, execute os seguintes comandos:
Sonda de atividade:
kubectl get po -n NAMESPACE DATABASE_POD_NAME -o jsonpath='{.spec.containers[?(@.name=="database")].livenessProbe}'Sonda de arranque:
kubectl get po -n NAMESPACE DATABASE_POD_NAME -o jsonpath='{.spec.containers[?(@.name=="database")].startupProbe}'
O resultado não contém os campos
LivenesseStartupna secçãospecdo seu podPOD_NAME.
Desative o modo de manutenção
Para regressar ao comportamento padrão do cluster da base de dados com sondagens de vitalidade e de arranque em execução, use o seguinte comando para remover maintenance da secção spec do manifesto DBCluster:
kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"mode":""}}' --type=merge -n DB_CLUSTER_NAMESPACE --type=mergeExemplos de resultados:
Com uma análise de vitalidade:
{"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}Com uma sonda de arranque:
{"exec":{"command":["/usr/lib/postgresql/15/bin/psql","-hlocalhost","-Ualloydbadmin","-c","SELECT 1"]},"failureThreshold":180, "periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}