ustify>

Capa SQl 33

Clique aqui para ler todos os artigos desta edição

Gerenciando um cluster PostgreSQL com PGCluster

Uma forma simples e prática de gerenciar bancos de dados PostgreSQL

Na sua forma mais básica, um cluster é um sistema que compreende dois ou mais computadores ou sistemas (denominados nós) onde trabalham em conjunto para executar aplicações ou realizar outras tarefas de tal forma que os usuários que os utilizam tenham a impressão que somente um único sistema responde para eles (computador virtual). Este conceito é denominado transparência do sistema. Como características fundamentais para a construção destas plataformas incluem-se elevação da confiança, distribuição de carga e performance.

PGCluster é um sistema síncrono de replicação de composição multi-master para PostgreSQL. Devido ao fato do sistema de replicação ser um sistema síncrono, atrasos não irão ocorrer na duplicação de dados entre os servidores de armazenamento. Em um servidor de composição multi-master, dois ou mais servidores de armazenamento podem ser acessados simultaneamente por um usuário.

Nesse artigo serão mostradas as possibilidades de uso do PGCluster como gerenciador de cluster bem como vantagens e desvantagens de cada possibilidade, o funcionamento interno, sua arquitetura, maneiras de configuração e procedimento de recuperação de dados.

Replicação de dados

O objetivo de um mecanismo de replicação de dados é permitir a manutenção de várias cópias de um mesmo dado em vários servidores de banco de dados (SGBD). Os principais benefícios da replicação de dados são:

·         redundância, o que torna o sistema menos sensível às falhas;

·         possibilidade de balanceamento de carga do sistema, já que o acesso pode ser distribuído entre as réplicas;

·         e finalmente, ter-se um backup on-line dos dados, já que todas as réplicas estariam sincronizadas.

 

Existem basicamente dois tipos de replicação: a replicação assíncrona e a síncrona. Na replicação assíncrona (armazena e faz a replicação), a cópia dos dados fica fora de sincronia entre os bancos de dados. Se um banco é alterado, a alteração será propagada e aplicada para outro(s) banco(s) num segundo passo, dentro de uma transação separada sendo que esta poderá ocorrer segundos, minutos, horas ou até dias depois. A cópia poderá ficar temporariamente fora de sincronia, mas quando a sincronização ocorrer, os dados convergirão para os locais especificados.

Na replicação síncrona, todas as cópias ou replicações de dados serão feitas no instante da sincronização e consistência. Se alguma cópia do banco é alterada, essa alteração será imediatamente aplicada a todos os outros bancos dentro da transação. Os servidores replicados cooperam usando estratégias sincronizadas e protocolos especializados de réplica para manter os conjuntos de dados replicados coerentes. A replicação síncrona é apropriada em aplicações comerciais onde a consistência exata das informações é de extrema importância. Esse é o tipo de replicação abordada pelo PGCluster.

Na próxima seção será apresentado, em mais detalhes, como funciona o PGCluster e o processo interno de replicação.

PGCluster

O PGCluster é um sistema de replicação síncrona de composição multi-master, e que pode trabalhar de duas maneiras principais: compartilhamento de acesso e alta disponibilidade.

No caso do compartilhamento de acesso, a partir da combinação de servidores de armazenamento e servidor de replicação pode-se criar um sistema onde será possível minimizar a carga do acesso e fazer consultas de maneira distribuída pelo cluster. Com a adição de um balanceador de carga (servidor responsável por distribuir a carga de acesso ao cluster), o PGCluster configura um sistema de alta disponibilidade. O balanceador de carga e o servidor de replicação separam um nó que ocasionalmente falhe e continuam a servir com o restante do sistema. Assim que a máquina que falhou for restabelecida, os dados são copiados para ela automaticamente. O mesmo acontece com um novo nó que venha a se integrar ao sistema.

Arquitetura geral do sistema

A query de uma transação é replicada de dois modos: normal e confiável. A diferença entre os dois é que no modo normal uma resposta é enviada ao front-end (aplicação que gerou a alteração no banco) após a execução da query no servidor de armazenamento ao qual a mesma foi destinada. Já no modo confiável, a resposta é enviada após a query ter sido executada em todos os servidores de armazenamento, ou seja, após a modificação ter sido replicada para todos os nós envolvidos. Graficamente, a diferença entre os dois modos é evidenciada pelas Figuras 1 e 2.

 

Figura 1. Fluxo das transações da replicação (Modo Normal).

A Figura 1 mostra os servidores que formam o cluster. Balanceador de carga (LB), servidores de armazenamento (DB1, DB2 e DB3), e servidor de replicação (Rep). Nesse fluxo, a solicitação de alteração do banco é enviada inicialmente ao balanceador de carga, que direciona para o servidor de armazenamento com menos carga (com base no número de sessões abertas e em andamento). Então, o servidor de replicação envia a alteração para todos os outros servidores de armazenamento.

Figura 2. Fluxo das transações da replicação (Modo Confiável).

 

De maneira similar, na Figura 2, o modo de replicação confiável segue o mesmo fluxo, porém só envia a resposta após a alteração ter sido replicada em todos os servidores de armazenamento do cluster.

...

Quer ler esse conteúdo completo? Tenha acesso completo