Siendo cauteloso: proceso de copia de seguridad y restauración de base de datos al probar cosas

Voy a probar un proceso de importación de una gran cantidad de contenido, pero quiero asegurarme de poder revertir correctamente por si las cosas salen mal.

Ejecuto una instancia externa de PostgreSQL, así que mi idea es que no necesito hacer una copia de seguridad de la instancia de Discourse Rails en Docker, sino simplemente de la base de datos mediante los siguientes pasos:

Copia de seguridad:

  1. ./launcher stop app
  2. pg_dump -U usuario -p 12345 -W -F p nombre_base_datos | xz > ~/backup/database/$(date +"%d-%m-%Y_%H.%M.%S").nombre_base_datos.pgsql.xz
  3. ./launcher start app
  4. ### IMPORTAR CONTENIDO ###

Si las cosas salen mal, RESTAURAR:

  1. ./launcher stop app
  2. xzcat ~/backup/database/FECHA.nombre_base_datos.pgsql.xz | psql -U usuario -p 12345 -W nombre_base_datos
  3. ./launcher start app

Y todo debería volver a estar normal y funcional… ¿correcto?

Probablemente, existe una opción de restauración integrada, fácil de usar, que está probada, es compatible y requiere solo unos pocos clics o un único comando de línea.

Si tu método no funciona, tendrás que solucionarlo por tu cuenta.

Como mencioné, esto es para una base de datos PostgreSQL externa, ya que no estoy usando la versión en Docker y, por desgracia, el método normal de copia de seguridad y restauración simplemente no funciona para mí (probablemente porque estoy ejecutando una versión un poco más reciente de PostgreSQL en el servidor de la base de datos principal).

Oh, sí. Si estás ejecutando pg11, tendrás que arreglártelas solo. Si estás ejecutando pg10 en una base de datos externa, debería funcionar bien.

Pero pruébalo y ve si funciona.

PG11 y PG12 serán compatibles muy pronto en el proceso de copia de seguridad y restauración. Mantente atento.

Hola. ¿Ya tienen soporte?

¡Sí! La actualización fue hace algunos meses.

¡Gracias! Solo para aclarar, ¿restaurar una copia de seguridad en un sitio de Discourse (con contenido) eliminaría completamente todos los datos de la instancia externa de base de datos PostgreSQL (RDS)? Si la restauración falla o se interrumpe la conexión, ¿los datos de RDS quedarían corruptos?

Eliminará todos los datos de la base de datos de Discourse, pero no los de otros sistemas. Si la restauración falla, los datos existentes permanecerán.