Migrar datos Postgre SQL

Hola a tod@s

PostgreSQL es un sistema o motor de bases de datos compatible con los servicios de OVHcloud y la mayoría de las herramientas más populares del mercado. Es compatible con diversos modelos de datos para crear aplicaciones orientadas a objetos, potentes y escalables.

En este post quiero dejar “la nota” de la migración de datos de una Base de datos Postgres a otra bbdd.

La forma más simple con la que me he encontrado para hacer el backup y restaurar la bbdd es con pg_dump, que es una herramienta de línea de comandos proporcionada por PostgreSQL para realizar copias de seguridad de una base de datos.

Asegurate de tener permisos necesarios.

Para comprobar si tenemos instalada la herramienta pg_dump con el comando:

pg_dump --version

Si no tenemos instalada la herramienta puedes hacerlo de estas formas:

  • En Linux: Dependiendo de la distribución, utilizarás apt (para distribuciones basadas en Debian como Ubuntu), yum (para distribuciones basadas en Red Hat como CentOS), o dnf (para distribuciones más recientes de Fedora). Por ejemplo, en Ubuntu, usarías:
    sudo apt-get update sudo apt-get install postgresql
  • En macOS: Puedes usar Homebrew para instalar PostgreSQL:
    brew update brew install postgresql
  • En Windows

En Windows, puedes descargar el instalador desde la página oficial de PostgreSQL:

  1. Ve a PostgreSQL: Windows installers .
  2. Descarga el instalador para Windows.
  3. Sigue las instrucciones del instalador.

Crear la Copia de Seguridad con pg_dump

Utilizamos pg_dump para crear la copia de seguridad. Por ejemplo:

pg_dump -h direccionhost -U username -W nombrebbdd > dbbackup.sql
  • -h direccionhost: url o ip del host de la bbdd.
  • -U username: Es el nombre de usuario.
  • -W: Solicitará la contraseña.
  • nombrebbdd: Es el nombre de la base de datos.
  • dbbackup.sql: Es el archivo de salida.

Seguidamente nos preguntará la contraseña para guardar los datos.

Restaurar la Copia de Seguridad con psql

Utilizamos psql para restaurar la copia de seguridad. Por ejemplo:

psql -h direccionhost -U username -d nombrebbdd -f dbbackup.sql
  • -h direccionhost: url o ip del host de la bbdd.
  • -U username: Es el nombre de usuario.
  • -d nombrebbdd: Es el nombre de la base de datos.
  • -f dbbackup.sql: Es el archivo de salida.

Seguidamente nos preguntará la contraseña para subir los datos.


Copias con los datos de las tablas:

Crear la Copia de Seguridad junto con todos los datos con pg_dump

Utilizamos pg_dump para crear la copia de seguridad. Por ejemplo:

pg_dump -h direccionhost -U username -W -F c -b -v -f "./archivo_para_guardar.dmp" nombrebbdd
  • -h direccionhost: url o ip del host de la bbdd.
  • -U username: Nombre de usuario.
  • -W: Solicitará la contraseña.
  • -F c:Esta opción especifica el formato del archivo de salida. La c significa un archivo de formato “custom”, que es un formato comprimido y más eficiente para backups grandes. Este formato es también más flexible para restauraciones selectivas.
  • -b: Incluye los objetos grandes (LOBs) en el dump. Esto es útil si tu base de datos contiene datos binarios grandes almacenados en campos blob.
  • -v: Activa el modo verboso, que proporciona detalles adicionales sobre el proceso de dump mientras se ejecuta. Esto es útil para diagnosticar problemas o para entender más acerca de qué está haciendo el comando.
  • -f "./archivo_backup.dmp": Ruta y archivo de salida.
  • nombrebbdd: Nombre de la base de datos.

Seguidamente nos preguntará la contraseña para guardar los datos.

Restaurar la Copia de Seguridad con pg_restore

Utilizamos pg_restore para restaurar la copia de seguridad:

pg_restore -h direccionhost -U username -d nombrebbdd -c -O -x -v "./archivo_backup.dmp"
  • -h direccionhost: url o ip del host de la bbdd.
  • -U username: Es el nombre de usuario.
  • -d nombrebbdd: Es el nombre de la base de datos.
  • -c: Esta opción es para limpiar (dropear) las bases de datos antes de restaurarlas. Básicamente, eliminará objetos existentes que tengan los mismos nombres que los objetos en el backup antes de realizar la restauración.
  • -O: Omite (no restaura) los identificadores de propiedad en los objetos restaurados. Esto es útil si estás restaurando datos en una base de datos donde el usuario propietario podría ser diferente del especificado en el backup.
  • -x: Evita la restauración de los privilegios (ACLs). Usar esta opción asegura que no se intentará restaurar ningún dato de configuración de seguridad con el backup.
  • -v: Modo verboso. Muestra detalles adicionales sobre el proceso de restauración, lo cual es útil para diagnósticos o simplemente para más información sobre lo que pg_restore está haciendo.
  • -f dbbackup.sql: Es el archivo de salida.

Seguidamente nos preguntará la contraseña.

Y si tenemos que importar en otro esquema ¿?

Utilizamos el comando para mover a otro esquema:

ALTER TABLE esquema_actual.nombre_tabla SET SCHEMA esquema_deseado;

Y con esto ya tendremos los datos migrados!

Espero que os sirva de ayuda.

Salu2

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *