Sincronización de Discourse para múltiples instancias

Tengo un servidor maestro y tendré más de 100-200 instancias esclavas. Las instancias esclavas pueden estar en línea o fuera de línea, pero serán utilizadas por los usuarios. Sin embargo, cada vez que una instancia fuera de línea se ponga en línea, debería poder sincronizarse con el servidor maestro sin generar conflictos y actualizar todos los datos más recientes. No quiero realizar cambios en el código, ya que Discourse se actualiza con bastante frecuencia y no deseo romper las instancias debido a modificaciones en el código.

Estoy pensando en ajustar PostgreSQL en cierta medida. Otros archivos relacionados con datos pueden sincronizarse usando Syncthing. Sin embargo, actualizar los datos de PostgreSQL es lo que me preocupa, porque si sincronizo directamente los datos del maestro, el trabajo realizado por el usuario fuera de línea se perderá después de la sincronización.

Estoy considerando intentar cambiar la secuencia de autoincremento de cada tabla a UUID en la base de datos.

¿Existe alguna solución fácil y posible para esto?

Discourse no está diseñado para una aplicación como esta. Es extremadamente improbable que logres una sincronización bidireccional de PostgreSQL sin romper el funcionamiento de Discourse.

Cambiar esto requeriría modificaciones significativas en el código de Discourse.

Si haces que los esclavos sean de solo lectura y sincronizas PostgreSQL en una sola dirección, podría ser posible lograr que esto funcione… pero será difícil.

9 Me gusta

Hola, planeo tener un uso similar al tuyo. Encontré un artículo sobre la fusión de 2 sitios de Discourse. Si los pasos de fusión se pueden automatizar, ¿quizás podríamos configurar un cron job para fusionar constantemente la base de datos entre el servidor maestro y las instancias esclavas?