Replicação no PostgreSQL

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (1)  (0)

Artigo publicado Revista SQL Magazine 60.

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

imagem_pdf.jpg

PostgreSQL

Replicação no PostgreSQL

Descrição, prós e contras de algumas técnicas disponíveis

 

Com o crescimento dos sistemas de informações e do aumento das bases de dados, torna-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."

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?