Cum să faci backup și restore la o bază de date — pg_dump, mysqldump
In this tutorial, you'll learn about Cum să faci backup și restore la o bază de date. We cover key concepts, practical examples, and best practices.
Cum să faci backup și restore la o bază de date PostgreSQL și MySQL folosind pg_dump, mysqldump și instrumente native, pentru a preveni pierderea datelor în caz de avarie sau eroare umană.
Problema
Fără un plan de backup, datele unei aplicații pot fi pierdute definitiv din cauza unui accident (ștergere accidentală, eroare de cod, atac ransomware) sau a unei defecțiuni hardware. Restaurarea fără un backup recent înseamnă ore sau zile de muncă pierdută.
The Wrong Way
Backup manual, fără scriptare sau verificare:
pg_dump my_database > backup.sql
# Fără verificare, fără compresie, fără timestamp
# Peste o lună nu știi ce conține backup.sql
Problema: Backupul suprascrie fișierul anterior, nu este comprimat, și nu știi dacă s-a generat corect până când încerci să restaurezi.
The Right Way
Backup structurat, comprimat și verificat:
# Backup PostgreSQL cu timestamp și compresie
pg_dump -h localhost -U postgres \
--format=custom \
--compress=9 \
--file="db_backup_$(date +%Y%m%d_%H%M%S).dump" \
my_database
Output:
db_backup_20250115_143022.dump
Backup PostgreSQL
# Backup complet (custom format, recomandat)
pg_dump -U postgres --format=custom \
--compress=9 \
--file=prod_backup.dump \
my_database
# Backup doar schema (fără date)
pg_dump -U postgres --schema-only \
--file=schema.sql \
my_database
# Backup doar datele unei tabele
pg_dump -U postgres --table=orders \
--data-only \
--file=orders_backup.sql \
my_database
Restore PostgreSQL
# Restore din format custom
pg_restore -U postgres -d my_database \
--clean \
--if-exists \
prod_backup.dump
Backup MySQL
# Backup complet MySQL
mysqldump -h localhost -u root -p \
--databases my_database \
--routines \
--triggers \
--single-transaction \
--result-file=mysql_backup_$(date +%Y%m%d).sql
# Backup comprimat direct
mysqldump -u root -p my_database | gzip > mysql_backup.sql.gz
Restore MySQL
mysql -u root -p my_database < mysql_backup.sql
# Din fișier comprimat
gunzip < mysql_backup.sql.gz | mysql -u root -p my_database
Step-by-Step Fix
1. Creează un script de backup automat
#!/bin/bash
# backup_db.sh
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backups"
DB_NAME="my_database"
pg_dump -U postgres \
--format=custom \
--compress=9 \
--file="${BACKUP_DIR}/${DB_NAME}_${TIMESTAMP}.dump" \
${DB_NAME}
# Verifică integritatea
pg_restore --list "${BACKUP_DIR}/${DB_NAME}_${TIMESTAMP}.dump" \
> /dev/null 2>&1 && echo "Backup valid" || echo "Backup corupt"
2. Programează backup automat (cron)
# Zilnic la 3:00 AM
0 3 * * * /usr/local/bin/backup_db.sh
# Șterge backupurile mai vechi de 30 de zile
0 4 * * * find /backups -name "*.dump" -mtime +30 -delete
3. Testează restaurarea periodic
Rulează restaurarea pe un mediu de test cel puțin o dată pe lună pentru a verifica integritatea backupurilor.
Prevention Tips
- Folosește format custom (
--format=custom) pentru backupuri PostgreSQL — suportă compresie și restaurare selectivă - Stochează backupurile în locații diferite (local + cloud)
- Testează restaurarea periodic — un backup netestat este un backup inexistent
- Criptează backupurile care conțin date sensibile
Greșeli comune cu backup
- Backup fără compresie — fișiere uriașe care umplu discul rapid
- Un singur backup — dacă fișierul este corupt, nu ai alternativă
- Backup pe același disc — la defectarea discului pierzi și datele și backupul
- Fără testarea restaurării — descoperi că backupul e corupt doar când ai nevoie
- Omisiunea rutinelor și triggerelor —
mysqldumpfără--routines --triggers
Exercițiu practic
Scrie un script bash care face backup complet al unei baze de date PostgreSQL, îl comprimă, îl salvează cu timestamp, și transmite o notificare prin syslog. Programează-l în cron să ruleze zilnic.
FAQ
Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Uneltele DodaTech se integrează nativ cu bazele de date pentru productivitate și securitate sporite.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro