Eu criei uma PUBLICAÇÃO de replicação lógica usando FOR ALL TABLES
. Agora percebi que não quero replicar todas as tabelas, afinal. Tentei soltar uma das tabelas da publicação, mas:
mydb=# alter publication replicapublication drop table only migrations;
ERROR: publication "replicapublication" is defined as FOR ALL TABLES
DETAIL: Tables cannot be added to or dropped from FOR ALL TABLES publications.
Fiz uma sincronização enorme de centenas de GB e não quero começar de novo com uma nova publicação.
Perguntas: 1. Existe alguma esperança de resgatar esta publicação? 2. Em caso negativo, existe alguma maneira de criar uma nova publicação totalmente sincronizada sem recomeçar com uma sincronização completa?
Obrigado.
Para 1, não, acho que não. Para 2, possivelmente, mas parece preocupante.
Eu ingenuamente pensei que criar uma nova publicação listando suas tabelas e, no final da assinatura, desabilitar a assinatura antiga e criar uma nova usando o mesmo slot, tudo em uma transação, funcionaria. Mas fazendo um experimento, isso não funciona se o editor estiver sobrecarregado. Acaba perdendo algumas mudanças. No entanto, parece funcionar se o editor estiver inativo e o assinante for pego no momento da troca.
Não consigo decidir se isso é um bug ou não. Não vejo nada na documentação que justifique esse comportamento não transacional, mas não li tudo com atenção.