Assisti hoje, no segundo dia do FISL, a outra palestra sobre replicação de dados no PostgreSQL, com o Bucardo. Já cheguei meio “traumatizado” com a palestra sobre replicação do dia anterior (porque não é tão simples replicar dados no PostgreSQL como é no MySQL???).
Até que a palestra começou bem, e eu comecei a ficar feliz quando o palestrante falou que ela era uma solução multi-master e escrita em Perl, Pl/Perl e Pl/pgsql, mas começou a desandar quando falou que usa triggers (não me agrada usar triggers na minha base de dados para implementar replicação, pois não quero “sujar” minha BD). Piorou quando disse que era uma solução que não aceitava chave primária composta, apesar que os autores do projeto estão pensando em melhorar esta funcionalidade. Na verdade, creio que até eu poderia adaptar o Bucardo para as minhas necessidades, mas o fato de usar triggers realmente não me agrada. Eu quero ter controle total sobre a minha base de dados. Sou muito possessivo com as minhas coisas!
Tem mais alguns pré-requisitos, como PostgreSQL 8.1 ou superior, além de ter que ter o Perl e mais alguns módulos do Perl instalados no servidor “principal” de replicação, mas o fato de não aceitar chave primária composta é muito limitante.
Achei interessante que ele tem alguns controles para resolver conflito de chave, como por exemplo, você pode escolher qual servidor tem prioridade, em caso de conflito, ou até uma opção engraçada, que é a “random” (isso mesmo, faz um “sorteio”, huahuhauhua). Mas bem que podia ter uma opção do tipo “migrate“, onde os registros duplicados de um dado servidor tivessem sua chave primária modificada, sem perda de dado, mas tudo bem. No fim, o que vale mesmo é adotar o velho range de auto-numeração.
Creio que vou pesquisar um pouco mais a replicação por log e ver se existe maneira de deixar o servidor “escravo” aberto para seleção, assim como eu faço atualmente com o MySQL (solução perfeita para as aplicações que eu tenho atualmente). Na pior das hipóteses, foi implementar a replicação manualmente usando triggers MINHAS, hehehe
Tags: Banco de Dados, fisl9.0, Perl, PostgreSQL