Esta página descreve como fazer uma atualização da versão secundária da base de dados para o AlloyDB Omni no Kubernetes.
Para fazer uma atualização da versão secundária da base de dados, existem duas opções:
Atualização com pouco tempo de inatividade: para ambientes de alta disponibilidade (HA) com a versão 15.7.1 ou posterior do AlloyDB Omni, o AlloyDB Omni atualiza primeiro as instâncias em espera. Em seguida, o operador do AlloyDB Omni executa uma comutação, promovendo uma das instâncias de standby atualizadas para ser a sua nova instância principal. Após a mudança bem-sucedida, a sua instância principal antiga é atualizada.
Este processo garante um tempo de inatividade mínimo durante a atualização.
Atualização simultânea: em todas as outras circunstâncias, o operador do AlloyDB Omni atualiza todas as instâncias em simultâneo. Isto significa que vai ter um período de inatividade durante a atualização.
Limitações
Para atualizações com pouco tempo de inatividade, uma instância de espera está indisponível em qualquer altura. Para garantir que o cluster da base de dados não atinge o objetivo de ponto de recuperação (RPO) zero e não corre o risco de perder dados, o cluster da base de dados tem de ter uma instância principal e, pelo menos, duas instâncias de reserva.
Antes de começar
- Se o seu cluster for de HA e a versão do AlloyDB Omni for anterior a 15.7.1, siga os passos indicados em Atualize os clusters de base de dados antes de seguir este processo de atualização da versão secundária.
- Identifique um período de tráfego reduzido em que possa fazer a atualização da versão secundária.
- Para evitar a perda de dados, faça uma cópia de segurança dos seus dados.
Ative o processo de atualização da versão da base de dados secundária com tempo de inatividade reduzido
Para ativar o processo de atualização da versão secundária da base de dados com tempo de inatividade reduzido, adicione a seguinte anotação ao cluster da base de dados.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME dbcluster.dbadmin.goog/enableLDTM=true
Substitua a seguinte variável:
DB_CLUSTER_NAME
: o nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que indicou quando o criou. Para mais informações, consulte o artigo Instale o AlloyDB Omni no Kubernetes.
Atualize a versão do AlloyDB Omni
Para atualizar a versão 16.8.0, atualize os campos
databaseVersion
e controlPlaneAgentsVersion
no ficheiro do manifesto do cluster e, em seguida, volte a aplicar o ficheiro.
Segue-se o início de um ficheiro de manifesto que especifica a versão 16.8.0 para databaseVersion
e a versão 1.5.0 para controlPlaneAgentsVersion
:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: DB_CLUSTER_NAME
spec:
databaseVersion: "16.8.0"
controlPlaneAgentsVersion: "1.5.0"
...
Substitua a seguinte variável:
DB_CLUSTER_NAME
: o nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que indicou quando o criou. Para mais informações, consulte o artigo Instale o AlloyDB Omni no Kubernetes.
Monitorize o processo de atualização
Depois de atualizar o ficheiro de manifesto, o operador do AlloyDB Omni inicia o processo de atualização. Para monitorizar o processo de atualização, verifique a condição DBCUpgradeInProgress
.
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -o yaml | yq '.status.conditions[] | select(.type == "DBCUpgradeInProgress")'
Substitua a seguinte variável:
DB_CLUSTER_NAME
: o nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que indicou quando o criou. Para mais informações, consulte o artigo Instale o AlloyDB Omni no Kubernetes.
Enquanto o processo está em curso, o estado é true
. Quando o processo estiver concluído, o estado da condição é alterado para false
.
Resolução de problemas
Se receber mensagens de falha durante o processo de atualização, consulte as secções seguintes:
Falhas pré-atualização
Se receber uma falha de pré-atualização no cluster da base de dados, verifique a mensagem e resolva o problema em conformidade.
Se quiser ignorar a mensagem de falha da pré-atualização, pode ativar a anotação force-upgrade
.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/force-upgrade=true
Substitua a seguinte variável:
DB_CLUSTER_NAME
: o nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que indicou quando o criou. Para mais informações, consulte o artigo Instale o AlloyDB Omni no Kubernetes.
Após a conclusão do processo de atualização, defina a anotação force-upgrade
como
false
.
Falhas na atualização
Durante o processo de atualização automática, existem vários pontos em que pode falhar em ambientes de HA. Para mais informações sobre cada cenário de falha e as ações subsequentes que o operador do AlloyDB Omni realiza, consulte a tabela seguinte.
Mensagem de falha | Descrição | Ações necessárias do utilizador |
---|---|---|
standby instance upgrade succeeded but the replication lag of the standby(s) is too high to be promoted to synchronous standby(s)
|
O processo de atualização foi bem-sucedido, mas a instância de espera não alcançou a instância principal para estabelecer a replicação síncrona.
Uma grande quantidade de tráfego é direcionada para a instância principal. À medida que o tráfego diminui, a instância de espera atualiza-se gradualmente. Depois de isto acontecer, a condição |
Escolha uma opção em Corrija instâncias primárias e de espera com versões secundárias diferentes . |
all standbys upgrade succeeded but the switchover instance failed
to promote an upgraded standby.
|
As suas instâncias de espera foram atualizadas com êxito, mas o processo de comutação falhou. |
|
standby instance upgrade failed but rollback succeeded.
|
A sua instância de espera não foi atualizada com êxito, mas o operador do AlloyDB Omni restaurou-a com êxito para a versão anterior. |
|
standby instance upgrade failed and rollback failed.
|
A sua instância de espera não foi atualizada com êxito e o operador do AlloyDB Omni não consegue restaurar a instância para a versão anterior. |
Contacte o Apoio técnico da Google para resolver problemas. |
Corrija instâncias primárias e de reserva com versões secundárias diferentes
Para resolver este problema, escolha uma das seguintes opções:
Se o problema que causou a falha da atualização for corrigido, tente novamente a atualização.
Para repetir a atualização, remova a anotação
start-time
da atualização da sua instância. Depois de remover a anotação, o operador do AlloyDB Omni gera uma nova hora de início e reinicia o processo de atualização.kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/start-time-
Substitua a seguinte variável:
DB_CLUSTER_NAME
: o nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que indicou quando o criou. Para mais informações, consulte o artigo Instale o AlloyDB Omni no Kubernetes.
Se o problema que causou a falha na atualização persistir, faça o downgrade da instância para a versão anterior do operador do AlloyDB Omni.
Para reverter a sua instância, siga o processo de atualização e altere os campos
databaseVersion
econtrolPlaneAgentsVersion
no ficheiro de manifesto para a versão que usou anteriormente.