Copii de rezervă avansate pentru baze de date MySQL

Când se termină Backup-uri de baze de date MySQL, este obișnuit să folosiți comanda mysqldump fără opțiuni. Cu toate acestea, această comandă are multe opțiuni interesante care vă permit să efectuați copii de rezervă avansate.

În mod implicit, fișierul comanda mysqldump generează o copie a structurii sql a tuturor tabelelor din baza de date indicat, într-un fișier text sql. Pentru a include doar unul sau mai multe tabele, introduceți numele acestora după numele bazei de date.

Din fereastra terminalului din directorul mysql:

 # Backup pentru o singură masă $ mysqldump -user = utilizator --password = cheie bază de date tabelă> backup_sql
 # Backup trei tabele $ mysqldump -user = user --password = cheia bazei de date table1 table2 table3> backup_sql
Exemple de 1 sau 3 tabele.

1. Se exclud unele tabele din copie de rezervă


Pentru a nu include un anumit tabel în copie de rezervă, trebuie să-l indicăm cu opțiunea --ignore-table, a cărei valoare trebuie indicată

Dacă faceți, de exemplu, o copie de rezervă a unei baze de date numită comerț, dar nu doriți să fie inclus un tabel numit vânzări, rulați următoarea comandă:

 $ mysqldump --user = utilizator - parolă = parolă --ignore-table = comerciant.vânzător comerciant> backup_back.sql 
Cu alte cuvinte, copiați întreaga bază de date comercială, cu excepția tabelului de vânzări. Dacă dorim să excludem mai multe tabele, trebuie să folosim următoarea comandă:
 $ mysqldump --user = user --password = password --ignore-table = commerce.sales --ignore-table = commerce.products --ignore-table = commerce. prețuri comerciale> backup_copy.sql
(Pentru a exclude mai multe tabele, specificați numele acestora cu tot atâtea opțiuni --ignore-table)

2. Limitarea numărului de înregistrări din fiecare tabel


În mod implicit, comanda mysqldump va copia toate înregistrările din toate tabelele. Dacă doriți să filtrați anterior înregistrările, adăugați opțiunea --where, care vă permite să indicați condiția de tip WHERE care este adăugată la interogările SELECT care sunt făcute pentru a extrage toate înregistrările:
 $ mysqldump --user = user --password = password --where = "age> 18 AND age backup_back.sql 
Dacă vrem să extragem doar câteva înregistrări din baza de date, de exemplu primele 500
 $ mysqldump --user = user -password = password --where = "1 limit 500" database> backup.sql
Acestea ar fi extrase cu o limită de 500.

3. Copiați doar structura tabelelor, dar nu și datele acestora


În mod implicit, fișierul comanda mysqldump aruncă atât structura tabelelor, cât și toate informațiile acestora. Dacă sunteți interesat doar să descărcați structura tabelelor și coloanelor, utilizați opțiunea --no-data. Deci, puteți crea o altă bază de date exact la fel, dar goală:
 $ mysqldump --user = user --password = password --no-data database> backup_sql
În mod normal, atunci când inserțiile sunt generate, acestea sunt grupate într-o singură declarație pentru a salva liniile de cod după cum urmează:
 INSERAȚI ÎN VALORILE tabelului (1, „nume1”), (2, „nume2”), (3, „nume3”);
Acesta este un comportament care poate provoca erori cu sistemele mai vechi care nu pot procesa linii lungi. În mod similar, puteți întâmpina probleme cu editorul de text atunci când încercați să deschideți un fișier de rezervă care conține aceste linii lungi.

Dacă ne confruntăm cu acest caz, putem adăuga opțiunea --extended-insert = false pentru a face ca fiecare INSERT să ruleze cu propria declarație:

 $ mysqldump --user = user -password = password --extended-insert = false database> backup_sql
Rezultatul va fi următorul:
 INSERAȚI ÎN VALORILE tabelului (1, „nume1”); INSERAȚI ÎN VALORILE tabelului (2, „nume2”); INSERAȚI ÎN VALORILE tabelului (3, „nume3”); 

V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv
wave wave wave wave wave