Sombreamento MySQL e PostgreSQL uns aos outros

2

Eu tenho um projeto atualmente baseado no PostgreSQL 8.1. No entanto, parte do processamento de dados para ele precisa acontecer em um servidor para o qual 7.4 é a versão mais recente (por enquanto, somente pacotes oficiais via yum podem ser usados lá).

O que eu gostaria de poder fazer é dividir o processamento de modo que os dados para os quais o MySQL funciona melhor possam ser operados conversando com um banco de dados MySQL, enquanto dados para os quais o PostgreSQL é melhor podem ser operados lá.

Eu também quero ter um ambiente totalmente replicado nos dois ambientes RDBMS diferentes para redundância.

Encontrei alguns artigos sobre como fazer clustering ou sombreamento dentro do MySQL (como aqui ), e eu li o capítulo replicação do MySQL .

Eu estou querendo saber se existe uma maneira (preferivelmente uma "boa"!) de "subscrever" o banco de dados MySQL do PostgreSQL, e o banco de dados PostgreSQL do MySQL.

Atualizar -
Eu não sou avesso a escrever o mecanismo de interface sozinho, e se isso é o que precisa ser feito; apenas esperando que algo já exista para mim: :)

    
por warren 30.09.2009 / 12:22

1 resposta

2

Enquanto a maioria dos DBMS tem algum tipo de suporte de replicação nativa (como você encontrou para o MySQL e PostgreSQL), estes são, AFAIK, sempre para replicação para outras instâncias do mesmo DBMS.

Não tenho conhecimento de nenhum DBMS cujo suporte de replicação possa replicar para outros DBMSs. A razão provavelmente é que replicar através de DBMSs diferentes é um problema significativamente diferente de replicar para o mesmo DBMS: Muitos conceitos (gatilhos, restrições, espaços de tabela etc.) serão diferentes, e para cada um deles, deve haver alguma decisão sobre se / como essas coisas serão tratadas na replicação.

Então, acredito que sua melhor opção será usar algum tipo de ferramenta de migração de dados / transporte de dados e fazer algum tipo de replicação. Isso provavelmente envolverá o fechamento temporário dos bancos de dados para as transferências. Além disso, provavelmente será muito difícil fazer uma sincronização "bidirecional", portanto, convém considerar se você pode fazer isso sem isso.

Como alternativa, você pode tentar criar uma solução personalizada, por exemplo, apenas replica algumas tabelas, de tal forma que, para uma dada tabela, existe apenas um banco de dados "master".

Desculpe desapontá-lo, mas temo que não haja uma solução de replicação geral nas linhas do que você está procurando, então você terá que adotar uma abordagem diferente.

    
por 30.09.2009 / 12:41