|
Replicação do PostgreSQL com Slony Autor: Marlon Petry Licença: GPL |
|---|
|
Slony é um replicador assícrono que trabalha através de triggers, para instala-lo é necessário possuir os fontes do postgreSql neste tutorial mostrarei como configurar o slony para que ele replique uma base de dados. O slonik é um interpretador dos scripts do slony. |
|
Primeiros Comandos: |
|
Os primeiros comandos de um script slonik devem identificar o nome do cluster, servidores envolvidos e parâmetros para conectar a cada base de dados no cluster. Um script slonik é geralmente escrito em shell script. No script abaixo é identificado o cluster e os nodos de conexão |
|
#!/bin/bash |
|
Nodos de Rede: |
|
Um nodo é uma combinação de uma base de dados e um processo slon pertencente a base de dados. Um cluster é a cooperação de um nodo com um esquema de replicação. Para isto funcionar é necessário que todos os nodos conheçam o caminho para outros nodos. Nosso primeiro script slonik servirá para inicializar o cluster, definindo cada nodo e os caminhos dos outros nodos. Os nodos possuem um id (um número único). O cluster é definido no primeiro nodo como o comando init cluster ou seja este será o master, e cada nodo subseqüente é definido como store node. O super usuário slony, neste caso é definido como postgres. O path (caminho) é definido como um nodo sendo o master e outro como slave. Esta terminologia não relata o esquema de replicação, porém referencia um possível caminho para os nodos sendo as informações de conexão pertencentes a cada nodo, estas informações serão usadas pelo daemon slon para se conectar ao nodo. |
|
#!/bin/bash |
|
Os erros de sintaxe são comuns com um script pelo menos na fase de desenvolvimento uma boa prática é usar o comando echo para isolarmos os erros que possam vir a surgir. |
|
Escutando os Eventos: |
|
Todos os eventos que acorrerão devem ser informados ao cluster, para que isto seja possível devemos dizer ao slony quais nodos escutaram e quais transmitem. Neste exemplo só temos dois nodos, então habilitamos os dois a escutar, para configurar devemos informar quem será o origin, receiver, provider. A origin diz que todo os eventos seram gerados neste nodo, já o receiver será o nodo que receberá os eventos, e o provider é quem repassa o evento, se tivessimos tres nodos poderíamos configurar o nodo 3 para escutar os eventos ocorridos no nodo 1 e estes serem fornecidos pelo nodo 2. |
|
#!/bin/bash |
|
Iniciando um processo slon: |
|
Uma vez que os nodos estejam configurados, e escutando por eventos, o processo slon pode ser iniciado. Um processo slon deve ser iniciado em cada base de dados que participa da replicação. |
|
#!/bin/bash |
|
Infomando o que será replicado: |
|
Um esquema de replicação com slony deve ser informado quais são as tabelas e seqüências que serão replicadas. Primeiramente deve ser criado um set informando o nodo de origem, depois basta adicionar as tabelas e sequëncias ao set, informando o set de origem, um id para tabela, e o full qualified name de cada tabela ou sequencia e opcionalmente uma chave alternativa. O id de cada tabela deve-se ter uma certa preocupação pois isto definrá a ordem de travamento da tabelas. Isto significa que as tabelas mestras devem ter o id mais baixo. A modelagem de seu banco deve ajudar-lhe a determinar a ordem dos ids. Quando requisitar uma tabela que esteja com id errado ou inverso pode haver problemas com o postgres e o processo slon. Um set deve ser criado apenas uma vez e não ter nenhum subsciber ativo. Para adicionar novas tabelas para serem replicadas, um novo set deve ser criado e depois os dois set devem ser combinados com o comando merge set. |
|
#!/bin/bash |
|
Subscribers para o set |
|
Com o set criado já é possível criar um subscriber. Para criar um subscriber para um set, devemos identificar o set, o nodo que fornece o set, o receptor do set ou se não for receptor deste set pode envia-lo para outro nodo. Neste caso o nodo de origem é o mesmo que forneceu as informações a serem subscritas, mas para subscrição em cascata este não é o caso. Mesmo que haja somente dois nodos neste sistema de replicação, nõs estamos definindo que o nodo de recepção pode enviar o set para outro nodo, isto serve caso inserirmos outro nodo ou trocarmos o mestre. Aqui o nodo 2 é subscrito pelo set 1 que é originado no nodo 1 e fornecido pelo nodo 1. |
|
#!/bin/bash |
|
A partir deste momento sua base de dados já deve estar sendo replicada. |
|
Como Desfazer : |
|
A maneira mais simples para desfazer é terminar todos processos slon que estejam rodando, e remover completamente de sua base de dados todas alterações feitas pelo slony. |
|
#!/bin/bash |
|
Comentários, Dúvidas: Envie seus comentários e dúvidas para meu e-mail marlonpetry at gmail.com Referências: |
|
The Slony-I Project Documentation on Gborg - http://gborg.postgresql.org/slony1 Database Replication with Slony - http://www.linuxjournal.com/article/7834 Linux Today – ONLamp: Introducing Slony - http://linuxtoday.com/infrastructure/2004112200226OSHL Slony-I: Example of Replicating A Small Database - http://www.varlena.com/varlena/GeneralBits/85.php Jan Wieck's Original Slony-I Talk and Scripts July 2004 in Portland, OR sponsored by Afilias Global Registry Services |
|
|