Fiind una dintre cele mai importante baze de date disponibile gratuit, MySQL este o alegere populară pentru multe aplicații web. Fiind expusă la internet, aplicația dvs. este expusă atacurilor rău intenționate. Dacă serverul dvs. este compromis, în cel mai bun caz, trebuie să reinstalați aplicația; în cel mai rău caz, vă puteți pierde datele. În plus, este posibil să ajungeți într-o situație în care trebuie să migrați o bază de date de la un server la altul.
La ce este folosit mysqldump?
Instrumentul mysqldump vă asigură atât pentru situațiile de compromitere a serverului, cât și pentru situații de migrare. Funcția sa de bază este de a lua o bază de date MySQL și de a o arunca ca fișier text. Dar nu orice fișier text; fișierul este un set de instrucțiuni SQL. Aceste instrucțiuni, atunci când sunt executate, reconstruiesc baza de date la starea exactă în care se afla atunci când a fost executată dump-ul.
Utilizați mysqldump pentru a crea exporturi ale unei baze de date ca copii de siguranță sau când mutați baza de date pe o nouă gazdă. În ambele cazuri, fișierul text va fi importat înapoi într-un server de baze de date MySQL. Acesta va executa toate instrucțiunile SQL din fișier, care reconstruiește baza de date la starea inițială. Această parte nu folosește comanda mysqldump, dar nici fără acest utilitar nu ar fi posibilă.
Documentele MySQL listează alte metode de a face copii de rezervă, dar acestea au dezavantaje:
- Copiarea la cald a unei baze de date din MySQL Enterprise este o modalitate excelentă de a realiza aceste copii de rezervă - dacă nu vă deranjează prețul Enterprise.
- Copiarea directoarelor de date ale bazei de date poate fi dificilă atunci când vă mutați între sisteme de operare, deoarece destinațiile vor fi diferite.
- Exportarea într-un fișier text delimitat vă va oferi conținutul, dar va trebui să recreați structura.
- Puteți adesea să faceți backup pentru baze de date din programe GUI precum MySQL Workbench. Dar acesta este un proces manual; nu este ceva pe care îl puteți scrie sau include într-o lucrare în lot.
Instalați instrumentul mysqldump
Pentru Windows, verificați instrucțiunile noastre pentru a instala MySQL pe Windows 7 (procesul de instalare este același pentru Windows 10). Pe macOS, consultați instrucțiunile noastre pentru a instala MySQL pe macOS 10.7 (din nou, mai vechi, dar încă aplicabil). Utilizatorii sistemelor Linux bazate pe Ubuntu pot folosi următoarea comandă pentru a instala clientul și utilitățile MySQL:
sudo apt install mysql-client
Extrag un Dump MySQL
Odată instalat, utilizați mysqldump pentru a obține o copie de rezervă completă a unei baze de date.
mysqldump -h [numele sau IP-ul gazdei dvs. DB] -u [numele utilizatorului DB] -p [numele bazei de date] > db_backup.sql
Iată o descriere a steagurilor utilizate în această comandă:
- - h: acest indicator este gazda bazei de date. Poate fi un nume de gazdă complet (de exemplu, gazda mea.domeniu.com) sau o adresă IP. Lăsați necompletat dacă executați comanda pe aceeași gazdă cu serverul MySQL.
- - u: numele dvs. de utilizator.
- - p: dacă ați securizat corect instalarea MySQL, veți avea nevoie de o parolă pentru a vă conecta. Acest flag fără argument vă solicită o parolă atunci când executați comanda. Uneori este util să furnizați parola direct ca argument pentru acest flag, de exemplu, într-un script de rezervă. Dar la prompt, nu ar trebui, deoarece dacă cineva a obținut acces la computerul dvs., ar putea obține această parolă în istoricul comenzilor.
- > db_backup.sql: Această parte îi spune mysqldump să-și direcționeze rezultatul către un fișier. În mod normal, comanda trimite totul în consolă, ceea ce înseamnă că veți vedea mai multe instrucțiuni SQL pe ecran. Simbolul > direcționează rezultatul în fișierul text numit. Dacă acest fișier nu există, este creat automat.
Când este terminat, veți avea un fișier. SQL. Acesta este un fișier text care conține instrucțiuni SQL. Îl puteți deschide în orice editor de text pentru a inspecta conținutul. Iată un export dintr-o bază de date WordPress care arată cum sunt reunite aceste fișiere.
Fișierul este împărțit în secțiuni. Prima secțiune stabilește tabelul pentru comentariile WordPress. A doua secțiune recreează conținutul din acele tabele (în acest exemplu, înregistrările comentariilor). Când reimportați descărcarea MySQL, comanda funcționează prin fișier, execută instrucțiunile și reconstruiește baza de date așa cum a fost.
Importați un fișier de descărcare MySQL
Înainte de a importa fișierul de descărcare, veți avea nevoie de o bază de date deja creată, precum și numele de utilizator și parola valide. De asemenea, ar trebui să aveți toate permisiunile pentru baza de date. Nu aveți nevoie de permisiunea GRANT, dar este mai ușor să le acordați pe toate.
Aflați mai multe despre permisiunile bazei de date înainte de a schimba rolurile de securitate în baza de date.
Pentru a vă reimporta datele, conectați-vă la serverul MySQL cu comanda mysql. Introduceți use [numele bazei de date] la solicitare și înlocuiți numele bazei de date. Introduceți sursă [nume fișier] și înlocuiți numele fișierului de descărcare pe care l-ați preluat anterior.
Când ați terminat, apare o listă de mesaje care menționează că instrucțiunile SQL se execută. Fii atent la erori, dar dacă ai permisiunile potrivite, ar trebui să te descurci.
Când procesul este finalizat, veți avea un duplicat al bazei de date inițiale. Pentru a verifica similitudinea dintre bazele de date, efectuați un alt dump, apoi comparați cele două rezultate. Utilizați un editor de text sau un instrument de diferențiere dedicat pentru a compara cele două fișiere.
Există două diferențe între aceste fișiere, așa cum sunt reprezentate de linii roșii în partea de sus și de jos a barei de derulare din dreapta. Prima este linia care conține numele bazei de date și aceasta este diferită deoarece fișierele au fost denumite diferit. Al doilea este marcajul de timp pentru fișierul dump. Acest lucru este diferit deoarece a doua bază de date a fost recreată după prima. În rest, fișierele sunt exact aceleași, adică bazele de date care le-au generat sunt și ele.
Întrebări frecvente
Cum remediați eroarea mysqldump: acces refuzat atunci când utilizați tabele de blocare?
Solicitați administratorului bazei de date să vă acorde privilegiul LOCK. Dacă acest lucru nu rezolvă problema, încercați să rulați aceeași comandă mysqldump adăugând indicatorul - -single-transaction, cum ar fi [ $ mysqldump --single-transaction] [-u utilizator] [-p DBNAME] > backup.sql
Puteți folosi o clauză „unde” cu mysqldump?
Folosiți o clauză WHERE atunci când creați o copie de rezervă care include numai rândurile care îndeplinesc condiția dată. De exemplu, pentru a descărca datele numai din rândurile cu coloana ID mai mare de 100, introduceți „mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql".