Por padrão, instâncias Tair (Enterprise Edition) utilizam replicação assíncrona. Alterne para o modo semissíncrono para atingir um Recovery Point Objective (RPO) de 0 durante switchovers entre nó primário e réplica — em troca de maior latência de escrita (tipicamente de centenas de microssegundos a alguns milissegundos).
Pré-requisitos
Antes de começar, verifique se:
Para instâncias baseadas em DRAM: a instância é compatível com Redis 6.0 ou superior e executa a versão secundária 24.8.0.0 ou superior
Para instâncias baseadas em ESSD/SSD: a instância executa a versão secundária 2.5.2 ou superior
Instâncias em versões secundárias anteriores não oferecem suporte à alteração do modo de sincronização. Para atualize, consulte Upgrade minor and proxy versions.
Como funciona
O Redis de código aberto utiliza replicação assíncrona: o nó primário responde ao cliente imediatamente após processar uma requisição e, em seguida, sincroniza os dados com o nó réplica em segundo plano. Se um switchover entre nó primário e réplica ocorrer antes de a réplica se atualizar, pode haver inconsistência de dados.
No modo semissíncrono, o nó primário aguarda a confirmação de recebimento dos logs replicados pelo nó réplica antes de responder ao cliente. Isso garante RPO = 0 — nenhum dado é perdido durante um switchover.
O diagrama a seguir ilustra o funcionamento de ambos os modos.
Quando RPO = 0 não é garantido
O modo semissíncrono regride automaticamente para replicação assíncrona quando:
O nó réplica fica indisponível; ou
A latência de replicação entre o nó primário e o nó réplica ultrapassa o Degradation Threshold
Durante a regressão, a garantia de RPO é perdida. Se um switchover entre nó primário e réplica ocorrer enquanto a instância estiver em estado regredido (assíncrono), os dados gravados após o início da regressão poderão ser perdidos. Por exemplo:
O nó réplica fica lento. A latência de replicação ultrapassa o Degradation Threshold.
A instância regride automaticamente para replicação assíncrona. O RPO = 0 deixa de ser garantido.
Um switchover entre nó primário e réplica é acionado (por exemplo, devido a uma falha no nó primário).
As gravações que a réplica ainda não havia recebido são perdidas.
Para reduzir esse risco, defina o Degradation Threshold com um valor compatível com sua tolerância a latência. Um limiar mais baixo aciona a regressão mais cedo, mas também faz com que a instância regride com mais facilidade diante de condições de rede transitórias.
Alterar o modo de sincronização
Acesse o console e vá para a página Instances. Selecione a região onde a instância está localizada, localize a instância e clique em o ID dela.
No canto superior direito da seção Basic Information, clique em Change Synchronization Mode.
-
No painel exibido, configure os seguintes parâmetros.
Parâmetro
Descrição
Synchronization Mode
Padrão: Asynchronous. Defina como Semi-Synchronous para ative a replicação síncrona de logs. No modo semissíncrono, o nó primário responde ao cliente somente após o nó réplica confirmar o recebimento dos logs. Se o nó réplica estiver indisponível ou a comunicação entre os nós estiver anormal, o modo regride automaticamente para replicação assíncrona.
Degradation Threshold
Disponível somente quando Synchronization Mode está definido como Semi-Synchronous. Unidade: ms. Valores válidos: 10–60000. Padrão: 500. Quando a latência de replicação entre o nó primário e a réplica ultrapassar esse limiar, o modo de sincronização muda automaticamente para Asynchronous. Quando a latência cair abaixo do limiar novamente, o modo retorna para Semi-Synchronous.
Clique em OK.
Precauções
Ao ative ou desativar a replicação semissíncrona em uma instância otimizada para memória persistente, a replicação completa dos dados é acionada entre o nó primário e o nó réplica. Recomendamos realizar essa operação durante períodos de baixo tráfego.