Ghidul final pentru mysqldump – un program de backup al bazei de date
mysqldump este un utilitar de linie de comandă furnizat de MySQL care vă permite să creați copii de siguranță logice ale bazelor de date MySQL. Acest instrument este utilizat pe scară largă pentru crearea de copii de rezervă ale bazelor de date, exportul bazelor de date către alte servere și migrarea bazelor de date între versiunile MySQL sau sisteme diferite. Este o modalitate simplă, puternică și flexibilă de a face copii de siguranță și de a restaura baze de date, ceea ce îl face un instrument esențial pentru orice administrator de baze de date.
Acest ghid final acoperă tot ce trebuie să știți despre mysqldump, inclusiv instalarea, sintaxa, exemple de utilizare și cele mai bune practici.
Ce este mysqldump?
- mysqldump creează o copie de rezervă logică a unei baze de date MySQL, ceea ce înseamnă că scoate datele și structura sub formă de comenzi SQL.
- Aceste comenzi SQL pot fi apoi utilizate pentru a recrea baza de date, ceea ce face ca mysqldump să fie ideal pentru backup-uri, migrări și transfer de date.
- Acesta acceptă exportul de baze de date întregi, tabele individuale sau date specifice, cu diverse opțiuni de personalizare.
Sintaxa de bază a mysqldump
Sintaxa de bază a comenzii mysqldump este:
- [OPTIONS]: Steaguri opționale care modifică comportamentul mysqldump (de exemplu, specificarea utilizatorului, parolei, gazdei etc.).
- database_name: Numele bazei de date pe care doriți să o salvați.
- [tables]: (Opțional) Tabele specifice care urmează să fie salvate. Dacă se omite, se face copia de siguranță a întregii baze de date.
- > backup_file.sql: Redirecționează rezultatul către un fișier (backup_file.sql), care va conține comenzile SQL pentru recrearea bazei de date.
Condiții prealabile
- MySQL sau MariaDB instalat pe server sau client.
- Un cont de utilizator cu privilegii suficiente (permisiuni SELECT și LOCK) pentru baza de date care urmează să fie salvată.
- Acces la linia de comandă (terminal) pe Linux/macOS sau command prompt pe Windows.
Opțiuni utilizate frecvent cu mysqldump
- -u sau –user: Specifică numele de utilizator MySQL.
- -p sau –password: Solicită parola utilizatorului.
- -h sau –host: Specifică gazda (de exemplu, localhost sau adresa IP).
- -P sau –port: Specifică numărul portului pentru serverul MySQL.
- –databases: Vă permite să salvați mai multe baze de date.
- –all-databases: Efectuează copia de siguranță a tuturor bazelor de date de pe server.
- –no-data: Exportează numai structura bazei de date (fără date).
- –single-transaction: Realizează un instantaneu consistent al bazei de date, util pentru tabelele InnoDB.
- –add-drop-table: Adaugă instrucțiuni DROP TABLE înainte de instrucțiunile CREATE TABLE, asigurând că tabelele sunt abandonate și recreate la restaurare.
- –routines: Include proceduri stocate și funcții în backup.
- –triggers: Include declanșatoare în copia de rezervă.
- –compress: Comprimă datele trimise între client și serverul MySQL, dacă este acceptat.
Exemple de bază
Exemplul 1: Copierea de rezervă a unei singure baze de date
- Solicită parola utilizatorului root.
- Dumpează conținutul bazei de date nume_bază în fișierul_de_salvare.sql.
Exemplul 2: Copierea de rezervă a mai multor baze de date
- Utilizați opțiunea –databases urmată de numele bazelor de date.
- Dumpează baza de date 1 și baza de date 2 în multiple_databases_backup.sql.
Exemplul 3: Copierea de rezervă a tuturor bazelor de date
- Face o copie de rezervă a tuturor bazelor de date de pe serverul MySQL.
- Include declarațiile CREATE DATABASE și USE, facilitând restaurarea tuturor bazelor de date.
Exemplul 4: Copierea de rezervă a unui anumit tabel
- Dumpează structura și datele unui anumit tabel (nume_tabel) din nume_bază_de_date în table_backup.sql.
Exemplul 5: Copierea de rezervă numai a structurii bazei de date
- Opțiunea –no-data exclude datele și exportă numai structurile tabelelor.
Exemple avansate
Exemplul 6: Utilizarea –single-transaction pentru baze de date mari
- Opțiunea –single-transaction este ideală pentru tabelele InnoDB și asigură o copie de rezervă consistentă fără blocarea tabelelor.
- Recomandată pentru baze de date mari, deoarece minimizează timpul în care tabelele sunt blocate.
Exemplul 7: Copie de rezervă comprimată
- Utilizează gzip pentru a comprima din mers rezultatul misqldump.
- Rezultă un fișier de rezervă mai mic (backup_file.sql.gz), economisind spațiu pe disc.
Exemplul 8: Includerea procedurilor stocate, a funcțiilor și a declanșatoarelor
- Opțiunea –routines include proceduri stocate și funcții.
- Opțiunea —triggers include declanșatoarele în copia de rezervă.
Exemplul 9: Excluderea anumitor tabele
- Opțiunea –ignore-table exclude un anumit tabel din backup.
- Puteți repeta această opțiune pentru fiecare tabel pe care doriți să îl excludeți.
Restaurarea unei copii de rezervă mysqldump
Pentru a restaura o copie de rezervă creată cu mysqldump, utilizați comanda mysql:
Exemplul 10: Restaurarea unei singure baze de date
- Solicită parola rădăcină.
- Restaurează baza de date din backup_file.sql.
Exemplul 11: Restaurarea mai multor baze de date sau a tuturor bazelor de date
- Această comandă poate fi utilizată pentru a restaura mai multe baze de date sau toate bazele de date dacă all_databases_backup.sql a fost creat utilizând opțiunile –databases sau –all-databases.
Exemplul 12: Restaurarea de la o copie de rezervă comprimată
- Folosește gunzip pentru a decomprima din mers fișierul de rezervă și trimite rezultatul către comanda mysql.
Cele mai bune practici pentru utilizarea mysqldump
- Utilizați –single-transaction pentru InnoDB:
- Această opțiune asigură o copie de rezervă consistentă fără blocarea tabelelor bazei de date, ceea ce este deosebit de important pentru bazele de date mari.
- Programați backup-uri regulate:
- Utilizați cron jobs pe Linux pentru a automatiza procesul de backup. De exemplu, creați un job de backup zilnic:0 2 * * * * mysqldump -u root -pYourPassword database_name > /path/to/backup/database_name_$(date \%F).sql
- Acest job creează o copie de siguranță în fiecare zi la ora 2 AM.
- Utilizați cron jobs pe Linux pentru a automatiza procesul de backup. De exemplu, creați un job de backup zilnic:
- Păstrați copiile de rezervă în afara site-ului:
- Stocați copiile de siguranță pe un alt server sau pe un spațiu de stocare în cloud, cum ar fi AWS S3 sau Google Drive, pentru a asigura recuperarea datelor în cazul unei defecțiuni hardware.
- Verificați copiile de rezervă:
- Verificați periodic dacă copiile de rezervă pot fi restaurate corect, testându-le într-un mediu separat.
- Utilizați compresia pentru bazele de date mari:
- Utilizați gzip sau bzip2 pentru a comprima fișierele de backup și a economisi spațiu pe disc.
- Considerații privind securitatea:
- Evitați specificarea parolelor direct în linia de comandă, deoarece acestea pot fi vizibile pentru alți utilizatori. În schimb, utilizați un fișier de configurare sau solicitați parola.
- Protejați fișierele de rezervă cu permisiuni de fișier adecvate pentru a preveni accesul neautorizat.
Concluzie
mysqldump este un instrument versatil și puternic pentru gestionarea backup-urilor în bazele de date MySQL. Prin înțelegerea sintaxei și a opțiunilor sale, puteți crea backup-uri personalizate care să corespundă nevoilor dvs. specifice, fie că aveți de-a face cu baze de date mari, migrați date sau configurați backup-uri automate. Urmați cele mai bune practici pentru a vă asigura că datele dvs. sunt întotdeauna în siguranță, securizate și restaurabile atunci când este necesar.