Guía de Backup y Restauración
Procedimientos técnicos para generar backups en formato SQL legible, incluyendo estructuras, datos y procedimientos almacenados, y restaurarlos en otro servidor.
PostgreSQL: Backup y Restauración
Backup en formato SQL legible
PGPASSWORD='tu_clave_segura' pg_dump -h <host> -p <puerto> -U <usuario> -d <base_de_datos> -F p -f <ruta>/archivo.sql
- El archivo generado contiene sentencias
CREATE TABLE,INSERT INTO, funciones y procedimientos. - Puede restaurarse directamente en otro servidor con
psql.
Backup completo con DROP, CREATE, INSERT (sin privilegios ni propietarios)
Para generar un archivo SQL legible que incluya toda la estructura y datos de la base de datos PostgreSQL, sin sentencias de privilegios ni propietarios, usá el siguiente comando:
PGPASSWORD='tu_clave_segura' pg_dump -h <host> -p <puerto> -U <usuario> -d <base_de_datos> -F p --clean --if-exists --no-owner --no-privileges -f <ruta>/backup_completo.sql
--clean: agregaDROPantes de cada objeto.--if-exists: evita errores si el objeto no existe.--no-owner: omite sentenciasALTER OWNER.--no-privileges: omite sentenciasGRANT.- Este archivo puede ejecutarse directamente en otro servidor PostgreSQL usando
psql.
Restauración en otro servidor
psql -h <nuevo_host> -p <puerto> -U <usuario> -d <nueva_db> -f <ruta>/archivo.sql
- La base de datos
nueva_dbdebe existir previamente. - Usar
createdbsi necesitás crearla:
createdb -h <nuevo_host> -U <usuario> <nueva_db>
Autenticación con archivo .pgpass
Si no querés usar PGPASSWORD en cada comando, podés crear un archivo oculto que almacene la clave.
Paso a paso para principiantes
- Abrí tu terminal.
- Creá el archivo:
- Editalo con tu editor favorito:
- Agregá una línea con este formato:
- Ejemplo real:
- Guardá y cerrá el archivo.
- Asigná permisos seguros:
- Ahora podés usar
pg_dumpsin escribir la clave:
touch ~/.pgpass
nano ~/.pgpass
<host>:<puerto>:<base_de_datos>:<usuario>:<clave>
192.168.1.100:5432:mi_db:postgres:clave123
chmod 600 ~/.pgpass
pg_dump -h 192.168.1.100 -p 5432 -U postgres -d mi_db -F p -f ~/backups/mi_db.sql
MySQL / MariaDB: Backup y Restauración
Backup completo en formato SQL
mysqldump -h <host> -P <puerto> -u <usuario> -p --routines --triggers <base_de_datos> > <ruta>/archivo.sql
--routines: incluye procedimientos almacenados.--triggers: incluye triggers asociados a tablas.- El archivo contiene
CREATE DATABASE,CREATE TABLE,INSERT,DELIMITER,CREATE PROCEDURE.
Backup completo con DROP, CREATE, INSERT (sin privilegios ni propietarios)
Para generar un archivo SQL legible que incluya toda la estructura y datos de la base de datos MySQL/MariaDB, sin sentencias de privilegios ni propietarios, usá el siguiente comando:
mysqldump -h <host> -P <puerto> -u <usuario> -p --routines --triggers --skip-add-drop-user --skip-comments --skip-set-charset <base_de_datos> > <ruta>/backup_completo.sql
--skip-add-drop-user: evita sentenciasDROP USER.--skip-comments: elimina comentarios innecesarios.--skip-set-charset: evita configuraciones regionales que puedan fallar en otro servidor.- Este archivo puede ejecutarse directamente en otro servidor MySQL/MariaDB usando
mysql.
Restauración en otro servidor
mysql -h <nuevo_host> -P <puerto> -u <usuario> -p <nueva_db> < <ruta>/archivo.sql
- La base de datos
nueva_dbdebe existir previamente. - Podés crearla con:
CREATE DATABASE nueva_db;
Buenas prácticas
- Automatizar backups con cron o scripts de shell.
- Versionar los archivos con fecha:
mi_db_$(date +%F).sql - Validar restauración periódica en entornos de staging.
- Incluir
--routinesy--triggerssi hay lógica de negocio en el servidor.