Red Hat Training

A Red Hat training course is available for RHEL 8

8.3.4. Copia de seguridad de los datos de PostgreSQL

Para hacer una copia de seguridad de los datos de PostgreSQL, utilice uno de los siguientes métodos:

  • Volcado SQL
  • Copia de seguridad a nivel de sistema de archivos
  • Archivo continuo

8.3.4.1. Copia de seguridad de los datos de PostgreSQL con un volcado SQL

8.3.4.1.1. Realización de un volcado SQL

El método de volcado SQL se basa en la generación de un archivo con comandos SQL. Cuando este archivo se vuelve a cargar en el servidor de la base de datos, recrea la base de datos en el mismo estado en el que se encontraba en el momento del volcado. El volcado de SQL está garantizado por la utilidad pg_dump que es una aplicación cliente de PostgreSQL. El uso básico del comando pg_dump es tal que el comando escribe su resultado en la salida estándar:

pg_dump dbname > dumpfile

El archivo SQL resultante puede estar en formato de texto o en otros formatos diferentes, lo que permite el paralelismo y un control más detallado de la restauración de objetos.

Puede realizar el volcado SQL desde cualquier host remoto que tenga acceso a la base de datos. La utilidad pg_dump utilidad no opera con permisos especiales, pero debe tener un acceso de lectura a todas las tablas de las que quiera hacer una copia de seguridad. Para realizar una copia de seguridad de toda la base de datos, debe ejecutarla como superusuario de la base de datos.

Para especificar con qué servidor de bases de datos pg_dump contactará, utilice las siguientes opciones de la línea de comandos:

  • La opción -h para definir el host.

    El host por defecto es el local o el especificado por la variable de entorno PGHOST.

  • La opción -p para definir el puerto.

    El puerto por defecto está indicado por la variable de entorno PGPORT o por el puerto por defecto compilado.

Nota

Tenga en cuenta que pg_dump vuelca sólo una base de datos. No vuelca la información sobre los roles o los tablespaces porque dicha información se refiere a todo el clúster.

Para hacer una copia de seguridad de cada base de datos de un clúster determinado y conservar los datos de todo el clúster, como las definiciones de roles y espacios de tablas, utilice el comando pg_dumpall:

pg_dumpall > dumpfile
8.3.4.1.2. Restauración de la base de datos a partir de un volcado SQL

Para restaurar una base de datos a partir de un volcado SQL:

  1. Crear una nueva base de datos (dbname):

    creadob dbname
  2. Asegúrese de que todos los usuarios que poseen objetos o a los que se les concedieron permisos sobre objetos en la base de datos volcada ya existen.

    Si estos usuarios no existen, la restauración no consigue recrear los objetos con la propiedad y los permisos originales.

  3. Ejecute la psql utilidad para restaurar un volcado de archivos de texto creado por la pg_dump utilidad:

    psql dbname < dumpfile

donde dumpfile es la salida del comando pg_dump.

Si desea restaurar un volcado de archivos que no sean de texto, utilice la utilidad pg_restore:

pg_restore archivo de texto no plano
8.3.4.1.2.1. Restaurar una base de datos en otro servidor

El volcado de una base de datos directamente de un servidor a otro es posible porque pg_dump y psql pueden escribir en y leer de tuberías.

Para volcar una base de datos de un servidor a otro, ejecute

pg_dump -h host1 dbname | psql -h host2 dbname
8.3.4.1.2.2. Manejo de errores SQL durante la restauración

Por defecto, psql continúa ejecutándose si se produce un error SQL. En consecuencia, la base de datos se restaura sólo parcialmente.

Si quiere cambiar este comportamiento por defecto, utilice uno de los siguientes métodos:

  • Haga que psql salga con un estado de salida de 3 si se produce un error SQL estableciendo la variable ON_ERROR_STOP:

    psql --set ON_ERROR_STOP=on dbname < dumpfile
  • Especifique que todo el volcado se restaura como una única transacción para que la restauración se complete o se cancele por completo utilizando psql con una de las siguientes opciones:

    psql -1

    o

    psql --single-transaction

    Tenga en cuenta que cuando se utiliza este enfoque, incluso un error menor puede cancelar una operación de restauración que ya se ha ejecutado durante muchas horas.

8.3.4.1.3. Ventajas y desventajas de un volcado SQL

Un volcado de SQL tiene las siguientes ventajas en comparación con otros métodos de copia de seguridad de PostgreSQL:

  • Un volcado SQL es el único método de copia de seguridad de PostgreSQL que no es específico de la versión del servidor. La salida de la utilidad pg_dump puede recargarse en versiones posteriores de PostgreSQL, lo que no es posible para las copias de seguridad a nivel de sistema de archivos o el archivado continuo.
  • Un volcado de SQL es el único método que funciona cuando se transfiere una base de datos a una arquitectura de máquina diferente, como pasar de un servidor de 32 bits a uno de 64 bits.
  • Un volcado SQL proporciona volcados internamente consistentes. Un volcado representa una instantánea de la base de datos en el momento en que pg_dump comenzó a ejecutarse.
  • La utilidad pg_dump utilidad no bloquea otras operaciones en la base de datos cuando se está ejecutando.

Una desventaja de un volcado de SQL es que lleva más tiempo en comparación con la copia de seguridad a nivel de sistema de archivos.

8.3.4.1.4. Recursos adicionales

Para más información sobre el volcado de SQL, consulte la documentación de PostgreSQL.