En este artículo trataré acerca de cómo realizar backups y restores de bases de datos en PostgreSQL. Los comandos más utilizados para esta tarea son pg_restore y pg_dump, los cuales revisaremos a continuación. El sistema operativo escogido para estas pruebas es Linux CentOS:
Primero, cómo respaldar una base de datos
pg_dump es el comando usado para sacar un backup completo (esquema y datos) de la base de datos. Puedes usarlo en tu línea de comando bash junto con el parámetro de ubicación donde guardará el archivo. En este caso, estoy guardando el backup de mi base de datos llamada ‘bitacoradba’ con formato .tar (-F t) en la carpeta ‘backups’.
$ pg_dump -F t bitacoradba > backups/bitacoradba_bak.tar
Si sólo deseas respaldar el esquema puedes usar el parámetro -s; o el parámetro -a para sólo data. Para más información de otras opciones que puedes usar con pg_dump puedes revisar la documentación oficial aquí.
Segundo, cómo restaurar una base de datos
1. Crea una base de datos vacía con el nombre de la base de datos a restaurar. Usa el comando createdb desde bash para crear una base de datos en el servidor de base de datos. En mi caso, he llamado a mi base de datos ‘bitacoradba’:
$ createdb bitacoradba
Podemos verificar que la base de datos se creó correctamente entrando al programa ‘psql’ y, una vez dentro, el comando \l para listar las bases existentes.
$ psql
psql (12.5)
Type “help” for help.
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
————-+———-+———-+————-+————-+———————–
bitacoradba | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
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
(4 rows)
2. Restaura un backup sobre de la base de datos creada: Ahora restauraremos el backup generado en el paso anterior con el comando ‘pg_restore’, el parámetro del nombre de la base de datos destino (–dbname) y la ubicación del archivo de backup:
-bash-4.2$ pg_restore –dbname=bitacoradba –verbose /backups/bitacoradba_bak.tar
pg_restore: connecting to database for restore
pg_restore: creating SCHEMA “…”
pg_restore: creating TABLE “…”
pg_restore: creating SEQUENCE “…”
pg_restore: creating SEQUENCE OWNED BY “…”
pg_restore: creating DEFAULT “…”
pg_restore: processing data for table “…”
pg_restore: executing SEQUENCE SET …
pg_restore: creating CONSTRAINT “…”
pg_restore: creating FK CONSTRAINT “..”
Puedes notar que también he usado el parámetro –verbose para obtener información a tiempo real del objeto siendo procesado. Si deseas saber qué otros parámetros de restauración hay disponibles puedes leer este link.
Si tienes alguna duda, comentarios o sugerencias, me puedes enviar un correo a bitácoradeundba@gmail.com.