Planificación de respaldo y restauración

Quiero asegurar una buena estrategia de copias de seguridad a medida que mi sitio se pone en marcha. Estos son los siguientes pasos que he implementado. ¿Qué me falta?

Copias de seguridad de la base de datos

  • Discourse realiza una copia de seguridad diaria de la base de datos.
  • Se realiza una copia de seguridad adicional de la base de datos mediante cron diariamente. (+12 horas desde la copia de seguridad basada en la interfaz de usuario)
  • Las copias de seguridad se almacenan en un bucket S3 (centro de datos diferente)

Archivos principales

Los siguientes se copian dos veces al día a un bucket S3 (centro de datos diferente)

  • discourse/containers/app.yml
  • discourse/shared/standalone/uploads/
  • discourse/shared/standalone/backups/
  • discourse/shared/standalone/ssl/
  • discourse/shared/standalone/letsencrypt/

Las copias de seguridad de archivos se realizan dos veces al día, 30 minutos después de las copias de seguridad de la base de datos.

S3: Cargas

  • La copia de seguridad diaria de las cargas se almacena en un bucket S3 en un centro de datos diferente.

Copias de seguridad del servidor

  • Copias de seguridad semanales de todo el servidor - se conservan 4 copias de seguridad semanales
  • Anualmente se almacena una copia de seguridad semanal como copia de seguridad maestra en una ubicación remota.

Esto debería proporcionar todos los datos y configuraciones necesarios para restaurar un servidor en el mismo lugar o en un servidor nuevo.

¿Me falta algo?

1 me gusta

Esa es la forma sugerida. Si haces una copia de seguridad de tu base de datos una vez al día, te arriesgas a perder como máximo 24 horas de lo que haya ocurrido en ese foro.

Me han dicho al menos dos veces que no es un problema, pero nadie me ha explicado nunca por qué no. Así que estoy haciendo una copia de seguridad de mi base de datos cada 6 horas; mi foro no tiene mucho tráfico, así que puedo asumir ese riesgo. Para comparar, mi comercio electrónico hace una copia de seguridad cada 4 minutos.

1 me gusta

¿Cómo configuraste tu base de datos para hacer copias de seguridad con mayor frecuencia? Preferiría dos veces al día, pero la funcionalidad de la interfaz de usuario solo permite una vez al día.

Puedes tener un trabajo cron (en tu servidor, no en el contenedor) que ejecute

docker exec app bash -c "discourse backup"

Si los datos son realmente críticos, puedes configurar un servidor de replicación de postgres y tener cada confirmación en un segundo servidor.

1 me gusta

Tengo esto en crontab:

docker exec app discourse backup --sql-only

Ese es el propio comando CLI de Discourse para hacer copias de seguridad, y me guiaron diciendo que docker exec app lo ejecuta fuera del contenedor (app en el nombre del contenedor, por supuesto).

Y como he configurado S3 que salta al mismo bucket donde también están las copias de seguridad “normales”.

Hay un pequeño problema… pronto habrá un montón de copias de seguridad. No sé si debería hacer un volcado SQL de manera diferente, moverlo usando aws-cli y luego eliminar todo lo que sea más antiguo que un cierto período de tiempo. O hacer lo mismo en el VPS.

Pero esa es la forma más fácil de obtener el volcado SQL.

1 me gusta

Supongo que esto activa la rutina interna de copia de seguridad de Discourse, por lo que todas las notificaciones permanecen en su lugar.

¿Desactivas la programación de copias de seguridad dentro de la interfaz de usuario y gestionas todo a través de cron? o, ¿estás haciendo una dentro de la interfaz de usuario y haciendo las adicionales a través de cron?

No. Hago ambas cosas. No confío tanto en el sistema ni en mí mismo. Es muy raro que la cantidad de copias de seguridad sea un problema, la escasez sí lo es.

1 me gusta

Gracias @Jagster y @pfaffman por la ayuda para configurar una base de datos adicional a través de cron. Eso reduce mi sistema a una pérdida de datos de 12 horas en el peor de los casos.

2 Me gusta