escravo postgresql para replicação da tabela principal

3

Atualmente, tenho algumas dezenas de sites enviando dados para um banco de dados central por VPN com o rsyslog. Todos esses registros estão entrando em uma tabela (há cerca de 20 a 30 por segundo sendo inseridos por site). Assim, há aproximadamente 30 milhões de registros em UMA TABELA e crescendo rapidamente. O design do banco de dados é uma questão separada a ser tratada posteriormente.

Meu objetivo é configurar um banco de dados local em cada site com essa tabela que está reunindo os syslogs e replicá-los em nosso banco de dados central (esperançosamente em sincronia) para uma nova tabela nomeada após o recurso (em vez disso, uma tabela grande reunindo todos 17 dados da instalação).

Eu olhei para Bucardo, Slony e SymmetricDS, mas todos parecem soluções de redundância / backup, mas o que eu realmente preciso é de uma replicação simples de tabela única de cada site para o banco de dados central.

Minha impressão inicial com Bucardo é que eu precisaria instalá-lo em cada um dos sites para conseguir isso. Eu estou procurando um pouco de orientação, se alguém puder oferecer algum conselho. Acredito que o Google tenha morrido, mas espero estar errado.

    
por whobbs 13.11.2013 / 19:35

2 respostas

1

Cada um dos conhecidos sistemas de replicação lógica do PostgreSQL é adequado para isso: Bucardo, Londiste, Slony. Eles não são necessariamente apenas soluções de redundância. (Indiscutivelmente, são soluções de redundância muito ruins.) Escolha a que você mais gosta. Talvez Londiste seja mais fácil de começar, mas YMMV. (Eu não estou familiarizado com SymmetricDS.)

    
por 13.11.2013 / 22:33
0

A partir do Postgres 9.3, você poderá fazer isso usando envoltórios de dados externos - uma breve explicação está disponível aqui .

Basicamente, crie a (s) tabela (s) apropriada (s) em seu servidor central e, em seguida, crie as tabelas como uma tabela externa (usando CREATE FOREIGN TABLE ) na instância do Postgres dos sites remotos. Você pode então tratar a tabela estrangeira como qualquer outra tabela, exceto que todas as suas alterações são enviadas de volta para o servidor "real".

Observe que isso não funciona se você precisar de recursos assíncronos (escreva o material nas tabelas dos sites remotos enquanto o servidor central estiver offline e envie-o quando o servidor central voltar). Para isso, faça como Peter sugeriu e use uma das ferramentas de replicação baseadas em transações .

    
por 13.11.2013 / 22:44