Kas ir mysqldump un kā to lietot?

Satura rādītājs:

Kas ir mysqldump un kā to lietot?
Kas ir mysqldump un kā to lietot?
Anonim

Kā viena no vadošajām brīvi pieejamajām datubāzēm, MySQL ir populāra izvēle daudzām tīmekļa lietojumprogrammām. Tā kā jūsu lietotne ir pakļauta internetam, tā ir pakļauta ļaunprātīgiem uzbrukumiem. Ja jūsu serveris ir apdraudēts, labākajā gadījumā jums ir jāpārinstalē lietojumprogramma; sliktākajā gadījumā jūs varat zaudēt savus datus. Turklāt jūs varat nonākt situācijā, kad jums ir jāmigrē datu bāze no viena servera uz citu.

Kam tiek izmantots mysqldump?

Mysqldump rīks nodrošina gan servera uzlaušanas, gan migrācijas situācijas. Tās pamatfunkcija ir ņemt MySQL datubāzi un izmest to kā teksta failu. Bet ne jebkuru teksta failu; fails ir SQL priekšrakstu kopa. Šie paziņojumi, kad tie tiek izpildīti, rekonstruē datubāzi precīzā stāvoklī, kādā tā bija izgāztuves izpildes laikā.

Izmantojiet mysqldump, lai izveidotu datu bāzes eksportu kā dublējumus vai pārvietojot datu bāzi uz jaunu resursdatoru. Jebkurā gadījumā teksta fails tiks importēts atpakaļ MySQL datu bāzes serverī. Tas izpildīs visus failā esošos SQL paziņojumus, kas atjauno datubāzi tās sākotnējā stāvoklī. Šajā daļā netiek izmantota komanda mysqldump, taču tas nebūtu iespējams arī bez šīs utilītas.

MySQL dokumentos ir uzskaitītas citas dublēšanas metodes, taču tām ir trūkumi:

  • Datubāzes karstā kopēšana no MySQL Enterprise ir lielisks veids, kā iegūt šīs dublējumkopijas - ja jūs neiebilstat par uzņēmuma cenu zīmi.
  • Datu bāzes datu direktoriju kopēšana var būt sarežģīta, pārvietojoties starp operētājsistēmām, jo galamērķi būs atšķirīgi.
  • Eksportējot uz norobežotu teksta failu, jūs iegūsit saturu, taču jums būs atkārtoti jāizveido struktūra.
  • Bieži vien varat dublēt datu bāzes no GUI programmām, piemēram, MySQL Workbench. Bet tas ir manuāls process; nav kaut kas tāds, ko varat skriptēt vai iekļaut pakešdarbā.

Instalējiet mysqldump rīku

Sistēmā Windows skatiet mūsu norādījumus par MySQL instalēšanu operētājsistēmā Windows 7 (instalēšanas process operētājsistēmā Windows 10 ir tāds pats). Operētājsistēmā macOS skatiet mūsu norādījumus par MySQL instalēšanu operētājsistēmā macOS 10.7 (atkal vecāks, bet joprojām piemērojams). Uz Ubuntu balstītu Linux sistēmu lietotāji MySQL klienta un utilītu instalēšanai var izmantot šādu komandu:

sudo apt install mysql-client

Izņemiet MySQL izdruku

Pēc instalēšanas izmantojiet mysqldump, lai iegūtu pilnu datu bāzes dublējumu.

mysqldump -h [jūsu DB resursdatora nosaukums vai IP] -u [DB lietotāja vārds] -p [bāzes nosaukums] > db_backup.sql

Šeit ir šajā komandā izmantoto karodziņu apraksts:

  • - h: šis karodziņš ir datu bāzes resursdators. Tas var būt pilns saimniekdatora nosaukums (piemēram, myhost.domain.com) vai IP adrese. Atstājiet šo tukšu, ja palaižat komandu tajā pašā resursdatorā, kur MySQL serveris.
  • - u: jūsu lietotājvārds.
  • - p: ja pareizi nodrošinājāt MySQL instalāciju, savienojuma izveidei būs nepieciešama parole. Šis karodziņš bez argumentiem, izpildot komandu, prasa ievadīt paroli. Dažreiz ir lietderīgi norādīt paroli tieši kā šī karoga argumentu, piemēram, rezerves skriptā. Taču pēc uzvednes to nevajadzētu darīt, jo, ja kāds piekļūtu jūsu datoram, viņš varētu iegūt šo paroli komandu vēsturē.
  • > db_backup.sql: šī daļa liek mysqldump novirzīt izvadi uz failu. Parasti komanda visu izvada konsolei, kas nozīmē, ka ekrānā redzēsit vairākus SQL paziņojumus. Simbols > izvada izvadi nosauktajā teksta failā. Ja šis fails neeksistē, tas tiek izveidots automātiski.

Kad tas būs pabeigts, jums būs. SQL fails. Šis ir teksta fails, kas satur SQL paziņojumus. Varat to atvērt jebkurā teksta redaktorā, lai pārbaudītu saturu. Šeit ir eksportēts no WordPress datu bāzes, kas parāda, kā šie faili tiek salikti kopā.

Image
Image

Fails ir sadalīts sadaļās. Pirmajā sadaļā ir iestatīta WordPress komentāru tabula. Otrajā sadaļā tiek atkārtoti izveidots šo tabulu saturs (šajā piemērā komentāru ieraksti). Kad atkārtoti importējat MySQL izdruku, komanda darbojas caur failu, izpilda paziņojumus un no jauna izveido datubāzi, kā tā bija.

Importējiet MySQL izdrukas failu

Pirms importējat izgāztuves failu, jums būs nepieciešama jau izveidota datu bāze un tās derīgais lietotājvārds un parole. Jums ir jābūt arī visām datubāzes atļaujām. Jums nav nepieciešama GRANT atļauja, taču ir vieglāk piešķirt tās visas.

Uzziniet vairāk par datu bāzes atļaujām, pirms maināt drošības lomas savā datu bāzē.

Lai atkārtoti importētu savus datus, piesakieties MySQL serverī ar komandu mysql. Uzvednē ierakstiet use [datubāzes nosaukums] un aizstājiet datu bāzes nosaukumu. Ievadiet source [faila nosaukums] un aizstājiet ar iepriekš paņemtā izgāztuves faila nosaukumu.

Kad esat pabeidzis, tiek parādīts ziņojumu saraksts, norādot, ka tiek izpildīti SQL priekšraksti. Pievērsiet uzmanību kļūdām, taču, ja jums ir atbilstošās atļaujas, jums vajadzētu būt labi.

Image
Image

Kad process būs pabeigts, jums būs sākotnējās datu bāzes dublikāts. Lai pārbaudītu datu bāzu līdzību, veiciet vēl vienu izdruku un pēc tam salīdziniet abus izvadus. Izmantojiet teksta redaktoru vai īpašu diferencēšanas rīku, lai salīdzinātu abus failus.

Image
Image

Šiem failiem ir divas atšķirības, ko attēlo sarkanās līnijas labās ritjoslas augšdaļā un apakšā. Pirmā ir rinda, kurā ir datu bāzes nosaukums, un tā atšķiras, jo faili tika nosaukti atšķirīgi. Otrais ir izgāztuves faila laikspiedols. Tas atšķiras, jo otrā datubāze tika izveidota no jauna pēc pirmās. Pretējā gadījumā faili ir tieši tādi paši, kas nozīmē, ka ir arī datu bāzes, kas tos ģenerēja.

FAQ

    Kā novērst mysqldump kļūdu: piekļuve liegta, izmantojot bloķēšanas tabulas?

    Palūdziet datu bāzes administratoram piešķirt jums LOCK privilēģiju. Ja tas neatrisina problēmu, mēģiniet palaist to pašu mysqldump komandu, pievienojot karogu - -single-transaction, piemēram, [ $ mysqldump --single-transaction] [-u lietotājs] [-p DBNAME] > backup.sql

    Vai ar mysqldump varat izmantot klauzulu "kur"?

    Izmantojiet WHERE klauzulu, veidojot dublējumu, kurā ir iekļautas tikai tās rindas, kas atbilst norādītajam nosacījumam. Piemēram, lai izmestu datus tikai no rindām, kuru id kolonna ir lielāka par 100, ievadiet "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql.

Ieteicams: