kubectl
.
Visão geral
É possível ativar a alta disponibilidade no cluster de banco de dados direcionando o operador do Kubernetes do AlloyDB Omni para criar réplicas em espera da instância de banco de dados primária. O operador do AlloyDB Omni configura o cluster de banco de dados para atualizar continuamente os dados nessa réplica, correspondendo a todas as mudanças nos dados da instância principal.
Ativar alta disponibilidade
Antes de ativar a alta disponibilidade no cluster de banco de dados, verifique se o cluster do Kubernetes tem o seguinte:
- Armazenamento para duas cópias completas dos seus dados
- Recursos de computação para duas instâncias de banco de dados em execução paralela
Para ativar a alta disponibilidade, siga estas etapas:
Modifique o manifesto do cluster de banco de dados para incluir uma seção
availability
na seçãospec
. Esta seção define o número de substitutos que você quer adicionar definindo o parâmetronumberOfStandbys
.spec: availability: numberOfStandbys: NUMBER_OF_STANDBYS
Substitua
NUMBER_OF_STANDBYS
pelo número de standbys que você quer adicionar. O valor máximo é5
. Se você estiver configurando a alta disponibilidade e não tiver certeza sobre o número de servidores em espera necessários, comece definindo o valor como1
ou2
.Reaplique o manifesto.
Desativar a alta disponibilidade
Para desativar a alta disponibilidade, siga estas etapas:
Defina
numberOfStandbys
como0
no manifesto do cluster:spec: availability: numberOfStandbys: 0
Reaplique o manifesto.
Verificar a alta disponibilidade em um cluster de banco de dados
Para conferir o status atual de alta disponibilidade de um cluster de banco de dados, verifique a condição HAReady
do status desse cluster. Se esse valor tiver um status
definido como True
,
a alta disponibilidade será configurada e funcionará no cluster de banco de dados.
Para verificar esse valor na linha de comando, execute o seguinte comando:
kubectl get dbcluster.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -o jsonpath={.status.conditions[?(@.type == \'HAReady\')]} -n NAMESPACE
Substitua:
DB_CLUSTER_NAME
: o nome do cluster de banco de dados.NAMESPACE
: o namespace do cluster de banco de dados.
Fazer failover para uma instância de espera
Se a instância principal ficar indisponível por um período configurável, o operador do AlloyDB Omni fará failover automático da instância do banco de dados principal para a instância de espera. O tempo padrão para acionar o failover automático é de 90 segundos.
Os failovers são uma boa opção quando você quer se recuperar rapidamente de uma falha inesperada e minimizar o tempo de inatividade, mesmo que isso signifique perder uma pequena quantidade de dados, se o banco de dados principal ficar indisponível antes que o backup seja totalmente atualizado.
O operador do AlloyDB Omni é compatível com failover automático e manual. O failover automático é ativado por padrão.
O failover resulta na seguinte sequência de eventos:
O operador do AlloyDB Omni desativa a instância de banco de dados primária.
O operador do AlloyDB Omni promove a réplica em espera para ser a nova instância de banco de dados principal.
O operador do AlloyDB Omni exclui a instância de banco de dados primário anterior.
O operador do AlloyDB Omni cria uma nova réplica de espera.
Desativar o failover automático
Os failovers automáticos são ativados por padrão nos clusters de banco de dados.
Para desativar um failover, siga estas etapas:
Defina
enableAutoFailover
comofalse
no manifesto do cluster:spec: availability: enableAutoFailover: false
Ajustar as configurações de acionamento de failover automático
É possível usar as configurações para ajustar os failovers automáticos de cada cluster de banco de dados.
O operador do AlloyDB Omni emite verificações de integridade regulares a cada 30 segundos. Se uma instância atingir o limite de acionamento de failover automático, o operador do AlloyDB Omni vai acionar um failover automático.
O valor padrão para o limite de acionamento de failover automático é 3
. O valor do limite é o número de falhas consecutivas na verificação de integridade antes que um failover seja acionado. Para mudar o valor do limite, defina autoFailoverTriggerThreshold
como um número inteiro no manifesto do cluster:
```yaml
spec:
availability:
autoFailoverTriggerThreshold: TRIGGER_THRESHOLD
```
Substitua:
TRIGGER_THRESHOLD
: um valor inteiro para o número de falhas consecutivas na verificação de integridade antes de um failover ser acionado. O valor padrão é3
.
Acionar um failover manual
Para acionar um failover manual, crie e aplique um manifesto para um novo recurso de failover:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: Failover
metadata:
name: FAILOVER_NAME
namespace: NAMESPACE
spec:
dbclusterRef: DB_CLUSTER_NAME
Substitua:
FAILOVER_NAME
: um nome para esse recurso. Por exemplo,failover-1
.NAMESPACE
: o namespace desse recurso de failover, que precisa corresponder ao namespace do cluster de banco de dados a que ele se aplica.DB_CLUSTER_NAME
: o nome do cluster de banco de dados para failover.
Para monitorar o failover, execute o seguinte comando:
kubectl get failover FAILOVER_NAME -o jsonpath={.status.state} -n NAMESPACE
Substitua:
FAILOVER_NAME
: o nome que você atribuiu ao recurso de failover ao criá-lo.NAMESPACE
: o namespace do cluster de banco de dados.
O comando retorna Success
depois que a nova instância de banco de dados principal estiver pronta
para uso. Para monitorar o status da nova instância em espera, consulte a próxima seção.
Failover para uma instância de espera
A alternância é realizada quando você quer testar a configuração de recuperação de desastres ou qualquer outra atividade planejada que exija a troca de papéis do banco de dados principal e da réplica em espera.
Depois que a alternância for concluída, as funções da instância de banco de dados principal e da réplica em espera serão invertidas junto com a direção da replicação. Você precisa optar por alternâncias se quiser ter mais controle sobre o processo de teste da configuração de recuperação de desastres sem perda de dados.
O operador do AlloyDB Omni oferece suporte à troca manual.
A transição resulta na seguinte sequência de eventos:
O operador do AlloyDB Omni desativa a instância de banco de dados primária.
O operador do AlloyDB Omni promove a réplica em espera para ser a nova instância de banco de dados principal.
O operador do AlloyDB Omni muda a instância do banco de dados primário anterior para uma réplica em espera.
Realizar uma troca
Antes de fazer uma alternância, verifique se:
- Verifique se a instância do banco de dados principal e a réplica de espera estão em estado íntegro. Para mais informações, consulte Gerenciar e monitorar o AlloyDB Omni.
- Verifique se o status atual da alta disponibilidade está na condição
HAReady
. Para mais informações, consulte Verificar a alta disponibilidade em um cluster de banco de dados.
Para fazer um failover, crie e aplique um manifesto para um novo recurso de failover:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: Switchover
metadata:
name: SWITCHOVER_NAME
spec:
dbclusterRef: DB_CLUSTER_NAME
newPrimary: STANDBY_REPLICA_NAME
Substitua:
SWITCHOVER_NAME
: um nome para esse recurso de failover. Por exemplo,switchover-1
.DB_CLUSTER_NAME
: o nome da instância de banco de dados principal a que a operação de failover se aplica.STANDBY_REPLICA_NAME
: o nome da instância de banco de dados que você quer promover como nova primária.Para identificar o nome da réplica em espera, execute o seguinte comando:
posix-terminal kubectl get instances.alloydbomni.internal.dbadmin.goog
Usar a réplica em espera como uma instância somente leitura
Para usar uma réplica em espera como uma instância somente leitura, siga estas etapas:
Modifique o manifesto do cluster de banco de dados para definir o parâmetro
enableStandbyAsReadReplica
comotrue
.spec: availability: enableStandbyAsReadReplica: true
Reaplique o manifesto.
Verifique se o endpoint somente leitura está informado no campo
status
do objetoDBCluster
:kubectl describe dbcluster -n NAMESPACE DB_CLUSTER_NAME
O exemplo de resposta a seguir mostra o endpoint da instância somente leitura:
Status: [...] Primary: [...] Endpoints: Name: Read-Write Value: 10.128.0.81:5432 Name: Read-Only Value: 10.128.0.82:5432