Replicação mestre-escravo Redis da entrada ao princípio

Índice

1. O que é Redis

2. Replicação mestre-escravo Redis

1. O que é replicação mestre-escravo?

2. O papel da replicação mestre-escravo

3. Princípio do fluxo de trabalho da replicação mestre-escravo

3.1. Etapa de estabelecimento do link

3.2. Estágio de sincronização de dados

 3.3. Estágio de propagação de comando

3. Perguntas frequentes sobre replicação mestre-escravo

1. Cópia completa frequente

2. Interrupções frequentes de rede

3. Os dados são inconsistentes


1. O que é Redis

Redis é um dos bancos de dados NoSQL mais populares da atualidade. Redis é um código aberto, escrito em ANSI C, contém uma variedade de estruturas de dados, suporta banco de dados de armazenamento de pares de valores-chave de persistência opcional baseado em rede e baseado em memória. Possui as seguintes características. :

  • Funciona com base na memória e tem desempenho eficiente
  • Suporta distribuição e pode, teoricamente, ser expandido infinitamente
  • sistema de armazenamento de valores-chave
  • O código aberto é escrito em linguagem ANSI C, está em conformidade com o protocolo BSD, suporta a rede, pode ser do tipo log persistente e baseado em memória, banco de dados de valores-chave e fornece APIs em vários idiomas.

OK! Vamos falar brevemente sobre o que é Redis, que é NoSQL para armazenamento de dados. Geralmente é usado para armazenamento em cache. Este artigo também é uma compreensão adicional da camada subjacente do Redis baseada em Redis!

2. Replicação mestre-escravo Redis

Desenho simples para fácil compreensão

Configuração multiservidor: um servidor mestre apenas grava dados e os sincroniza com outros servidores escravos. O problema é a sincronização de dados  . Portanto, usamos a replicação mestre-escravo para resolver o problema de sincronização de dados.

1. O que é replicação mestre-escravo?

A replicação mestre-escravo consiste em copiar os dados do mestre para o escravo de forma imediata e eficaz . Isso é chamado de replicação mestre-escravo!

Características: Um mestre pode ter vários escravos, e um escravo corresponde apenas a um mestre.

Responsabilidades:

  • mestre
    • gravar dados
    • Ao realizar uma operação de gravação, os dados alterados são automaticamente sincronizados com o escravo.
    • Ler dados (geralmente apenas operações de gravação são executadas e a leitura é feita pelo servidor escravo)        
  • pomada
    • Ler dados
    • Proibido escrever

2. O papel da replicação mestre-escravo

Separação de leitura e escrita: escritas mestre, leituras escravas, melhorando a capacidade de carga de leitura e gravação do servidor

Balanceamento de carga: baseado na estrutura mestre-escravo, combinado com a separação de leitura e gravação, o escravo compartilha a carga mestre e altera o número de escravos de acordo com as mudanças na demanda e compartilha a carga de leitura de dados através de vários nós escravos, melhorando muito a simultaneidade e a taxa de transferência do servidor Redis.

Recuperação de falhas: Quando ocorre um problema no mestre, o escravo fornece serviços para obter uma recuperação rápida de falhas.

Redundância de dados: implementar backup de dados dinâmico é um método de redundância de dados além da persistência.

Base de alta disponibilidade: com base na replicação mestre-escravo, crie modo sentinela e cluster para implementar a solução de alta disponibilidade Redis.

3. Princípio do fluxo de trabalho da replicação mestre-escravo

Deixe-me dar uma visão geral primeiro. Eu divido o princípio de replicação mestre-escravo em dois estágios. O princípio de funcionamento é dividido em: estágio de estabelecimento de conexão , estágio de sincronização de dados e estágio de propagação de comando .

3.1. Etapa de estabelecimento do link

O servidor escravo envia o endereço IP e o número da porta do mestre , e o mestre recebe e responde de volta. Após receber a resposta, o escravo salva o IP e o número da porta do mestre, estabelece um canal de estoque com base nas informações salvas e inicia o ping periódico, e o mestre também responderá com pong. Finalmente, o escravo envia seu próprio número de porta ao mestre, e o mestre salva o número da porta do escravo.

 Passo 1: O escravo define o endereço e a porta do mestre e salva as informações do mestre.

Etapa 2: escravo estabelece conexão de soquete

Etapa 3: escravo envia comando ping (tarefa de timer)

Etapa 4: Autenticação (como o redis é usado internamente pelo servidor e não é fornecido ao mundo externo, ele não está definido)

Etapa 5: Mestre salva informações da porta escrava

3.2. Estágio de sincronização de dados

Quando o servidor mestre ativar o AOF ou se tornar o servidor mestre, um buffer de replicação será criado.

① Quando o escravo envia uma solicitação psync2 pela primeira vez, ele carregará dois dados psync2 ? -1(psync2 <runid> <offset>), o que significa que ele precisa ser copiado por completo pela primeira vez. ②O mestre executa bgsave para gerar um arquivo RDB e registra o deslocamento de cópia atual. ③Ao receber a instrução, ele enviará +fullresync seu próprio deslocamento uid. Ao enviar o arquivo RDB para o escravo através do stocket, o comando do cliente é aceito, e o deslocamento muda. ④O escravo recebe a sincronização completa, salva o uid e o deslocamento (deslocamento) do mestre, limpa todos os dados atuais, aceita o arquivo RDB por meio do estoque e restaura os dados RDB.

O acima é uma cópia completa

⑤Enviar comando: deslocamento masterid psync2. ⑥Aceite o comando, determine se o id corresponde e se o deslocamento está no buffer de cópia.

⑦ Se um dos masterid ou offset não for satisfeito, será feita uma cópia completa. Se os enviados forem iguais aos do master, eles serão omitidos. Se o masterid ou offset for satisfeito, mas o offset for inconsistente com o deslocamento salvo no mestre, o deslocamento contínuo será enviado e passado. O soquete envia os dados do deslocamento no mestre no buffer de cópia para o deslocamento mestre transferido. ⑧O escravo recebe +concatiue e salva o deslocamento do mestre. Após receber a mensagem, execute bgrewriteaof para restaurar os dados.

Cópia incremental acima

 3.3. Estágio de propagação de comando

 Envie o comando replconf ack offset durante a fase de propagação do comando

3. Perguntas frequentes sobre replicação mestre-escravo

1. Cópia completa frequente

Sintomas do problema:

        O ambiente de rede não é bom, há interrupção da rede e o escravo não fornece serviços.

causas do problema:

        O buffer de cópia é muito pequeno. Depois que a rede é desconectada, o deslocamento do escravo sai dos limites, acionando a cópia completa.

Resultados finais:

        O escravo executa repetidamente a replicação completa

resolver:

        Modificar o tamanho do buffer de cópia

repl-backlog-size

2. Interrupções frequentes de rede

Fenômeno:

        A conexão entre salve e master está desconectada

razão:

        O mestre envia comandos ping com menos frequência

        O mestre define um curto tempo limite

        O comando ping causa perda de pacotes na rede

resolver:

        Aumente a frequência de envio de comandos ping

repl-ping-slave-period

O tempo limite de resposta deve ser pelo menos 5 a 10 vezes a frequência do comando ping, caso contrário, o escravo atingirá facilmente o tempo limite.

3. Os dados são inconsistentes

Fenômeno:

        Vários escravos obtêm os mesmos dados sem sincronização

razão:

        As informações da rede estão fora de sincronia e há um atraso no envio de dados.

plano:

       1. Otimize o ambiente de rede mestre e escravo, geralmente implantado na mesma sala de computadores, como Alibaba Cloud, etc.

        2. Monitore o atraso no estágio mestre-escravo (via offset) Se o atraso do escravo for muito grande, bloqueie temporariamente o acesso de dados do programa ao escravo.

slave-serve-stale-data yes|no

 Após a abertura, ele responde apenas a alguns comandos, como info e slaveof (use com cuidado, a menos que os requisitos de consistência de dados sejam altos)

Acho que você gosta

Origin blog.csdn.net/wang20000102/article/details/132516446
Recomendado
Clasificación