Replicação do banco de dados
A replicação do banco de dados é a técnica fundamental por trás de disponibilizar um sistema de banco de dados e continuamente disponível. A replicação copia dados do banco de dados Master (banco de dados primário) para um ou mais bancos de dados de escravos (réplicas) que garantem que os dados sejam acessíveis a qualquer momento se um nó mestre falhar. Este processo é acoplado a um processo automático de failover que promove um novo mestre dos nós de réplica disponível quando o nó mestre falha.
Replicação de Redis construída
Redis começou a apoiar a replicação de suas primeiras versões e melhorou imensamente. A versão independente suporta replicação básica com o comando escravo, convertendo um nó existente em um escravo do nó principal do banco de dados. Além disso, o recurso Redis Sentinel permite replicação com um recurso de failover mais avançado. Além disso, o cluster Redis suporta um rico conjunto de recursos de alta disponibilidade para sistemas de banco de dados mais distribuídos e grandes.
Replicação básica de redis com comando escravo
Uma das maneiras fundamentais de alcançar a replicação Redis é usando o comando escravo.
Está a um passo de fazer de uma instância Redis um nó escravo. A linha a seguir deve ser adicionada ao arquivo de configuração da instância específica:
escravo
Caso de uso
O exemplo a seguir demonstra um cenário em que uma determinada instância de Redis é configurada para ser um nó escravo de um nó mestre que é executado nos 127.0.0.1 endereço na porta 7000.
Com essa configuração, o banco de dados mestre copiará todos os dados para o nó escravo, que garante que o escravo seja uma cópia exata do nó do banco de dados primário.
Uma vez que o nó mestre está em funcionamento a 127.0.0.1 e porta 7000, vamos iniciar a outra instância cujo arquivo de configuração contém a configuração de escravos. A nova instância será executada na porta 7001.
A nova instância é iniciada com sucesso e sincronizada com o Master Runs às 127.0.0.1 (porta 7000).
Se você escrever alguns dados para o nó principal, eles podem ser lidos pelo escravo da seguinte forma. Isso significa que mestre e réplica foram sincronizados adequadamente.
Escrevendo dados para o nó principal é executado na porta 7000 da seguinte forma.
Lendo dados do nó escravo é executado na porta 7001, como mostrado no seguinte:
Com essa configuração, quando o Redis Master falha, já temos uma cópia exata do banco de dados primário em execução na porta 7001. Da mesma forma, você pode configurar vários escravos para um determinado nó mestre. A única desvantagem nessa configuração é que você precisa cuidar manualmente do processo de failover.
Prós
Contras
Alta disponibilidade com Redis Sentinel
Redis Sentinel foi apresentado para lidar com as desvantagens da solução anterior. Redis Sentinel é um sistema distribuído que atua como uma solução avançada de alta disponibilidade para Redis, juntamente com outros recursos, como provedor de notificação, ferramentas de monitoramento e provedor de configuração para clientes.
O Sentinel é capaz de promover um escravo para um nó mestre automaticamente sem qualquer intervenção humana. O processo de failover principal inicia se o número máximo especificado de nós sentinel (quorum) concordar que o nó principal não estiver alcançável. Então, a disponibilidade dos nós sentinel é importante. No entanto, é recomendável usar um cluster Sentinel separado para executar nós do Sentinel separadamente dos nós mestre. Com esta configuração, os clientes Redis falam primeiro com o nó Sentinel e solicitam informações sobre o nó mestre atualmente em execução. Então apenas os clientes trabalharão com o mestre atual.
É possível iniciar um servidor Redis no modo Sentinel, como mostrado no seguinte comando:
Redis-Server--sentinela
Conforme mostrado na saída a seguir, o servidor foi iniciado no modo Sentinel.
Além disso, os Redis Sentinels também podem ser colocados com os servidores Redis.
Prós
Contras
Alta disponibilidade com cluster de redis
Com os lançamentos mais recentes do Redis, um componente de cluster foi adicionado à pilha Redis. Ele suporta:
Portanto, o cluster Redis aborda vários aspectos que estão faltando em soluções anteriores. Tornou -se extremamente benéfico para grandes empresas que geram e armazenam uma grande quantidade de dados. Porque o sharding distribui seus dados entre vários mestres, cada um com um subconjunto de todo o espaço chave. Isso lhe dá um grande impulso de desempenho.
Ao mesmo tempo, a replicação está disponível em clusters Redis, onde você pode configurar vários nós de escravos para um determinado mestre. Geralmente, um nó de cluster deve conter exatamente uma instância do servidor Redis. Mas é possível configurar a replicação cruzada implantando várias instâncias em um único nó.
Além disso, a opção de failover automática é fornecida pelos clusters Redis, onde o nó escravo promoverá para um mestre. Em uma configuração de cluster, o quorum não é obrigado a promover um novo nó mestre ou sharding para funcionar. O quorum mestre do nó é necessário apenas para todo o cluster executar.
Portanto, a solução Redis Cluster pode ser vista como uma solução tudo em um para aqueles que procuram sharding, replicação e alta disponibilidade em suas aplicações.
Prós
Contras
Redis suporta alta disponibilidade com redis independente, modelo Redis Sentinel e componente de cluster embutido. Todas as três soluções têm seus prós e contras, conforme discutido acima. No geral, o Redis Sentinel é a opção preferida se você estiver procurando apenas alta disponibilidade e não se preocupa com o desempenho. Mas se você está procurando um equilíbrio entre desempenho e alta disponibilidade com replicação cruzada, sem dúvida, o cluster Redis é o melhor entre os três.