Situatie
Asigurarea disponibilității și restaurării rapide a datelor în caz de incidente (ștergere accidentală, defecțiuni, migrare etc.) prin backup automatizat al bazei de date MySQL.
Backup
Ce ai nevoie:
-
Acces la serverul unde rulează baza de date MySQL
-
Un utilizator MySQL cu permisiuni de
SELECT
șiLOCK TABLES
-
Acces SSH și permisiuni de cron (pentru backup automat)
-
Spațiu de stocare local sau remote (ex: S3, FTP, NFS, etc.)
Solutie
Pasi de urmat
1. Crează un utilizator dedicat pentru backup (opțional, dar recomandat)
Conectează-te în MySQL:
mysql -u root -p
Rulează:
CREATE USER ‘backupuser’@’localhost’ IDENTIFIED BY ‘parolaPuternica’;
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT ON *.* TO ‘backupuser’@’localhost’;
FLUSH PRIVILEGES;
2. Scrie un script de backup folosind mysqldump
Creează un fișier script, de exemplu mysql_backup.sh
#!/bin/bash
# Configurare
USER=”backupuser”
PASSWORD=”parolaPuternica”
HOST=”localhost”
DATABASE=”nume_baza”
BACKUP_DIR=”/var/backups/mysql”
DATE=$(date +”%Y-%m-%d_%H-%M”)
FILENAME=”$DATABASE-$DATE.sql.gz”
# Creare director de backup dacă nu există
mkdir -p $BACKUP_DIR
# Backup cu compresie
mysqldump -u $USER -p$PASSWORD -h $HOST $DATABASE | gzip > $BACKUP_DIR/$FILENAME
# Șterge backup-urile mai vechi de 7 zile
find $BACKUP_DIR -type f -name “*.gz” -mtime +7 -exec rm {} \;
3. Fă scriptul executabil:
chmod +x mysql_backup.sh
4. Testează scriptul:
./mysql_backup.sh
Verifică dacă fișierul .sql.gz
a fost creat în directorul setat.
5. Automatizează backup-ul cu cron
Deschide crontab:
crontab -e
Adaugă o linie pentru a rula backup-ul zilnic la ora 2:00 AM:
0 2 * * * /cale/absoluta/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1
Rezultat:
-
Backup zilnic automat al bazei de date
-
Fișierele sunt păstrate local și șterse automat după 7 zile.
Leave A Comment?