Esse artigo faz parte da revista SQL Magazine edição 60. Clique aqui para ler todos os artigos desta edição

-se cada vez mais necessária a utilização de técnicas de replicação de dados. Tais técnicas vão desde uma simples cópia de um servidor a outro, até uma estrutura que provê capacidade de alta disponibilidade, recuperação de falhas, balanceamento de carga e etc. Cada uma com sua particularidade de utilização e gerenciamento, com pontos negativos e positivos.

Este artigo demonstrará algumas técnicas de replicação de bases de dados disponíveis no PostgreSQL. Para tanto, serão feitas apresentações rápidas de cada método, focando os prós e contras de cada utilização. Serão mostradas as técnicas de replicação com PGCluster, Slony, replicação dos arquivos de transações (log shipping), Sequoia e PGPool.

 

PGCluster

O PGCluster é uma ferramenta de replicação do PostgreSQL que permite a montagem de um sistema de replicação síncrono multi-master, onde existe uma replicação em tempo real, com a utilização de vários servidores primários. Ele pode ser composto por três tipos de servidores: o de balanceamento de carga, o de armazenamento e o de replicação (ver Figura 1).

Pode haver mais de um servidor responsável pelo balanceamento de carga, recebendo as consultas e as encaminhando para os nós de armazenamento com menor carga. O fator de carga de um nó é calculado pelo número de sessões ativas (conexões feitas pelo sistema ou diretamente por usuários que estão realizando alguma tarefa). Ele também tem a função de verificar se há problemas com o nó de armazenamento durante esta comunicação, separando-o se houver falhas.

O servidor de armazenamento, podendo haver mais de um, faz parte do agrupamento do banco de dados (chamado cluster). É o servidor que mantém o back-end do PostgreSQL, onde os dados podem ser armazenados (caso não se utilize uma unidade externa de armazenamento como um storage) e processados.

O servidor de replicação, podendo também haver mais de um, cuida da sincronia dos dados entre os diversos hosts de armazenamento, e quando o servidor de replicação principal falha, outro assume o seu lugar.

A replicação pode ser feita de dois modos: modo normal e modo confiável. No modo normal, uma resposta é enviada ao usuário assim que a atualização for executada no nó de armazenamento que a recebe. No modo confiável, a resposta só é enviada após a execução do comando de atualização ter sido realizada em todos os nós de armazenamento.

O servidor de replicação também verifica problemas com o nó de armazenamento durante a comunicação. Se um problema for detectado, o servidor de replicação separa o nó para posterior replicação e uma entrada no arquivo de log é criada. Quando um nó é recolocado ou adicionado ao agrupamento, o servidor de replicação cuida da sincronização dos dados.

 

Figura 1. Estrutura do PGCluster para balanceamento de carga e replicação

 

O PGCluster só pode ser executado em um ambiente Linux, pois o engine é derivado de uma modificação no código fonte do PostgreSQL e compilado para este ambiente operacional. Além dessa restrição, existem outras que podem ser mencionadas, como o fato dos large objects (tipos de dados que podem guardar objetos muito grandes) que para serem replicados, devem ser colocados em um diretório que possa ser acessado por todos os servidores de armazenamento do cluster. O PGCluster também não consegue restaurar um banco de dados quando o mesmo utiliza tablespaces (organização lógica do banco de dados, que especifica um local físico no sistema de arquivo, onde os objetos serão armazenados).

Testes de performance foram divulgados comparando-se o PostgreSQL com o PGCluster configurado e o PostgreSQL isolado. Com a utilização do PGCluster, foi observado que, à medida que o número de atualizações aumentava, sendo executadas paralelamente com as consultas, havia uma queda de performance devido ao fato da atualização requerer um bloqueio para processar as atualizações que são replicadas. Esta sobrecarga anulava o efeito da carga de processamento distribuída.

Como alternativa às limitações do PGCluster foi desenvolvido o PGCluster II, que é uma tentativa de reescrever o mesmo, usando um modelo de memória compartilhada. Este projeto foi criado com o objetivo principal de fazer as escritas menos custosas, sem sacrificar a alta disponibilidade nem a performance da leitura de dados, focando um ambiente de sistemas web. ...

Quer ler esse conteúdo completo? Tenha acesso completo