Estou usando SymmetricDS para sincronizar bancos de dados. Ele é capaz de sincronizar ou replicar dados entre nós (servidores/bancos de dados), apenas empurrando ou puxando os dados que você definir. É um software baseado em Java, tem uma curva de aprendizado íngreme, mas realmente faz o trabalho.
O SymmetricDS pode ser configurado para enviar alterações de um nó para os outros dois nós, garantindo assim que todos os três nós contenham os mesmos dados. Você precisa ter certeza de que as chaves primárias são chaves exclusivas e não valores incrementados automaticamente atribuídos pelo banco de dados, pois isso provavelmente será um problema nos três bancos de dados diferentes que você deseja sincronizar.
O software instala triggers no banco de dados e captura as alterações quando as operações INSERT, UPDATE ou DELETE (e outras) são realizadas. Essas alterações de dados são então invocadas nos outros nós. O software precisa ser executado em cada local, mas não precisa de uma conexão com a Internet disponível o tempo todo.
Eu me preocupei no início que os gatilhos em todas as minhas tabelas diminuiriam o desempenho, mas isso não foi um problema. Não posso dizer que descobrimos algum problema com o desempenho depois que os gatilhos foram instalados.
Dê uma olhada em http://symmetricds.org/ para mais detalhes.