Restaurarea unei baze de date MySQL de dimensiuni mari poate deveni o provocare dacă încerci să folosești interfețe web precum phpMyAdmin. Din cauza limitărilor impuse de configurările implicite din PHP (cum ar fi directivele upload_max_filesize, post_max_size, memory_limit și max_execution_time), încărcarea unui fișier SQL voluminos va eșua frecvent prin expirarea timpului de conectare (timeout) sau prin erori de memorie epuizată.
Soluția recomandată: restaurarea prin linia de comandă via SSH
Cea mai sigură, rapidă și stabilă metodă de importare a datelor este utilizarea directă a utilitarului de linie de comandă mysql prin intermediul unei sesiuni SSH conectate la server:
mysql -u dbuser -p -h dbhost.yoursite.com dbname < /cale/catre/backup.sql
Detalierea parametrilor comenzii
-u dbuser: reprezintă numele de utilizator alocat bazei de date MySQL.-p: semnalizează că sistemul va solicita introducerea parolei într-un mod securizat, fără a o afișa în clar pe ecran sau în istoricul comenzilor de terminal.-h dbhost.yoursite.com: specifică adresa serverului MySQL pe care rulează serviciul (pe un server dedicat sau VPS obișnuit, această valoare este de regulălocalhostsau127.0.0.1).dbname: numele exact al bazei de date în care dorești să imporți tabelele și datele.< /cale/catre/backup.sql: operatorul de redirecționare a intrării standard (stdin), care transmite instrucțiunile SQL din fișierul de rezervă către interpretorul MySQL.
Pași preliminari esențiali înainte de import
Înainte de a rula comanda de restaurare, asigură-te că baza de date destinație există pe server. Dacă nu a fost creată anterior, o poți genera direct din linia de comandă specificând setul de caractere recomandat:
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
Restaurarea directă din fișiere comprimate
Dacă fișierul de backup este salvat într-un format comprimat pentru a economisi spațiu, nu este necesar să îl dezarhivezi complet pe disc înainte de import. Poți utiliza un canal de transfer de date (pipe) pentru a dezarhiva și injecta conținutul direct în MySQL:
# Pentru arhive comprimate cu gzip (.sql.gz):
gunzip -c /cale/catre/backup.sql.gz | mysql -u dbuser -p -h localhost dbname
# Pentru arhive comprimate cu bzip2 (.sql.bz2 sau .tbz):
bzcat /cale/catre/backup.tbz | mysql -u dbuser -p -h localhost dbname
Monitorizarea procesului pentru baze de date gigantice
Dacă fișierul SQL conține mai mulți gigaocteți de date, procesul de execuție poate dura de la câteva minute până la câteva ore. Pentru a urmări progresul în timp real, poți folosi utilitarul de monitorizare pv (Pipe Viewer):
pv /cale/catre/backup.sql | mysql -u dbuser -p -h localhost dbname
Concluzie
Importarea bazelor de date prin consola SSH oferă un control deplin asupra procesului, elimină restricțiile impuse de serverul web și garantează integritatea datelor importate, fiind soluția standard recomandată în administrarea profesională a sistemelor Linux și a bazelor de date MySQL.
Eu am folosit BigDump. Am editat BigDump.php acolo unde a fost necesar, l-am urcat pe server impreuna cu baza de date arhivata, i-am dat permisiile necesare si l-am rulat. In citeva minute problema a fost rezolvata.