Las copias de seguridad (backups) y la replicación son dos cosas diferentes.
Las copias de seguridad proporcionan una instantánea de los datos en un momento dado. Proporcionan un punto de restauración.
La replicación consiste en distribuir cada acción a un sistema diferente para que la tengas en más de una ubicación. Las eliminaciones también se replican.
Si realmente quieres tolerancia a fallos, necesitas tener ambas cosas. (Y más…)
Por lo tanto, la replicación solo resuelve el problema de tener datos actuales en múltiples lugares. Las copias de seguridad proporcionan el método para restaurar un sistema a un punto específico en el tiempo.
Discourse utiliza 2 mecanismos para el almacenamiento:
- Base de datos PostgreSQL para todo excepto los archivos adjuntos
- Los archivos adjuntos se almacenan en el sistema local o en S3
Para hacer una copia de seguridad y/o replicar los datos almacenados en la base de datos PostgreSQL, puedes consultar la documentación de PostgreSQL sobre cómo hacerlo. Sobre copias de seguridad, y replicación.
Los archivos adjuntos son un poco más complicados. Si los almacenas en S3, puedes usar copias de seguridad de S3. Para los archivos almacenados localmente, puedes usar varias opciones del sistema local.
Crear copias de seguridad completas es una tarea pesada dependiendo de la cantidad de datos. Por lo que no se puede hacer con más frecuencia fácilmente. El procedimiento de copia de seguridad estándar de Discourse es crear copias de seguridad completas. Si realmente quieres reducir el riesgo de perder datos, debes buscar otras opciones.
Una opción podría ser proporcionada por tu servicio de alojamiento: instantáneas de volumen (volume snapshots). Esto proporciona una forma de hacer una copia “instantánea” de los datos almacenados en un volumen. Esto te permite restaurar el volumen a ese momento. Las instantáneas de volumen también pueden estar disponibles dentro del sistema operativo dependiendo del sistema de archivos utilizado. (btrfs lo soporta, por ejemplo).
Además de eso, la documentación de PostgreSQL también aborda cómo hacer copias de seguridad más continuas de la base de datos, lo que permite una excelente recuperación en un punto específico en el tiempo de la base de datos. (No olvides enviar las copias de seguridad fuera del sitio). Esto es mucho más rápido que las copias de seguridad completas.
Para copias de seguridad de adjuntos más granulares, puedes usar varias herramientas de copia de seguridad que permiten gestionar copias de seguridad completas + diferenciales. Por ejemplo duplicity. O podrías usar rsync (sin eliminación). Entre las instantáneas, aún podrías perder archivos. Usar S3 sin eliminación sería más seguro ya que los archivos ya están en otro sistema.
Para concluir. El mecanismo de copia de seguridad estándar de Discourse no es adecuado para un calendario de copias de seguridad más frecuente. Si deseas tener más copias de seguridad, utiliza una combinación de las características estándar de copia de seguridad/replicación de PostgreSQL, S3, instantáneas de volumen, etc.
En mi sitio no utilizo el sistema de copias de seguridad de Discourse para copias de seguridad regulares. Todavía tengo copias de seguridad diarias, pero utilizo una combinación de configuraciones de pg_dumps y duplicity (coordinadas a través de backupninja).