Sincronização do Discourse para múltiplas instâncias

Tenho um servidor mestre e terei mais de 100 a 200 instâncias escravas. As instâncias escravas podem estar online ou offline, mas serão usadas por usuários. Sempre que uma instância offline entrar online, ela deve conseguir sincronizar com o servidor mestre sem criar conflitos e atualizar todos os dados mais recentes. Não quero fazer nenhuma alteração no código, pois o Discourse atualiza-se frequentemente e não quero quebrar a instância devido a mudanças no código.

Estou pensando em ajustar o PostgreSQL em certa medida. Outros arquivos relacionados a dados podem ser sincronizados usando syncthing. Mas atualizar os dados do PostgreSQL é algo que me preocupa, pois, se eu sincronizar diretamente os dados do mestre, o trabalho realizado pelo usuário offline será apagado após a sincronização.

Estou pensando em tentar alterar a sequência de autoincremento de cada tabela para UUID no banco de dados.

Existe alguma solução fácil possível para isso?

O Discourse não foi projetado para um aplicativo como este. É extremamente improvável que você consiga fazer uma sincronização bidirecional do PostgreSQL funcionar de uma forma que não quebre o Discourse.

Alterar isso exigiria algumas mudanças significativas no código do Discourse.

Se você tornar os escravos apenas para leitura e sincronizar o PostgreSQL de forma unidirecional, então pode ser possível fazer isso funcionar… mas será difícil.

Olá, eu planejo ter um uso semelhante ao seu. Encontrei um artigo sobre a fusão de 2 sites do Discourse. Se os passos de fusão puderem ser automatizados, talvez possamos configurar um cron job para fundir constantemente o banco de dados entre o servidor mestre e as instâncias escravas?