Bilang isa sa nangungunang malayang magagamit na mga database, ang MySQL ay isang popular na pagpipilian para sa maraming mga web application. Dahil nalantad sa internet, nalantad ang iyong app sa mga nakakahamak na pag-atake. Kung ang iyong server ay nakompromiso, sa pinakamabuting kalagayan, kailangan mong muling i-install ang application; sa pinakamasama, maaari mong mawala ang iyong data. Bilang karagdagan, maaari kang makarating sa isang sitwasyon kung saan kailangan mong mag-migrate ng database mula sa isang server patungo sa isa pa.
Para Saan Ang mysqldump?
Ang mysqldump tool ay nasasaklawan mo para sa kompromiso ng server at mga sitwasyon sa paglipat. Ang pangunahing pag-andar nito ay kumuha ng MySQL database at itapon ito bilang isang text file. Ngunit hindi anumang text file; ang file ay isang set ng mga SQL statement. Ang mga pahayag na ito, kapag naisakatuparan, ay muling buuin ang database sa eksaktong katayuan nito noong isinagawa ang dump.
Gamitin ang mysqldump upang lumikha ng mga pag-export ng isang database bilang mga backup, o kapag inililipat ang database sa isang bagong host. Sa alinmang kaso, ang text file ay mai-import pabalik sa isang MySQL database server. Ipapatupad nito ang lahat ng mga SQL statement sa file, na muling bubuo ng database sa orihinal nitong estado. Ang bahaging ito ay hindi gumagamit ng mysqldump command, ngunit hindi rin ito magiging posible kung wala ang utility na ito.
Ang MySQL docs ay naglilista ng iba pang mga paraan upang gumawa ng mga backup, ngunit ang mga ito ay may mga kakulangan:
- Ang pag-hotcopy ng database mula sa MySQL Enterprise ay isang mahusay na paraan upang makamit ang mga backup na ito - kung hindi mo iniisip ang tag ng presyo ng Enterprise.
- Ang pagkopya sa mga direktoryo ng data ng database ay maaaring nakakalito kapag lumilipat sa mga operating system, dahil ang mga destinasyon ay magkakaiba.
- Ang pag-export sa isang delimited text file ay magbibigay sa iyo ng nilalaman, ngunit kailangan mong muling likhain ang istraktura.
- Madalas kang makakapag-backup ng mga database mula sa mga GUI program tulad ng MySQL Workbench. Ngunit ito ay isang manu-manong proseso; hindi isang bagay na maaari mong i-script o isama sa isang batch job.
I-install ang mysqldump Tool
Para sa Windows, tingnan ang aming mga tagubilin sa pag-install ng MySQL sa Windows 7 (pareho ang proseso ng pag-install para sa Windows 10). Sa macOS, tingnan ang aming mga direksyon sa pag-install ng MySQL sa macOS 10.7 (muli, mas luma ngunit naaangkop pa rin). Maaaring gamitin ng mga user ng Ubuntu-based Linux system ang sumusunod na command para i-install ang MySQL client at mga utility:
sudo apt install mysql-client
I-extract ang MySQL Dump
Kapag na-install, gamitin ang mysqldump para makakuha ng buong backup ng database.
mysqldump -h [pangalan o IP ng iyong DB host] -u [pangalan ng user ng DB] -p [pangalan ng database] > db_backup.sql
Narito ang paglalarawan ng mga flag na ginamit sa command na ito:
- - h: Ang flag na ito ay ang database host. Maaari itong maging isang buong hostname (halimbawa, myhost.domain.com) o isang IP address. Iwanang blangko ito kung pinapatakbo mo ang command sa parehong host ng MySQL server.
- - u: Ang iyong username.
- - p: Kung maayos mong na-secure ang pag-install ng MySQL, kakailanganin mo ng password para kumonekta. Ang flag na ito na walang argument ay nag-uudyok sa iyo para sa isang password kapag pinaandar mo ang command. Minsan kapaki-pakinabang na ibigay ang password nang direkta bilang argumento sa flag na ito, halimbawa, sa isang backup na script. Ngunit sa prompt, hindi mo dapat, dahil kung may nakakuha ng access sa iyong computer, maaari nilang makuha ang password na ito sa history ng command.
- > db_backup.sql: Ang bahaging ito ay nagsasabi sa mysqldump na idirekta ang output nito sa isang file. Karaniwan, inilalabas ng command ang lahat sa console, ibig sabihin, makakakita ka ng ilang SQL statement sa screen. Ang > na simbolo ay nagpapalabas ng output sa pinangalanang text file. Kung wala ang file na ito, awtomatiko itong nagagawa.
Kapag tapos na ito, magkakaroon ka ng. SQL file. Ito ay isang text file na naglalaman ng mga SQL statement. Maaari mo itong buksan sa anumang text editor upang siyasatin ang mga nilalaman. Narito sa isang pag-export mula sa isang database ng WordPress na nagpapakita kung paano pinagsama-sama ang mga file na ito.
Ang file ay nahahati sa mga seksyon. Ang unang seksyon ay nagse-set up ng talahanayan para sa mga komento sa WordPress. Nililikha muli ng pangalawang seksyon ang nilalaman sa mga talahanayang iyon (sa halimbawang ito, ang mga tala ng komento). Kapag muli mong na-import ang MySQL dump, gagana ang command sa pamamagitan ng file, ipapatupad ang mga statement, at muling ibubuo ang database sa paraang ito noon.
Mag-import ng MySQL Dump File
Bago mo i-import ang dump file, kakailanganin mo ang isang database na nagawa na at ang wastong username at password nito. Dapat mayroon ka ring lahat ng mga pahintulot para sa database. Hindi mo kailangan ng pahintulot ng GRANT, ngunit mas madaling ibigay ang lahat sa kanila.
Matuto pa tungkol sa mga pahintulot sa database bago mo baguhin ang mga tungkulin sa seguridad sa loob ng iyong database.
Para muling i-import ang iyong data, mag-log in sa MySQL server gamit ang mysql na command. I-type ang use [database name] sa prompt, at palitan ang pangalan ng database. Ilagay ang source [filename], at palitan ang pangalan ng dump file na kinuha mo dati.
Kapag tapos ka na, may lalabas na listahan ng mga mensahe na nagsasaad na ang mga SQL statement ay isinasagawa. Bantayan ang mga error, ngunit kung mayroon kang tamang mga pahintulot, dapat ay maayos ka.
Kapag kumpleto na ang proseso, magkakaroon ka ng duplicate ng orihinal na database. Upang i-verify ang pagkakatulad sa pagitan ng mga database, magsagawa ng isa pang dump pagkatapos ay ihambing ang dalawang output. Gumamit ng text editor o nakalaang diff tool para ihambing ang dalawang file.
May dalawang pagkakaiba sa pagitan ng mga file na ito, na kinakatawan ng mga pulang linya sa itaas at ibaba ng kanang scrollbar. Ang una ay ang linya na naglalaman ng pangalan ng database, at iba ito dahil iba ang pangalan ng mga file. Ang pangalawa ay ang timestamp para sa dump file. Ito ay naiiba dahil ang pangalawang database ay muling ginawa pagkatapos ng una. Kung hindi, ang mga file ay eksaktong pareho, ibig sabihin, ang mga database na nakabuo sa kanila ay gayundin.
FAQ
Paano mo aayusin ang mysqldump error: Tinanggihan ang access kapag gumagamit ng mga lock table?
Hingin sa iyong database administrator na bigyan ka ng pribilehiyong LOCK. Kung hindi nito naresolba ang isyu, subukang patakbuhin ang parehong mysqldump command idagdag ang - -single-transaction flag, gaya ng [ $ mysqldump --single-transaction] [-u user] [-p DBNAME] > backup.sql
Maaari ka bang gumamit ng "where" clause sa mysqldump?
Gumamit ng WHERE clause kapag gumagawa ng backup na kasama lang ang mga row na tumutupad sa ibinigay na kundisyon. Halimbawa, para mag-dump lang ng data mula sa mga row na may column na id na higit sa 100, ilagay ang "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql".