Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Erori
  • Deversăm baza de date MySQL și exportăm datele în consolă. Restaurarea unui dump realizat de mysqldump

Deversăm baza de date MySQL și exportăm datele în consolă. Restaurarea unui dump realizat de mysqldump

Dump și restaurați baza de date Date MySQL Este destul de simplu și convenabil să faci de la distanță prin SSH sau direct prin consola serverului. De la distanță, acest lucru se poate face folosind programele Putty/Kitty. De asemenea, puteți efectua exemplele de mai jos pe Windows rulând linia de comandă „ cmd‘. Mai jos sunt exemple despre cum să creați depozite de baze de date MySQL și apoi să le restaurați dacă este necesar, de exemplu pentru site-ul dvs. web, magazinul online sau alt proiect.

Crearea unui Dump de bază de date MySQL

Pentru a executa aceste comenzi, conectați-vă de la distanță la serverul dvs. prin SSH folosind unul dintre programele enumerate mai sus. După conectarea și autorizarea la server/găzduire, puteți introduce comenzile de mai jos.

# Faceți backup pentru o bază de date în fișierul dump_file.sql mysqldump -uroot -p your_base > dump_file.sql # Activat gunoi de ferestre Cel mai bine este să creați o comandă puțin diferită, care să prevină # suprascrierea accidentală a liniilor de descărcare din cauza conversiei caracterelor newline „\r\n” în „\n” mysqldump -uroot -p your_base -r dump_file_utf8.sql # Dacă aveți nevoie de backup numai tabele individuale și nu întreaga bază de date # (specificați numele tabelelor separate printr-un spațiu după numele bazei de date) mysqldump -uroot -p your_base TABLE1 TABLE2 TABLE3 > dump_file.sql # Dacă trebuie să creați o copie de rezervă numai a bazei de date structură fără datele în sine mysqldump -uroot -p -- no-data baza_voastra > dump_file.sql # Faceți copii de rezervă pentru toate bazele de date în fișierul data_actuală.gz mysqldump -uroot -p --all_databases | gzip -c > „data „+%Y-%m-%d””.gz # Backup, unde se creează un INSERT separat pentru fiecare intrare # și cu indicație explicită codificarea bazei de date UTF-8 mysqldump -uroot -p --default-character-set=utf8 your_base --extended-insert=FALSE | gzip -c > „data „+%Y-%m-%d””.gz

# Faceți backup pentru o bază de date în dump_file.sql

mysqldump - uroot - p baza_voastra > dump_file . sql

# Pe Windows, cel mai bine este să creați un dump cu o comandă ușor diferită care împiedică

# suprascriere aleatorie a liniilor de descărcare din cauza conversiei caracterelor newline „\r\n” în „\n”

mysqldump - uroot - p your_base - r dump_file_utf8 . sql

# Dacă aveți nevoie de backup numai pentru tabele individuale, și nu pentru întreaga bază de date

# (indicați numele tabelelor separate printr-un spațiu după numele bazei de date)

mysqldump - uroot - p baza_voastra TABLE1 TABLE2 TABLE3 > dump_file . sql

# Dacă trebuie să faceți backup numai pentru structura bazei de date fără datele în sine

mysqldump - uroot - p -- fără date baza dvs. > fișier_dump . sql

# Faceți backup pentru toate bazele de date în fișierul current_date.gz

mysqldump - uroot - p -- all_databases | gzip - c > „data „+%Y-%m-%d”” . gz

# Backup, unde este creat un INSERT separat pentru fiecare intrare

# și specificând în mod explicit baza de date care codifică UTF-8

mysqldump - uroot - p -- default - character - set = utf8 your_base -- extins - insert = FALSE | gzip - c > „data „+%Y-%m-%d”” . gz

În exemplul de mai sus, utilitarul este folosit pentru a crea o copie de rezervă mysqldump, care este inclus cu mysql. Următorii sunt parametrii pentru crearea unei copii de siguranță a bazei de date, pe care le vom examina mai detaliat:

  • -u– parametrul specifică login-ul care va fi folosit pentru conectarea la baza de date. În exemplu, folosim login-ul root, care trebuie specificat în acest parametru fără spațiu! Drept urmare, arată ca -uroot
  • -p– parametrul indică faptul că trebuie să introduceți o parolă pentru autentificarea specificată. L-am lăsat necompletat, drept urmare parola va trebui introdusă după apăsarea „Enter” la executarea comenzii. Cu toate acestea, puteți specifica parola chiar aici, ca în parametrul de conectare, fără un spațiu după -p, totuși, această metodă nu este sigură, deoarece consola vă salvează comenzile într-un fișier jurnal și dacă nu îl ștergeți în mod regulat, poate fi văzut de un atacator.
  • baza_voastra– în loc de această linie din exemplu, trebuie să specificați nume real Baza de date pentru care creați o copie de rezervă.
  • > – un operator care arată direcția de acțiune, i.e. de parcă ar indica că veți scrie din baza de date într-un fișier.
  • dump_file.sql– acesta este numele fișierului .slq în care trebuie să salvați baza de date. Este indicat cu un spațiu după operatorul „>”. Puteți specifica orice alt nume. De exemplu, astfel încât în ​​nume sistemul să se introducă automat ora curentă, specificați doar o linie ca:

    „data „+%Y-%m-%d””

    „data „+%Y-%m-%d””


    după această linie din exemplu, extensia fișierului este indicată „ .gz‘. Ca rezultat, un fișier precum „ 2014-11-15.gz‘.

    Atenţie! Dacă specificați doar numele fișierului, acesta va fi salvat în același director în raport cu care executați această comandă. Acestea. dacă vedeți așa ceva la promptul de comandă # , Unde root@dvs acesta este numele de conectare și server, fișierul va fi creat în director /Acasă. Pentru a modifica salvarea fișierului într-o cale diferită, specificați calea completă pentru salvarea fișierului în loc de nume, de exemplu: /var/www/backup/dump_file.sql.

  • În al doilea exemplu, în loc de operatorul „ > Se folosește „operator”. | ‘, ceea ce indică necesitatea de a efectua comandă suplimentară gzip cu parametrul ‘ -c„ care vă permite să împachetați imediat depozitul într-o arhivă și numai apoi să îl salvați într-un fișier precum „ 2014-11-15.gz„, după cum a raportat operatorul” > ‘.
  • Parametru -nu există date vă permite să descărcați numai structura bazei de date fără datele în sine. Destul de util în unele cazuri când datele nu sunt necesare.
  • Opțiuni –set-de-caractere-implicit=utf8Și –extended-insert=FALSE. Prima vă permite să specificați în mod explicit codificarea care este utilizată de această bază de date, evitând astfel salvarea bazei de date într-o codificare greșită. În loc de utf8, puteți specifica orice altă codificare, de exemplu cp1251. Al doilea parametru vă permite să specificați că trebuie creată o comandă INSERT separată pentru fiecare înregistrare la export. În unele cazuri, acest lucru poate fi necesar la restaurarea parțială a datelor dintr-un dump.
  • Restaurarea unei baze de date dintr-un fișier de descărcare MySQL

    Acum să ne uităm la procesul invers de restaurare a unei baze de date dintr-un fișier dump. Această acțiune realizat folosind programul mysql. Să ne uităm imediat la un exemplu.

./mysql -u -p H < db_dump-file

2018-12-04T00:00Z

2018-12-11T00:00Z

Când creăm un fișier dump cu mysqldump, acesta conține un script SQL mare pentru a recrea conținutul bazei de date. Prin urmare, îl restaurăm rulând clientul Linie de comanda MySQL:

Mysql -uroot -p

(unde root este numele de utilizator admin pentru MySQL) și după conectarea la baza de date avem nevoie de comenzi pentru a crea baza de date și a citi fișierul:

Creați baza de date new_db; folosește new_db; \. dumpfile.sql

Detaliile se vor schimba în funcție de opțiunile utilizate la crearea fișierului de descărcare.

2018-12-18T00:00Z

Trebuie doar să rulezi asta:

mysql -p -u< db_backup.dump

Dacă dump-ul conține mai multe baze de date, ar trebui să omiteți numele bazei de date:

mysql -p -u< db_backup.dump

Pentru a rula aceste comenzi, deschideți un prompt de comandă (pe Windows) și CD-ul în directorul în care este mysql.exe fisier executabil mysql.exe (s-ar putea să trebuiască să vă gândiți puțin, va depinde de modul în care ați instalat mysql, adică independent sau ca parte a unui pachet precum WAMP). Când vă aflați în acest director, ar trebui să introduceți pur și simplu comanda.

25-12-2018T00:00Z

Ar trebui să fie la fel de simplu ca rularea acestui:

Mysql -u -p< db_backup.dump

Dacă dump-ul are o singură bază de date, poate fi necesar să adăugați o linie în partea de sus a fișierului:

UTILIZARE ;

Dacă este un dump de multe baze de date, instrucțiunile de utilizare sunt deja acolo.

Pentru a rula aceste comenzi, deschideți un prompt de comandă (pe Windows) și cd-ul în directorul în care mysql.exe conține executabilul mysql.exe (s-ar putea să trebuiască să vă gândiți puțin la asta, va depinde de modul în care ați instalat mysql, adică de sine stătătoare). sau ca parte a unui pachet precum WAMP). Odată ce vă aflați în acel director, puteți pur și simplu să tastați comanda așa cum am făcut-o mai sus.

2019-01-01T00:00Z

Comandă cu o singură linie pentru a restaura SQL-ul generat din mysqldump

Mysql -u -p E "sursa

2019-01-08T00:00Z

Folosind un fișier dump de 200 MB creat pe Linux pentru a restabili pe Windows cu mysql 5.5, am avut mai mult succes Cu

Fișier sursă.sql

abordare în echipă șiruri de caractere mysql decât folosind

mysql< file.sql

abordarea liniei de comandă care provoacă o eroare din 2006 „serverul a plecat” (pe Windows)

În mod ciudat, serviciul creat în timpul instalării (mysql) se referă la un fișier my.ini care nu era acolo. Am copiat fișierul exemplu „mare” în my.ini, pe care îl modificasem deja cu creșterea recomandată.

Valorile mele

Max_allowed_packet = 64M interactive_timeout = 250 wait_timeout = 250

2019-01-15T00:00Z

La fel de exemplu concret raspuns anterior:

Trebuia să refac copia de rezervă, astfel încât să o pot importa/transfer în SQL Server. Am instalat doar MySql, dar nu l-am înregistrat ca serviciu sau l-am adăugat la calea mea, deoarece nu trebuie să-l rulez.

obisnuiam Windows Explorer pentru a pune fișierul meu dump în C:\code\dump.sql. Apoi deschideți MySql din elementul de meniu Start. Am creat DB, apoi a rulat comanda sursă cu calea completă astfel:

Mysql> creați baza de date temp mysql> utilizați temp mysql> sursa c:\code\dump.sql

Este ciudat, dar este destul de dificil să găsești aceste informații pe Internet. O grămadă de tot felul de recomandări de stânga. Dar, de fapt, totul este simplu. Puteți restabili dump-ul cu comanda:

# mysql-sus< mysql_dump.sql.

În schimb, înlocuiți numele de utilizator, eu personal fac recuperarea de la root. Și în mysql_dump, sql, de fapt, dump-ul este făcut mysqldump utilitate. Opțiunea -p indică autorizarea cu o parolă; după ce apăsați enter vi se va cere o parolă. Asta e tot, de fapt. Puteți face un dump cu comanda:

# mysqldump-u root -p -f nume_bază de date > fișier_cu_dump.sql

Aici parametrul -f database_name specifică numele bazei de date pe care o salvăm. Dacă aveți nevoie de totul, îl înlocuim cu --toate-bazele de date. Această opțiune va indica salvarea tuturor bazelor de date pe server. Pentru a nu introduce parola de fiecare dată, o puteți specifica direct în comandă (acest lucru este necesar dacă faceți un dump cron dintr-un script), totuși, din punct de vedere al securității, aici apar întrebări, mai ales dacă parola este rădăcină pentru mușchi. Acum, dacă muşchiul ar fi înţeles măcar parolele md5... Totuşi, nu e un fapt că el nu înţelege, eu doar poate că nu ştiu :)

Autor

Alex Razgibalov

Un om nebun, de vârstă nedeterminată, care se bucură de o amăgire de persecuție. Neîncrezător patologic, egoist, autoritar. Diagnostice secundare - programator și asistent. Deține Limba engleză la un nivel de conversație de rahat. De asemenea, familiarizat cu alte limbi. Este interesat de toată lumea și de toate, datorită faptului că cunoștințele sale în orice domeniu sunt superficiale și superficiale. Personajul este incontrolabil. Forță - 55 de grade.

De la autor: Am venit în vizită la un prieten, iar soția lui era isteric, papagalul țipa: „Mai-es-qu-el-dump”. Prietenul însuși minte cu o durere de cap și o dorință maniacală de a afla ce se întâmplă în Recuperare MySQL din groapa. Pentru a salva capetele celorlalți „ignoranți”, nervii soțiilor lor și corzile vocale ale papagalilor, să luăm în considerare acest subiect mai detaliat.

Pericol „All inclusive”

Prietenul meu, ca mulți începători, folosește pachete software"Totul inclus". Cel mai comun în RuNet este setul de domnișoare „Denver”. Și cu „complexitatea” sa (include server local, un shell pentru lucrul cu un SGBD, Server MySQL) îi conduce pe acești „domni” până la nebunie.

Lista lui Denver include doar câteva utilități standard pentru lucrul cu MySQL. Și din moment ce noi toți oameni moderni, apoi pentru informațiile care lipsesc (pentru a înțelege esența a ceva) mergem pe Internet. Dar materialele publicate pe Internet nu spun că pentru a executa anumite seturi de comenzi, prezența lui pachet standard MySQL utilitati specializate. De exemplu, pentru a crea un dump a unei baze de date MySQL, aveți nevoie de programul MySQLDump.

Prin urmare, dacă folosiți și Denwer pentru a vă instrui și testa codul, iar interogările descrise în acest material nu vor fi executate pe linia de comandă, atunci mergeți la: D:\Webserver\usr\local\mysql-5.5\bin

Și uitați-vă la ce utilități pentru lucrul cu serverul DBMS sunt disponibile „la bord” mașină client. Repet încă o dată, astăzi avem nevoie de programul MySQLDump.

Lucrul cu MySQLDump

Acest utilitar este un fișier „executabil” obișnuit, care după descărcare ar trebui să fie plasat în folderul bin (calea către acesta este indicată în prima secțiune a materialului). Acest aplicație mică vă permite să rezolvați probleme „globale” - restaurați dintr-un dump în MySQL, creați copii de rezervă și configurați parametrii de backup.

Utilitatea nu are interfata proprie, astfel încât să lucrați cu el prin CMD-ul standard inclus în set standard programe Windows(lansează prin meniul Start). Și acum pas cu pas:

Mai întâi, mergem la discul virtual (creat după lansarea Apache, care face parte din Denver).

Dacă nu folosești un set „domnului”, nu înseamnă că nu ești un gentleman. Trebuie doar să săriți peste acest pas al instrucțiunilor.

Apoi, folosind comanda cd (modificare director), specificați calea către folderul în care este instalat MySQL. În Denver, acest director se află aici: Z:\usr\local\mysql-5.5\bin

Când instalați separat sistemul de gestionare a bazei de date, acest folder se află: C:\Program Files...

Deoarece ne aflăm deja pe discul (virtual) dorit, trebuie doar să specificăm o parte a căii după comanda cd:

Să verificăm funcționalitatea aplicației și să creăm Dump MySQL baza de date, care se află pe serverul nostru. De exemplu, baza de date „wordpress”. Pentru a face acest lucru, vom folosi comanda mysqldump cu același nume ca și utilitarul. Iată sintaxa sa:

mysqldump -u nume de utilizator -p parola nume_database > backup-database.sql

mysqldump - u nume de utilizator - p parola nume_date_date > backup - bază de date . sql

Exemplu de utilizare a comenzii:

mysqldump -uroot wordpress>Z:\home\localhost\dump\wp_copy.sql

mysqldump - uroot wordpress > Z:\home\localhost\dump\wp_copy. sql

Drept urmare, am primit un dump al bazei de date a site-ului WordPress:

Ce este o groapă?

Dacă nu știți nimic despre un dump de bază de date MySQL și vă este greu să ghiciți ce este, atunci aceasta sectiune Pentru dumneavoastră. Un dump este un tip de backup al bazei de date. Mai precis, fișierele de copiere a bazei de date (în funcție de tip și instrument de creare) pot conține linii de date anumit tipși include, de asemenea, interogări SQL pentru a reconstrui informațiile pierdute, structura și valorile parametrilor acesteia.

Pentru a nu fi nefondat, să deschidem copia wp_copy pe care am creat-o folosind Notepad-ul standard. După un scurt studiu al conținutului său, vom vedea că este format aproape în întregime din interogări cu ajutorul cărora puteți recrea structura tabelelor bazei de date și conținutul acestora.

Testați recuperarea

Dacă mâinile vă mâncărime și săpunul nu ajută, atunci vom efectua o „testare” a utilitarului. Mai întâi, prin phpMyAdmin (pentru a fi mai rapid) vom crea o bază de date de testare „Auto” cu două tabele. Să numim una „mașină” și pe cealaltă „culoare”. Adăugați câteva rânduri de date la fiecare pentru claritate.

Acum să creăm un dump MySQL al bazei de date care ne interesează. Vom salva copia de rezervă în același loc. Cod cerere:

mysqldump -uroot auto>Z:\home\localhost\dump\auto_copy.sql

mysqldump - uroot auto > Z:\home\localhost\dump\auto_copy. sql

Mergând în folderul dump, vedem că utilitarul a creat o copie „auto_copy”.

Efectuarea unui dump de bază de date (backup) este foarte importantă. Așa că am făcut câteva comentarii cu exemple pentru asta utilitate excelenta ca mysqldump.

mysqldump - un utilitar care vă permite să descărcați conținutul unei baze de date sau al unui set de baze de date pentru a crea copie de rezervă sau trimiterea de date către un alt server de baze de date SQL (nu neapărat un server MySQL). Dump-ul va conține un set de comenzi SQL pentru a crea și/sau popula tabele.

mysqldump-u root -p -f name_database >

Cu această comandă facem o copie de rezervă a bazei de date sub numele name_database pentru a conduce C în fișierul mydb_backup_name_database.txt

Nu trebuie să creați fișierul; MySQL îl va crea singur.

mysql-u root -p -f name_database< C:\mydb_backup_name_database.txt

Cu această comandă importăm datele de rezervă din fișierul C:\mydb_backup_name_database.txt

Notă: -f, --force este o opțiune care specifică continuarea chiar dacă este primită o eroare SQL, de exemplu. ignora erorile. De exemplu, dacă un rând identic există deja în tabel.

Pentru a evita solicitarea unei parole, trebuie să o scrieți imediat după -p, adică fără spații. Dacă parola Pwd, atunci exemplul ar arăta astfel:

mysqldump-u rădăcină -p Pwd-f name_database > C:\mydb_backup_name_database.txt

Dacă utilizați adesea această comandă, atunci este mai bine să creați un utilizator separat cu drepturile necesare pentru a reduce vizibilitatea parolei root

Să luăm în considerare mai multe setări fine mysqldump:

--baze de date permite mysqldump să includă comenzile CREATE DATABASE /*!33333 IF NOT EXISTS*/ DBNAME și USE DBNAME în scriptul de recuperare. Acest lucru vă va permite să creați baze de date funcționale de la zero. Adică, fără a utiliza --databases, se presupune că utilizatorul restaurează o singură bază de date și specifică în mod explicit unde ar trebui să fie plasate datele restaurate. Dacă se creează o copie de rezervă cu scopul de a face o copie completă a datelor, de exemplu, pe un alt server MySQL, atunci trebuie să utilizați această cheie;

--toate-bazele de date vă permite să faceți copii ale tuturor bazelor de date care există pe un anumit server MySQL. Dacă trebuie să faceți copii doar ale unor baze de date, trebuie doar să le specificați separate printr-un spațiu atunci când apelați mysqldump din linia de comandă (vezi mai sus);

Cheie --Ajutor. Programul mysqldump are multe versiuni. Puteți vedea ce caracteristici sunt acceptate în mod specific de versiunea dvs. folosind această cheie;

--add-drop-table- un comutator care va forța mysqldump să adauge o comandă drop table la scriptul rezultat înainte de a crea tabele. Acest lucru vă va permite să evitați unele erori la restaurarea unei baze de date dintr-o copie de rezervă. Desigur, trebuie să țineți cont de faptul că tabelele situate în copia de lucru (dacă tabele cu același nume există în backup) vor fi șterse din baza de date principală și recreate din backup înainte de a fi restaurate din backup;

--nu există date. Folosind această cheie, puteți face rapid o copie a structurii tabelului/bazei de date fără datele în sine. De exemplu, ați creat un tabel complex și ați dori să-i salvați structura pentru viitor, dar nu aveți nevoie de datele în sine care se află în acest tabel într-o copie de rezervă;

--result-file=...- acest comutator poate fi folosit pentru a redirecționa ieșirea către un fișier. Puteți utiliza redirecționarea Unix obișnuită cu comanda „>” sau puteți folosi această cheie. Cui îi place ce;

Altul foarte sfaturi utile despre utilizarea mysqldump într-un mediu de găzduire. De regulă, atunci când utilizați găzduirea, sunt impuse anumite restricții utilizatorului. De exemplu, nu puteți împrumuta mai mult de o anumită sumă memorie fizică(RAM, RAM). mysqldump pune în memorie toate datele primite de la serverul MySQL, apoi le scrie pe disc. În consecință, dacă furnizorul vă permite să împrumutați, de exemplu, 30 MB de memorie, iar baza de date, pe care o copiați folosind mysqldump, ocupă 50 MB, desigur, aici va apărea o eroare - mysqldump nu va putea funcționa corect și se va prăbuși, despre care vă va informa. Pentru a „forța” mysqldump să scrie datele direct pe disc, în loc să le stocheze, chiar și temporar, în memorie, utilizați cheia --rapid. Acest lucru va rezolva problema.

Iată încă câteva exemple utile:

mysqldump -u root -p Pwd-f --default-character-set=cp1251 DBNAME| gzip -c > numefișier.txt .gz

Puteți despacheta o astfel de arhivă cu comanda:

gunzip filename.txt.gz

Pentru a ști la ce dată a fost făcută copierea de rezervă, puteți scrie următoarea comandă:

mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME | gzip -c > `data „+%Y-%m-%d”`.gz

și dacă trebuie să faceți depozite cu diferite codificări, atunci este convenabil să utilizați variabile:

a stabilit DBCARACTER= utf8

a stabilit DBNAME= încălcare

mysqldump -u root -p Pwd-f --default-character-set=$ DBCARACTER $DBNAME| bzip2 -c > sql. $DBNAME.`data „+%Y-%m-%d”`.bz2

Dacă doriți să automatizați eliminarea arhivelor vechi, încercați să utilizați cron și comanda find, care se găsește de obicei în Unix. Alergând periodic

găsi~/director-cu-arhive -nume "*.gz" -mtime +7 -exec rm -f () \;

Astfel, veți șterge arhivele care sunt „mai vechi” de șapte zile.

Cele mai bune articole pe această temă