Acabei de configurar uma replicação slony configurada entre 2 servidores postgres. Um mestre e um host escravo. Os dados estão sendo copiados. Não queremos usar isso para backup de dados nem nada, mas queremos fazer alguns cálculos computacionais intensivos no escravo.
É possível/OK se criarmos um índice em uma tabela no banco de dados escravo que não existe no banco de dados mestre? Não adicionaremos nenhum dado ao escravo, apenas queremos ser capazes de executar certas consultas mais rapidamente no escravo.
Isso interromperá a replicação solitária? Isso vai nos morder no traseiro mais tarde?
O Slony é baseado em gatilho e altamente configurável. Sim, de acordo com a documentação aqui .
Em relação aos prós/contras. Nossa equipe estava enfrentando o mesmo tipo de problema (solução de clustering para alta disponibilidade, IOPS off load) há algum tempo e, após investigar/testar alguns deles, acabamos com apenas a replicação de streaming. - Simples de configurar/manter, carregamento de leitura em relíquias.
Multi-tenancy (Slony não pode dividir esquemas postgres em nós diferentes ), uso intenso de gatilhos em nosso backend de aplicativo, índices com extensões (cube, pg_trgm, cube, earthdistance e mudanças DDL frequentes tornaram impossível usar o Slony para nós. Em outras palavras - você deve entender sua aplicação e objetivos para escolher a solução certa.
Para fragmentação de dados - o PostgresXL definitivamente merece atenção. Nós também tentamos! mas não funcionou para nós, pois não suporta todos os tipos de índices que estamos usando :(