Replicação MySQL após uma queda de VPN: leia primeiro as duas etapas
Um caminho interrompido não é transações perdidas. Leia o recetor e o aplicador em separado e depois verifique o que a origem ainda conserva.
O monitoramento da replicação fica vermelho quando a VPN cai, e o instinto é redefinir uma posição. Esse instinto é como uma interrupção de rede se torna um problema de dados. Um caminho caído não diz nada sobre o que a réplica recebeu ou aplicou, e essas são duas etapas com dois estados. Leia-as em separado antes de mudar qualquer coisa.
Duas etapas, duas respostas separadas
Uma réplica assíncrona convencional faz dois trabalhos. O recetor liga-se à origem, extrai eventos e escreve-os localmente no registo de retransmissão. O aplicador lê esse registo e executa os eventos na réplica. Quando o caminho se rompe, o recetor para imediatamente enquanto o aplicador continua a processar o atraso que já está no disco. Uma interrupção produz, portanto, duas perguntas diferentes: a ligação voltou e o trabalho acumulado foi aplicado? Tratá-las como uma só pergunta faz a média de dois estados numa resposta enganosa.
O recetor recuperar diz-lhe que o caminho está ativo. Não diz nada sobre quanto o aplicador está atrasado, nem se encontrou um erro enquanto estava desligado.
Leia o canal com a instrução correta
No MySQL 8.4, SHOW REPLICA STATUS devolve uma linha por canal configurado, por isso leia a linha do canal que pretende e não a primeira da lista. Replica_IO_Running distingue um recetor ligado de um que está a ligar-se ou parado, e Replica_SQL_Running descreve o aplicador. Leia as colunas de erro ao lado, porque um recetor que se volta a ligar e falha de imediato deixa uma mensagem que nenhuma bandeira de estado mostrará. As versões antigas usam outros nomes de coluna, por isso não traduza uma receita antiga limitando-se a renomear os comandos.
Verifique também a identidade da origem e os filtros configurados. Uma réplica apontada à origem errada, ou filtrada mais estreitamente do que pensa, informa saúde enquanto replica algo diferente do que espera.
Porque é que um zero de atraso pode mentir
O valor de atraso compara a marca temporal do último evento aplicado com a hora atual. Quando o recetor esteve parado durante uma hora, o aplicador pode processar o atraso e chegar ao fim do que recebeu, e então o número cai para zero embora a réplica esteja uma hora atrás da origem. A métrica mede a fila do aplicador, não a atualidade da réplica.
Compare, em vez disso, as transações executadas com o que a origem tem disponível. Essa comparação sobrevive a um recetor bloqueado.
A retenção define a verdadeira janela de recuperação
Alcançar exige que a origem ainda guarde as transações de que a réplica precisa. Uma vez expurgadas, a réplica não as consegue obter, e nenhuma quantidade de reconexões muda isso.
Com o autoposicionamento GTID, a falha é explícita: a réplica pede um histórico que a origem já não guarda e recusa continuar. As opções são então obter os eventos em falta de uma origem que ainda os tem, ou reconstruir a partir de uma cópia de segurança e deixá-la alcançar. Saltar a lacuna não é alcançar, e deixa uma réplica cujos dados estão silenciosamente incompletos. Planeie a janela comparando a duração esperada da interrupção com a retenção do registo binário na origem e o ritmo de mudança, porque esses três números decidem se uma interrupção é sequer recuperável.
Verifique o alcance, não a cor de um indicador
Restaure o caminho, incluindo a resolução de nomes e a segurança do transporte, e depois observe se o canal existente se volta a ligar segundo a sua própria política. Dê-lhe um intervalo definido antes de intervir e registe o progresso de receção e aplicação nas duas extremidades desse intervalo. Um canal que reinicia e um canal que está atual são constatações diferentes.
Confirme que o aplicador alcançou a posição atual da origem, e não apenas o fim do atraso antigo. Verifique que nenhum erro espera no aplicador, porque um único evento falhado trava o progresso enquanto o recetor continua a reportar ligação. Depois registe as provas: nome do canal, os dois estados de etapa, a posição executada e a hora. Um indicador verde é uma afirmação; a posição é um facto.