Copia de seguridad y restauración de bases de datos PostgreSQL y MySQL | INTROSERV
EUR
european

EUR

usa

USD

Spanish Es
Ex. VAT Ex. VAT 0%

Copia de seguridad y restauración de bases de datos PostgreSQL y MySQL

La copia de seguridad es uno de los procedimientos clave que garantiza la seguridad de los datos. Incluso con un alojamiento confiable, pueden ocurrir errores de aplicación, actualizaciones incorrectas o eliminación accidental de datos.

En esta guía, mostraremos cómo crear y restaurar copias de seguridad de bases de datos PostgreSQL y MySQL utilizando utilidades estándar de línea de comandos: pg_dump y mysqldump.

1. Copia de seguridad de PostgreSQL

1.1. Qué es pg_dump

pg_dump es una utilidad estándar de PostgreSQL para crear una copia de seguridad lógica de la base de datos. Guarda tanto la estructura (DDL) como los datos (DML) en un archivo de texto SQL que se puede usar más tarde para la restauración.

1.2. Sintaxis del comando

pg_dump -U <usuario> -h <host> -p <puerto> -d <base_de_datos> -F p -f <ruta_al_archivo.sql>

1.3. Ejemplo de copia de seguridad

pg_dump -U miusuario -h localhost -d mibase_de_datos -F p -f /backups/mibase_de_datos_$(date +%F).sql

Explicación de parámetros:

  • -U miusuario — nombre de usuario de PostgreSQL;
  • -h localhost — host del servidor (se puede especificar IP);
  • -d mibase_de_datos — nombre de la base de datos;
  • -F p — formato de salida (plain — SQL regular);
  • -f — ruta al archivo donde se guardará la copia de seguridad;
  • $(date +%F) — añade la fecha actual al nombre del archivo (por ejemplo, 2025-11-03).

1.4. Copia de seguridad comprimida

Para reducir el tamaño del archivo, puede usar la compresión gzip:

pg_dump -U miusuario mibase_de_datos | gzip > /backups/mibase_de_datos_$(date +%F).sql.gz

2. Restauración de la base de datos PostgreSQL

2.1. Usando psql

Para restaurar una base de datos desde una copia de seguridad de texto, use:

psql -U miusuario -d mibase_de_datos -f /backups/mibase_de_datos_2025-11-03.sql

Si la copia de seguridad está comprimida:

gunzip -c /backups/mibase_de_datos_2025-11-03.sql.gz | psql -U miusuario -d mibase_de_datos

2.2. Si la base de datos no existe

Primero cree una nueva base de datos:

createdb -U miusuario nuevabase_de_datos

psql -U miusuario -d nuevabase_de_datos -f /backups/mibase_de_datos_2025-11-03.sql

3. Copia de seguridad de MySQL

3.1. Qué es mysqldump

mysqldump es una utilidad estándar para crear volcados de MySQL. Guarda los comandos SQL necesarios para recrear tablas e insertar datos.

3.2. Sintaxis del comando

mysqldump -u <usuario> -p -h <host> <base_de_datos> > <ruta_al_archivo.sql>

3.3. Ejemplo de copia de seguridad

mysqldump -u miusuario -p mibase_de_datos > /backups/mibase_de_datos_$(date +%F).sql

Explicación de parámetros:

  • -u miusuario — nombre de usuario de MySQL;
  • -p — solicita una contraseña;
  • mibase_de_datos — nombre de la base de datos;
  • > — redirige la salida a un archivo.

3.4. Volcado comprimido

mysqldump -u miusuario -p mibase_de_datos | gzip > /backups/mibase_de_datos_$(date +%F).sql.gz

4. Restauración de la base de datos MySQL

4.1. Restauración desde archivo SQL

mysql -u miusuario -p mibase_de_datos < /backups/mibase_de_datos_2025-11-03.sql

4.2. Si la base de datos no existe

Cree una nueva base de datos antes de restaurar:

mysql -u miusuario -p -e "CREATE DATABASE nuevabase_de_datos;"

mysql -u miusuario -p nuevabase_de_datos < /backups/mibase_de_datos_2025-11-03.sql

4.3. Restauración desde volcado comprimido

gunzip -c /backups/mibase_de_datos_2025-11-03.sql.gz | mysql -u miusuario -p mibase_de_datos

5. Recomendaciones de Automatización y Seguridad

5.1. Copias de seguridad automatizadas con Cron

Para procesos de copia de seguridad regulares sin intervención manual, configure la automatización usando cron.

Configuración básica de cron:

# Abrir editor de cron crontab -e

Agregue una línea, por ejemplo:

0 2 * * * /usr/local/bin/db_backup.sh

Este comando ejecutará el script diariamente a las 2:00 AM.

Enfoque avanzado usando un script. Cree /usr/local/bin/db_backup.sh:

#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # Copia de seguridad de PostgreSQL pg_dump -U miusuario mibase_de_datos | gzip > $BACKUP_DIR/postgres_mibase_de_datos.sql.gz # Copia de seguridad de MySQL mysqldump -u miusuario -p mibase_de_datos | gzip > $BACKUP_DIR/mysql_mibase_de_datos.sql.gz # Eliminar copias de seguridad de más de 7 días find /backup/ -type f -mtime +7 -delete

Haga el script ejecutable:

chmod +x /usr/local/bin/db_backup.sh

Y agréguelo a cron:

0 2 * * * /usr/local/bin/db_backup.sh

5.2. Mejores prácticas de seguridad y almacenamiento

  • Almacenamiento fuera del servidor: almacene copias de seguridad en almacenamiento en la nube (AWS S3, Google Cloud) o en unidades externas.
  • Control de acceso: restrinja el acceso a la carpeta /backups, ya que los archivos pueden contener datos confidenciales.

chmod 700 /backup

chmod 600 /backup/*.sql.gz

  • Verificación de integridad: realice restauraciones de prueba mensualmente para verificar la funcionalidad de la copia de seguridad.
  • Confidencialidad: los archivos de copia de seguridad contienen contenidos de la base de datos — trátelos como información confidencial.

Conclusión

Usar pg_dump y mysqldump es una forma fácil, confiable y universal de hacer copias de seguridad de bases de datos PostgreSQL y MySQL. Estas herramientas son adecuadas tanto para copias de seguridad manuales como para procesos automatizados con un esfuerzo mínimo.

Las copias de seguridad regulares son la clave para la estabilidad y seguridad de los datos de su proyecto.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA