Copia de seguridad de PostgreSQL/MySQL en almacenamiento en la nube | INTROSERV
EUR
european

EUR

usa

USD

Spanish Es
Ex. VAT Ex. VAT 0%

Copia de seguridad de PostgreSQL/MySQL en almacenamiento en la nube

Introducción

La copia de seguridad de bases de datos es uno de los procedimientos más importantes para garantizar la seguridad y la fiabilidad de los sitios web y las aplicaciones. La pérdida de datos puede producirse por muchas razones: fallos del servidor, errores del administrador, problemas con las actualizaciones, malware o, simplemente, errores humanos. Las copias de seguridad periódicas te permiten restaurar rápidamente tu proyecto sin perder datos.

Esta guía explica cómo realizar copias de seguridad de bases de datos PostgreSQL y MySQL, cómo almacenar las copias de seguridad en un servidor Linux remoto mediante rsync o scp, y cómo subirlas a un almacenamiento en la nube utilizando rclone.

Copia de seguridad de PostgreSQL

PostgreSQL proporciona la utilidad estándar pg_dump, que permite crear una copia completa de la base de datos en forma de archivo SQL.

Ejemplo de cómo crear una copia de seguridad:

pg_dump -U myuser -h localhost mydatabase > /backup/mydatabase_$(date +%F).sql

Explicación de los parámetros:

  • -U myuser — nombre de usuario de la base de datos
  • -h localhost — dirección del servidor (se puede omitir si es local)
  • mydatabase — nombre de la base de datos
  • /backup/... — ruta de destino
  • $(date +%F) — añade la fecha actual al nombre del archivo

Para ahorrar espacio, comprime la copia de seguridad inmediatamente:

pg_dump -U myuser mydatabase | gzip > /backup/mydatabase_$(date +%F).sql.gz

Para hacer una copia de seguridad de todas las bases de datos del servidor:

pg_dumpall -U myuser | gzip > /backup/postgres_all_$(date +%F).sql.gz

Copia de seguridad de MySQL

Para MySQL y MariaDB, utilice la utilidad mysqldump.

Ejemplo de copia de seguridad de una sola base de datos:

mysqldump -u myuser -p mydatabase > /backup/mydatabase_$(date +%F).sql

Al ejecutar este comando, el sistema te pedirá la contraseña de usuario.

Para realizar una copia de seguridad de todas las bases de datos:

mysqldump -u myuser -p --all-databases | gzip > /backup/mysql_all_$(date +%F).sql.gz

Para incluir procedimientos almacenados y disparadores, añada las opciones --routines --triggers.

Copia de seguridad en CloudBox

CloudBox de INTROSERV es una solución de almacenamiento en la nube compatible con múltiples protocolos de conexión (incluidos rsync, scp, rsync sobre SSH y WebDAV). La facilidad de uso de CloudBox simplifica considerablemente las tareas de carga, gestión y recuperación de datos.

Puedes utilizarlo como ubicación remota para almacenar las copias de seguridad de tus bases de datos. A continuación se detallan los pasos de configuración y se incluyen ejemplos de scripts.

Paso 1. Obtener acceso a CloudBox

Solicita uno de los planes de CloudBox disponibles en nuestra página web: introserv.com

Tras el pago, el servicio estará disponible en cuestión de minutos. Una vez activado el servicio, recibirás los datos de conexión:

  • dirección del servidor (box#####.introserv.cloud)
  • nombre de usuario (box#####) y contraseña

Paso 2. Conexión y sincronización mediante rsync o scp

Utilizando rsync (recomendado):

rsync -avz -e "ssh -p 22" /backup/ user@cloudbox-server:/path_to_cloudbackups/

Donde:

  • usuario: nombre de usuario de CloudBox
  • cloudbox-server — dirección de conexión
  • /path_to_cloudbackups/ — ruta en CloudBox

Para un funcionamiento automatizado, es recomendable configurar claves SSH:

  1. Generar una clave pública:

    ssh-keygen -t rsa

  2. Copia el contenido del archivo de la clave pública creada, por ejemplo, /root/.ssh/id_rsa.pub, al portapapeles.
  3. Ve a la sección «Perfil» (pasa el cursor por encima del icono de usuario en la esquina superior derecha), añade el contenido de la clave al campo «Claves públicas» y guarda la configuración.

A partir de ese momento, rsync funcionará sin solicitar la contraseña, lo cual resulta muy práctico para las tareas programadas con cron.

Alternativa: scp:

scp /backup/mysql_mydatabase.sql.gz user@cloudbox-server:/path_to_cloudbackups/

Paso 3. Conexión y sincronización con rclone

Si quieres utilizar rclone para interactuar con CloudBox, configúralo de la siguiente manera:

  1. Instala rclone:

    sudo apt install rclone

  2. Inicia la configuración:

    rclone config

Durante la configuración, selecciona:

  • n — para crear un nuevo
  • , p. ej., cloudbox
  • tipo de almacenamiento: elige SFTP o SSH
  • introduce la dirección del servidor con el formato box#####.introserv.cloud, el nombre de usuario con el formato box#####, el puerto (en este caso, el puerto SSH, por defecto el 22) y la ruta del directorio
  • realiza la autorización (si es necesario)

Prueba la conexión:

rclone ls cloudbox:/path_to_cloudbackups/

Copiar los datos de la copia de seguridad:

rclone copy /backup/ cloudbox:/db-backups/ --progress

Sincronizar con eliminación de los archivos que faltan localmente:

rclone sync /backup/ cloudbox:/db-backups/ --progress

Si es necesario, cifra los archivos antes de la transferencia:

rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt

Paso 4. Ejemplo de script de automatización con CloudBox

Crea el script /usr/local/bin/db_backup_cloudbox.sh, por ejemplo:

#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # PostgreSQL pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # MySQL mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Upload to CloudBox rsync -avz -e "ssh -p 22" $BACKUP_DIR/ user@cloudbox-server:/path_to_cloudbackups/$DATE/ # Upload to CloudBox (rclone option, uncomment if used) # rclone copy $BACKUP_DIR/ cloudbox:/db-backups/$DATE/ --progress # Remove backups older than 7 days find /backup/ -type f -mtime +7 -delete

A continuación, añade una tarea cron (en el ejemplo, el script se ejecuta a diario a las 2:00 de la madrugada):

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

Consideraciones importantes:

  • Asegúrate de que la conexión a CloudBox sea estable y de que el ancho de banda sea suficiente.
  • Configura la supervisión: comprueba que los archivos se estén copiando realmente.
  • Comprueba periódicamente la restauración a partir de las copias de seguridad de CloudBox.
  • Si utilizas datos confidenciales, plantéate cifrar las copias de seguridad.

Copia a un servidor Linux remoto a través de SSH

Si desea almacenar las copias de seguridad no solo localmente, sino también en otro servidor, utilice rsync o scp.

Uso de rsync (recomendado, ya que solo copia los cambios):

rsync -avz -e "ssh -p 22" /backup/ [email protected]:/remote_backups/

Explicación de los parámetros:

  • user: nombre de usuario en el servidor remoto
  • servidor.remoto — dirección IP o nombre de dominio del servidor remoto
  • /copias_de_seguridad_remotas/ — ruta para almacenar las copias de seguridad

Para que funcione sin tener que introducir una contraseña, configura las claves SSH:

# Generate SSH keys: ssh-keygen -t rsa # Copy key to remote server: ssh-copy-id [email protected]

A partir de ese momento, rsync funcionará sin solicitar la contraseña, lo cual resulta muy práctico para las tareas programadas con cron.

Alternativa a rsync: utilizar scp:

scp /backup/mysql_mydb.sql.gz [email protected]:/remote_backups/

Copia a un almacenamiento en la nube mediante rclone

Si necesitas almacenar copias de seguridad en la nube (Google Drive, Dropbox, Amazon S3, etc.), utiliza rclone, una herramienta universal para sincronizar datos con diversos servicios en la nube.

Instalación:

sudo apt install rclone

Configuración:

rclone config

Sigue los pasos de configuración interactiva:

  • Selecciona n para crear una nueva conexión
  • Introduce un nombre, por ejemplo, «remote»
  • Selecciona el tipo de almacenamiento (p. ej., s3, drive, dropbox)
  • Introduce las claves de acceso o autoriza la conexión a través del navegador

Comprueba la conexión:

rclone ls remote:path

Ejemplo de cómo subir copias de seguridad a la nube:

rclone copy /backup/ remote:db-backups/ --progress

Comando de sincronización (elimina los archivos que faltan localmente):

rclone sync /backup/ remote:db-backups/ --progress

También puedes cifrar los archivos antes de subirlos:

rclone copy /backup/ remote:db-backups/ --progress --crypt

Seguridad y control

  • Almacena las copias de seguridad en al menos dos ubicaciones: localmente y de forma remota.
  • Comprueba periódicamente que las copias de seguridad se crean y se suben correctamente.
  • Realiza restauraciones de prueba al menos una vez al mes.
  • Cifra los archivos que contengan datos confidenciales si utilizas nubes públicas:

    gpg -c /backup/mysql_mydatabase.sql.gz

  • Asegúrate de que los permisos de los archivos de /backup sean los adecuados y protege las credenciales de tu base de datos.

Restauración desde una copia de seguridad

PostgreSQL:

gunzip < backup.sql.gz | psql -U myuser -d mydatabase

MySQL:

gunzip < backup.sql.gz | mysql -u myuser -p mydatabase

Conclusión

Realizar copias de seguridad de bases de datos PostgreSQL y MySQL es un procedimiento sencillo, pero de vital importancia. Ni siquiera la infraestructura más fiable puede protegerte de los errores humanos o los fallos técnicos. La mejor estrategia consiste en realizar copias de seguridad automáticas periódicas, almacenadas al menos en un servidor externo y en la nube, y realizar pruebas periódicas de recuperación.

Mediante una combinación de pg_dump, mysqldump, rsync, rclone y cron, puedes crear un sistema de copias de seguridad fiable y totalmente automatizado sin necesidad de software de terceros de pago. Este enfoque es fácil de implementar y adecuado para todos los sistemas Linux.

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