Esta página descreve como realizar um upgrade de versão secundária do banco de dados para o AlloyDB Omni no Kubernetes.
Para realizar um upgrade de versão secundária do banco de dados, há duas opções:
Upgrade com pouco tempo de inatividade: esse recurso está em pré-lançamento. Para ambientes de alta disponibilidade (HA, na sigla em inglês) que executam o AlloyDB Omni versão 15.7.1 ou mais recente, o AlloyDB Omni faz upgrade das instâncias em espera primeiro. Em seguida, o operador do AlloyDB Omni realiza uma alternância, promovendo uma das instâncias em espera atualizadas para ser a nova instância principal. Depois que a alternância é bem-sucedida, a instância principal antiga é atualizada.
Esse processo garante o mínimo de inatividade durante o upgrade.
Upgrade simultâneo: o método de upgrade simultâneo está disponível para todos os usuários (GA). Em todas as outras circunstâncias, o operador do AlloyDB Omni faz upgrade de todas as instâncias simultaneamente. Isso significa que você terá tempo de inatividade durante o upgrade.
Limitações
Para upgrades com pouco tempo de inatividade, uma instância em espera fica indisponível a qualquer momento. Para garantir que o cluster de banco de dados não atinja o objetivo de ponto de recuperação (RPO) zero e não corra o risco de perder dados, ele precisa ter uma instância principal e pelo menos duas instâncias em espera.
Antes de começar
- Se o cluster for de HA e a versão do AlloyDB Omni for anterior à 15.7.1, siga as etapas listadas em Atualizar os clusters de banco de dados antes de seguir este processo de upgrade de versão secundária.
- Identifique um período de pouco tráfego em que você possa realizar o upgrade da versão secundária.
- Para evitar a perda de dados, faça backup dos seus dados.
Ativar o processo de upgrade de versão secundária do banco de dados com pouco tempo de inatividade
Para ativar o processo de upgrade de versão secundária do banco de dados com pouco tempo de inatividade, adicione a seguinte anotação ao cluster de banco 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 de banco de dados. É o mesmo nome de cluster de banco de dados que você forneceu ao criá-lo. Para mais informações, consulte Instalar o AlloyDB Omni no Kubernetes.
Fazer upgrade da versão do AlloyDB Omni
Para fazer upgrade da versão 15.13.0, atualize os campos databaseVersion e controlPlaneAgentsVersion no arquivo de manifesto do cluster e reaplique o arquivo.
A seguir, o início de um arquivo de manifesto que especifica a versão 15.13.0 para databaseVersion e a versão 1.6.3 para controlPlaneAgentsVersion:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: DB_CLUSTER_NAME
spec:
databaseVersion: "DB_VERSION"
controlPlaneAgentsVersion: "CONTROL_PLANE_AGENTS_VERSION"
# It is recommended to switch to UBI9 for improved security and
# compatibility.
# If you need to stick to Debian, set this field to "Debian".
databaseImageOSType: "OS_TYPE"
...
Substitua a seguinte variável:
DB_CLUSTER_NAME: o nome do cluster de banco de dados. É o mesmo nome de cluster de banco de dados que você forneceu ao criá-lo. Para mais informações, consulte Instalar o AlloyDB Omni no Kubernetes.DB_VERSION: a versão do banco de dados para a qual você está fazendo upgrade.CONTROL_PLANE_AGENTS_VERSION: a versão dos agentes do plano de controle.OS_TYPE: opcional. O sistema operacional de base para a imagem do banco de dados. Os valores válidos sãoDebianeUBI9. Se você não especificar isso, o operador vai defini-lo automaticamente comoDebiansedatabaseVersionfor menor que16.9.0e comoUBI9sedatabaseVersionfor16.9.0ou mais recente.
Monitorar o processo de upgrade
Depois de atualizar o arquivo de manifesto, o operador do AlloyDB Omni inicia o processo de upgrade. Para monitorar o processo de upgrade, 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 de banco de dados. É o mesmo nome de cluster de banco de dados que você forneceu ao criá-lo. Para mais informações, consulte Instalar o AlloyDB Omni no Kubernetes.
Enquanto o processo estiver em andamento, o status será true. Quando o processo for concluído, o status da condição mudará para false.
Solução de problemas
Se você receber mensagens de falha durante o processo de upgrade, consulte as seções a seguir:
Falhas pré-upgrade
Se você receber uma falha pré-upgrade no cluster de banco de dados, verifique a mensagem e resolva o problema de acordo.
Se você quiser ignorar a mensagem de falha pré-upgrade, ative 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 de banco de dados. É o mesmo nome de cluster de banco de dados que você forneceu ao criá-lo. Para mais informações, consulte Instalar o AlloyDB Omni no Kubernetes.
Depois que o processo de upgrade for concluído, defina a anotação force-upgrade como false.
Falhas no upgrade
Durante o processo de upgrade automático, há vários pontos em que ele pode falhar em ambientes de HA. Para mais informações sobre cada cenário de falha e quais ações subsequentes o operador do AlloyDB Omni realiza, consulte a tabela a seguir.
| Mensagem de falha | Descrição | Ações necessárias do usuário |
|---|---|---|
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 upgrade foi bem-sucedido, mas a instância em espera não alcançou a instância principal para estabelecer a replicação síncrona.
Uma grande quantidade de tráfego vai para a instância principal. À medida que o tráfego
diminui, a instância em espera alcança gradualmente. Depois que isso
acontece, a condição |
Escolha uma opção em Corrigir instâncias principais e em espera com versões secundárias diferentes . |
all standbys upgrade succeeded but the switchover instance failed
to promote an upgraded standby.
|
As instâncias em espera foram atualizadas, mas o processo de alternância falhou. |
|
standby instance upgrade failed but rollback succeeded.
|
A instância em espera não foi atualizada, mas o operador do AlloyDB Omni a restaurou para a versão anterior com sucesso. |
|
standby instance upgrade failed and rollback failed.
|
A instância em espera não foi atualizada e o operador do AlloyDB Omni não pode restaurar a instância para a versão anterior. |
Entre em contato com o Suporte do Google para resolver o problema. |
Corrigir instâncias principais e em espera com versões secundárias diferentes
Para resolver esse problema, escolha uma destas opções:
Se o problema que causou a falha de upgrade for corrigido, tente novamente.
Para tentar novamente, remova a anotação
start-timedo upgrade da instância. Depois de remover a anotação, o operador do AlloyDB Omni gera um novo horário de início e reinicia o processo de upgrade.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 de banco de dados. É o mesmo nome de cluster de banco de dados que você forneceu ao criá-lo. Para mais informações, consulte Instalar o AlloyDB Omni no Kubernetes.
Se o problema que causou a falha de upgrade persistir, faça o downgrade da instância para a versão anterior do operador do AlloyDB Omni.
Para fazer downgrade da instância, siga o processo de upgrade e mude os campos
databaseVersion,controlPlaneAgentsVersionedatabaseImageOSTypeno arquivo de manifesto para a versão usada anteriormente.