Replicação e otimização mestre-escravo Redis

Introdução: Replicação e otimização mestre-escravo do Redis

Replicação e otimização mestre-escravo Redis

Insira a descrição da imagem aqui

Replicação mestre-escravo

Antes de prestarmos atenção à replicação mestre-escravo, devemos primeiro considerar o que há de errado com uma única máquina.

  • Mau funcionamento da máquina
  • Gargalo de capacidade
  • Gargalo QPS

Estes são os problemas encontrados por um único nó, portanto, desta vez, há uma replicação mestre-escravo (um mestre e um escravo, um mestre e vários escravos)

Insira a descrição da imagem aqui

Use a replicação mestre-escravo para:

  • Cópia de dados
  • Desempenho de leitura estendido

Nota:

  • Um mestre pode ter vários escravos
  • Um escravo tem apenas um mestre
  • O fluxo de dados é unilateral, de mestre para escravo

Configuração de replicação mestre-escravo

Duas maneiras de alcançar

  • escravo de comando

Duas máquinas: nó mestre: 47.11.11.11 nó escravo 47.22.22.22

Execute o comando slaveof no nó escravo

47.22.22.22-6379 > slacefof 47.11.11.11 6379
OK

Cancelar cópia:

47.22.22.22-6379 > slacefof no one
OK
  • Alterar configuração
slaveof ip  port    //从节点ip + 端口
slave-read-only yes //开启只做读的操作
  • Comparação de duas maneiras

Insira a descrição da imagem aqui

  • Ver mestre e escravo
127.0.0.1:6379> info replication
# Replication
role:master   //主节点 
connected_slaves:0
master_replid:1d43401335a5343b27b1638fc9843e3a593fc1a7
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

Pontos de conhecimento:

  • Nó principal runID:

Depois que cada nó redis é iniciado, uma string hexadecimal de 40 dígitos é alocada dinamicamente como o ID em execução. A principal função do ID em execução é identificar exclusivamente o nó redis. Por exemplo, o nó escravo salva o ID em execução do nó mestre para identificar qual nó mestre está replicando. Se apenas o método ip + port for usado para identificar o nó mestre, então o nó mestre reinicia e altera o conjunto de dados geral (como substituir o arquivo RDB / AOF), e não é seguro para o nó escravo copiar dados com base no deslocamento, portanto, quando o ID em execução muda Em seguida, o nó escravo fará a replicação completa. Você pode ver o ID de execução do nó atual no comando do servidor de informações.

Deve-se observar que quando o redis é fechado e reiniciado, o id de execução será alterado de acordo.


Cópia completa e cópia parcial, etc.

Cópia completa

Usado para replicação inicial ou outras situações em que a replicação parcial não pode ser executada, para enviar todos os dados do nó mestre para o nó escravo. Quando a quantidade de dados é muito grande, isso causa muita sobrecarga na rede.

redis2.8 + processo de cópia completa

Insira a descrição da imagem aqui

Custo:

  1. bgsave tempo
  2. Transmissão de rede de arquivos RDB
  3. Hora de limpar os dados do nó
  4. Tempo de carga RDB do nó
  5. Possível tempo de reescrita AOF

Cópia parcial

Usado para lidar com cenários de perda de dados causados ​​por falhas de rede na replicação mestre-escravo. Quando o nó escravo se conectar ao nó mestre novamente, se as condições permitirem, o nó mestre reenviará os dados perdidos para o nó escravo porque os dados reemitidos estão longe Menos do que a quantidade total de dados pode efetivamente evitar a sobrecarga excessiva da cópia completa. No entanto, deve-se observar que se o tempo de interrupção da rede for muito longo e o nó mestre não puder salvar completamente os comandos de gravação executados durante a interrupção, a replicação parcial não pode ser executada e a replicação completa ainda é usada.

Processo:
Insira a descrição da imagem aqui

Deslocamento de cópia:

  • Os nós mestre e escravo que participam da replicação manterão seu próprio deslocamento de replicação. Após o nó mestre processar a operação do comando de gravação, ele acumulará o comprimento de byte do comando. As informações estatísticas estão no indicador master_repl_offset na replicação de informações.
  • O nó escravo relata seu deslocamento de replicação para o nó mestre a cada segundo, então o nó mestre também salvará o deslocamento de replicação do nó escravo escravo0: ip = 192.168.1.3, porta = 6379, estado = online, deslocamento = 116424, atraso = 0
  • Depois que o nó escravo recebe o comando enviado pelo nó mestre, ele também acumula e registra seu próprio deslocamento. As estatísticas estão em slave_repl_offset na replicação de informações.

Copie o buffer de backlog:

  • O buffer de backlog de cópia é uma fila de comprimento fixo armazenada no nó mestre, com um tamanho padrão de 1 MB. É criada quando o nó mestre tem um nó escravo conectado. Nesse momento, quando o nó mestre responder a um comando de gravação, ele não enviará o comando apenas para o nó escravo , E escrever no buffer de backlog de cópia.
    Na fase de propagação do comando, além de enviar o comando de gravação para o nó escravo, o nó mestre também enviará uma cópia para o buffer de backlog de cópia como um backup do comando de gravação; além de armazenar o comando de gravação, o buffer de backlog de cópia também armazena cada um deles O deslocamento da cópia correspondente ao byte (deslocamento). Como o buffer de backlog de cópia tem um comprimento fixo e o primeiro a entrar, primeiro a sair, ele salva os comandos de gravação executados recentemente pelo nó mestre; os comandos de gravação mais antigos serão empurrados para fora do buffer.

Problemas comuns na produção

Separação de leitura e gravação

Shunt para o nó escravo. O nó mestre grava dados e o nó escravo lê os dados, pode encontrar problemas de leitura

  1. Atraso na replicação de dados
  2. Ler dados expirados
  3. Falha do nó escravo
Configuração mestre-escravo inconsistente
  1. Por exemplo, memória máxima inconsistente causará perda de dados
  2. Por exemplo, parâmetros de otimização de estrutura de dados (como entradas hash-max-ziplist): a memória é inconsistente
Evite a cópia completa
  1. Ao copiar totalmente pela primeira vez
      - a primeira vez é inevitável, tente manter os nós tão pequenos quanto possível e lidar com o pico baixo
  2. O ID de execução do nó não corresponde a
      -failover, como sentinela ou cluster
  3. Área de buffer de backlog de cópia insuficiente -
      aumentar a configuração da área de buffer de cópia rel_backlog_size, aprimoramento de rede
Evite a tempestade de replicação
  1. Tempestade de replicação de máquina única (redis <4.0 Quando o mestre é desativado e reiniciado, fará com que todos os escravos sob a máquina se replicem ao mesmo tempo. Evite implantar um conjunto de redis mestre-escravo em uma única máquina) ====》 O nó mestre está espalhado por várias máquinas

Notas finais:

  • Na implementação do processo acima, se a persistência de AOF não for ativada na biblioteca, se a persistência de AOF da biblioteca estiver ativada, a replicação completa ainda será usada ao reiniciar.
  • Os dados copiados do mestre não serão perdidos, mas os dados gravados pelo mestre anterior (nó 6379 na figura acima) não serão mais sincronizados.
  • O Slaveof pode ser usado para alterar o nó mestre a que pertence, ou seja, para se tornar escravo de outro mestre novamente, mas o novo mestre primeiro limpará todos os dados do nó escravo
  • Com relação ao atraso de separação de leitura e gravação: Separação de leitura e gravação, o mestre irá copiar os dados para o escravo em uma etapa.Se o escravo for bloqueado, o comando de gravação dos dados do mestre será atrasado, causando inconsistência de dados. ------- Geralmente não considere este problema
  • Ler dados expirados: o Redis tem duas estratégias ao excluir chaves. Uma é a estratégia preguiçosa, ou seja, a chave é excluída apenas quando o redis opera a chave, e a segunda é experimentar periodicamente a chave para excluir ------ --Quando há muitos dados chave, a velocidade de amostragem não é tão rápida quanto a velocidade de geração de chave, o que fará com que muitos dados desatualizados não sejam excluídos, porque o redis geralmente está no nó mestre (adicionando e excluindo dados) e o escravo não pode excluir os dados desatualizados, mesmo se for consultado. Fará com que o escravo leia os dados expirados (resolvido no redis3.2)
  • Artigo master-slave recomendado do redis https://www.cnblogs.com/wdliu/p/9407179.html
  • Recomendar redis cópia completa e artigos de cópia parcial https://blog.csdn.net/gaobinzhan/article/details/106536326

Blog pessoal: [ http://blog.yanxiaolong.cn/] ( Blog pessoal: http://blog.yanxiaolong.cn/
)

Link original: https://developer.aliyun.com/article/775627?

Declaração de direitos autorais: O conteúdo deste artigo é fornecido voluntariamente por usuários registrados em nome real do Alibaba Cloud. Os direitos autorais pertencem ao autor original. A comunidade de desenvolvedores do Alibaba Cloud não possui seus direitos autorais e não assume as responsabilidades legais correspondentes. Para regras específicas, consulte o "Contrato de Serviço de Usuário da Comunidade de Desenvolvedores de Nuvem Alibaba" e as "Diretrizes de Proteção de Propriedade Intelectual da Comunidade de Desenvolvedores de Nuvem Alibaba". Se você achar que há suspeita de plágio nesta comunidade, preencha o formulário de reclamação de violação para denunciá-lo. Depois de verificado, a comunidade excluirá imediatamente o conteúdo suspeito de violação.

Acho que você gosta

Origin blog.csdn.net/alitech2017/article/details/109095706
Recomendado
Clasificación