sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo sé si mi copia de seguridad de PostgreSQL es buena?

Las copias de seguridad son imprescindibles en todo plan de recuperación ante desastres. Puede que no siempre sea suficiente para garantizar un objetivo de punto de recuperación aceptable, pero es un buen primer enfoque. El problema es qué sucede si, en caso de falla, necesita usar esta copia de seguridad y no se puede usar por algún motivo. Probablemente no quiera estar en esa situación, por lo que, en este blog, veremos cómo confirmar si su copia de seguridad es buena para usar.

Tipos de copias de seguridad de PostgreSQL

Comencemos hablando de los diferentes tipos de copias de seguridad. Hay diferentes tipos, pero en general, podemos separarlo en dos categorías simples:

  • Lógica :La copia de seguridad se almacena en un formato legible por humanos como SQL.
  • Físico :La copia de seguridad contiene datos binarios.

¿Por qué mencionamos esto? Porque veremos que hay algunas comprobaciones que podemos hacer para un tipo y no para el otro.

Comprobación de los registros de copia de seguridad

La primera forma de confirmar si todo va bien es revisando los registros de respaldo.

El comando más simple para ejecutar una copia de seguridad de PostgreSQL podría ser, por ejemplo:

$ pg_dumpall > /path/to/dump.sql

Pero, ¿cómo puedo saber si hubo un error cuando se estaba ejecutando el comando? Simplemente puede agregar para enviar la salida a algún archivo de registro específico:

$ pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log

Entonces, puede agregar esta línea en el cron del servidor para ejecutarlo todos los días:

30 0 * * * pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log

Y debe monitorear el archivo de registro para buscar errores, por ejemplo, agregándolo a alguna herramienta de monitoreo como Nagios.

Comprobar los registros no es suficiente para confirmar que la copia de seguridad funcionará porque, por ejemplo, si el archivo de copia de seguridad está dañado por algún motivo, probablemente no lo verá en el archivo de registro.

Comprobación del contenido de la copia de seguridad

Si está utilizando copias de seguridad lógicas, puede verificar el contenido del archivo de copia de seguridad para confirmar que tiene todas las bases de datos allí.

Puede listar sus bases de datos PostgreSQL actuales usando, por ejemplo, este comando:

$ psql -l | awk '{ print $1 }'| awk 'FNR > 3' |grep '^[a-zA-Z0-9]' |grep -v 'template0'

postgres

template1

world

Y compruebe qué bases de datos tiene en el archivo de copia de seguridad:

$ grep '^[\]connect' /path/to/dump.sql |awk '{print $2}'

template1

postgres

world

El problema con esta verificación es que no verifica el tamaño o los datos, por lo que es posible que tenga alguna pérdida de datos si hubo algún error cuando se ejecutó la copia de seguridad.

Restaurar para comprobar la copia de seguridad manualmente

La forma más segura de confirmar si una copia de seguridad funciona es restaurarla y acceder a la base de datos.

Una vez completada la copia de seguridad, puede restaurarla manualmente en otro host copiando el archivo de volcado y ejecutando, por ejemplo:

$ psql -f /path/to/dump.sql postgres

Luego, puede acceder y consultar las bases de datos:

$ psql

postgres=# \l

                                  List of databases

   Name    | Owner   | Encoding |   Collate | Ctype    | Access privileges

-----------+----------+----------+-------------+-------------+-----------------------

 postgres  | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 |

 template0 | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 | =c/postgres          +

           |          | |             | | postgres=CTc/postgres

 template1 | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 | =c/postgres          +

           |          | |             | | postgres=CTc/postgres

 world     | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 |

(4 rows)

El problema con este método es, por supuesto, que debe ejecutarlo manualmente o encontrar una forma de automatizarlo, lo que podría llevar mucho tiempo.

Verificación automática de copia de seguridad de ClusterControl

Ahora, veamos cómo ClusterControl puede automatizar la verificación de las copias de seguridad de PostgreSQL y ayudar a evitar sorpresas o tareas manuales.

En ClusterControl, seleccione su clúster y vaya a la sección "Copia de seguridad", luego seleccione "Crear copia de seguridad".

La función de copia de seguridad de verificación automática está disponible para las copias de seguridad programadas. Entonces, elijamos la opción "Programar copia de seguridad".

Al programar una copia de seguridad, además de seleccionar las opciones comunes como el método o el almacenamiento, también debe especificar la programación/frecuencia.

En el siguiente paso, puede comprimir y cifrar su copia de seguridad y especificar el periodo de retención. Aquí, también tiene la función "Verificar copia de seguridad".

Para usar esta función, necesita un host dedicado (o VM) que no es parte del clúster.

ClusterControl instalará el software y restaurará la copia de seguridad en este host . Después de la restauración, puede ver el icono de verificación en la sección Copia de seguridad de ClusterControl.

Conclusión

Como mencionamos, las copias de seguridad son obligatorias en cualquier entorno, pero la copia de seguridad no es una copia de seguridad si no puede usarla. Por lo tanto, debe asegurarse de que su copia de seguridad sea útil en caso de que la necesite algún día. En este blog, mostramos diferentes formas de verificar su copia de seguridad para evitar problemas cuando desee restaurarla.