Mwongozo wa mysqldump: Jinsi ya Kuhifadhi Nakala na Kurejesha Hifadhidata za MySQL (Kwa Mifano)

1. Utangulizi

Uhakikisho na urejeshaji wa hifadhidata ni msingi wa usimamizi wa data na ni muhimu kwa uendeshaji wa kuaminika. mysqldump ya MySQL inatumika sana kama chombo bora na kinachobadilika kwa kutengeneza nakala za hifadhidata. Katika mwongozo huu, tutaelezea kila kitu kutoka matumizi ya msingi ya mysqldump hadi chaguo za juu, mbinu za urejeshaji, na utatuzi wa matatizo kwa undani. Mwishoni mwa makala, tutatoa pia mbinu bora na rasilimali za ziada, hivyo tafadhali tumia hii kama rejea ya msaada ili kumudu mysqldump.

2. Nini ni mysqldump?

2.1 Muhtasari wa mysqldump

mysqldump ni chombo cha mstari wa amri kwa kutengeneza nakala za hifadhidata za MySQL. Unaweza kutupa (dump) hifadhidata nzima, majedwali maalum, au data pekee inayokidhi masharti fulani kama hati ya SQL. Faili hili la dump linaweza kutumika kurejesha data au kuhamisha kwa seva mpya.

2.2 Matumizi ya Kawaida

  • Backup : Chukua nakala za kawaida ili kujiandaa kwa kushindwa kwa mfumo au upotevu wa data.
  • Data Migration : Hamisha hifadhidata kati ya seva au nakili data katika mazingira ya maendeleo.
  • Data Analysis : Toa seti maalum za data kwa ajili ya uchambuzi na uthibitishaji.

3. Matumizi ya Msingi

3.1 Sintaksia ya Amri ya Msingi

Sintaksia ya amri ya msingi kwa mysqldump ni kama ifuatavyo:

mysqldump -u username -p database_name > output_file.sql
  • -u username : Jina la mtumiaji linalotumika kufikia hifadhidata.
  • -p : Inakuomba uweke nenosiri.
  • database_name : Jina la hifadhidata unayotaka kuhifadhi.
  • > output_file.sql : Njia/jina la mahali pa kuhifadhi faili la dump.

3.2 Chaguzi za Uthibitishaji wa Mtumiaji

  • -h hostname : Jina la mwenyeji la seva ya hifadhidata (chaguo-msingi ni localhost).
  • -P port_number : Nambari ya bandari ya kuunganisha (chaguo-msingi ni 3306).

3.3 Mfano: Hifadhi Nakala ya Hifadhidata Nzima

mysqldump -u root -p mydatabase > backup.sql

Amri hii huhifadhi nakala ya data zote katika mydatabase kwenye faili backup.sql. Ikiwa utaongeza tarehe kwenye jina la faili la nakala kwa udhibiti wa matoleo, itakuwa rahisi kufuatilia historia ya nakala zako.

4. Maelezo ya Chaguo Muhimu

4.1 --all-databases (-A)

Chaguo hili huhifadhi nakala ya hifadhidata zote kwa wakati mmoja. Ni muhimu unapohitaji kufanya nakala kamili ya seva nzima.

mysqldump -u root -p --all-databases > all_databases_backup.sql

4.2 --no-data (-d)

Tumia chaguo hili unapohitaji kuhifadhi nakala ya muundo wa jedwali pekee bila data. Kwa mfano, ni muhimu unapohitaji kusafirisha muundo wa jedwali tu ili kuanzisha mazingira ya maendeleo.

mysqldump -u root -p mydatabase --no-data > schema_only_backup.sql

4.3 --where (-w)

Tumia chaguo hili unapohitaji kuhifadhi nakala ya data pekee inayokidhi masharti maalum. Kwa mfano, kuhifadhi rekodi pekee ambapo safu ya is_active ni 1:

mysqldump -u root -p mydatabase --where="is_active=1" > filtered_data_backup.sql

4.4 --ignore-table

Tumia chaguo hili kuondoa majedwali maalum kutoka kwenye nakala. Ni muhimu wakati kuna majedwali ambayo hutaki kujumuishwa.

mysqldump -u root -p mydatabase --ignore-table=mydatabase.table1 > partial_backup.sql

5. Mifano ya Kivitendo

5.1 Tupa (Dump) Majedwali Maalum Pekee

Ikiwa unataka kuhifadhi nakala ya majedwali maalum pekee, taja jina la jedwali baada ya jina la hifadhidata.

mysqldump -u root -p mydatabase table1 > table1_backup.sql

Amri hii huhifadhi data pekee kutoka table1 kwenye table1_backup.sql.

5.2 Tupa Data Pekee / Muundo Pekee

  • Data only : mysqldump -u root -p mydatabase --no-create-info > data_only_backup.sql Huhifadhi nakala ya data pekee na haijumuishi muundo wa jedwali.
  • Schema only : bash mysqldump -u root -p mydatabase --no-data > schema_only_backup.sql Huhifadhi nakala ya muundo wa jedwali pekee.

5.3 Tupa kwa Masharti

Ili kuhifadhi nakala ya data pekee inayokidhi masharti maalum, tumia chaguo la --where.

mysqldump -u root -p mydatabase --where="created_at >= '2023-01-01'" > recent_data_backup.sql

Amri hii inahifadhi data pekee ambapo created_at iko au baada ya Januari 1, 2023.

6. Jinsi ya Kurejesha

Ili kurejesha hifadhidata iliyohifadhiwa na mysqldump, tumia amri ya mysql. Kurejesha ni mchakato wa kutumia faili ya hifadhi ili kurudisha hifadhidata kwenye hali ya awali.

6.1 Sintaksisi ya Msingi ya Kurejesha

mysql -u username -p database_name < dump_file.sql
  • -u username : Jina la mtumiaji linalotumika kuunganisha na hifadhidata.
  • -p : Inakuomba uweke nenosiri.
  • database_name : Jina la hifadhidata ya marudio.
  • < dump_file.sql : Faili ya dump inayotumika kwa kurejesha.

6.2 Mfano: Kuendesha Kurejesha

mysql -u root -p mydatabase < backup.sql

Amri hii inarejesha data kwenye mydatabase kutoka kwa faili ya backup.sql.

6.3 Vidokezo Muhimu kwa Kurejesha

  • Ikiwa hifadhidata unayotaka kurejesha haipo, lazima uiunde kwanza.
  • Kurejesha kiasi kikubwa cha data kunaweza kuchukua muda, kwa hivyo ni muhimu kupanga mbele.

7. Mazoea Bora kwa mysqldump

7.1 Kupanga Hifadhi

Panga hifadhi za mara kwa mara kwa kuandika mysqldump na kutumia mpangaji kama cron. Katika mfano wa hati ya ganda ifuatayo, hifadhi kamili ya hifadhidata zote inachukuliwa kila siku usiku wa manane.

#!/bin/bash
mysqldump -u root -p'password' --all-databases > /path/to/backup/all_databases_$(date +\%F).sql

7.2 Kushiriki Faili za Hifadhi

Kwa sababu faili za hifadhi zinaweza kuwa na maelezo nyeti, inashauriwa kuzishiriki kwa kutumia zana kama gpg.

gpg -c /path/to/backup/all_databases_$(date +\%F).sql

7.3 Ulinganifu wa Toleo

Unapohamisha data kati ya matoleo tofauti ya MySQL, unahitaji kuangalia masuala ya ulinganifu. Kabla ya kusasisha, igiza utaratibu wa hifadhi na kurejesha katika mazingira ya majaribio na uhakikishe ulinganifu.

  1. Rudia maelezo ya meza : mysqldump --all-databases --no-data --routines --events > dump-defs.sql Amri hii inatupa muundo wa meza pekee, kisha uirejeshe katika mazingira ya toleo jipya ili kuangalia ulinganifu.
  2. Rudia data : mysqldump --all-databases --no-create-info > dump-data.sql Baada ya kuthibitisha maelezo ya meza yanalingana, rudia data pekee.
  3. Thibitisha katika mazingira ya majaribio : Ili kuthibitisha ulinganifu wa kutwaa toleo, fanya hifadhi na kurejesha katika mazingira ya majaribio. Baada ya kuthibitisha kila kitu kinafanya kazi vizuri, endelea na uhamisho katika mazingira ya uzalishaji.

7.4 Kuhifadhi na Kuthibitisha Hifadhi

  • Hifadhi hifadhi kwa usalama : Hifadhi faili za hifadhi kwenye uhifadhi wa nje au katika wingu, na uzisasishe mara kwa mara. Uhifadhi wa nje husaidia kulinda data kutoka kwa hitilafu za kimwili.
  • Thibitisha kurejesha mara kwa mara : Fanya majaribio ya kurejesha mara kwa mara ili kuthibitisha kuwa hifadhi zinaweza kurejeshwa vizuri. Ni muhimu usiruke uthibitisho wa kurejesha iwapo hifadhi zitaweza kuwa batili.

8. Kutatua Matatizo

8.1 Makosa ya Kawaida na Marekebisho

  • Kosa: @@GLOBAL.GTID_PURGED cannot be changed : Kosa hili linaonekana wakati masuala yanayohusiana na GTID yanatokea katika MySQL 8.0. Unaweza kuepuka kwa kuandika maelezo ya GTID kwa kutumia chaguo la --set-gtid-purged=COMMENTED. mysqldump -u root -p mydatabase --set-gtid-purged=COMMENTED > backup.sql
  • Kosa: Nafasi ya diski haitoshi : Ikiwa utakosa nafasi ya diski wakati wa kuhifadhi hifadhidata kubwa, shusha hifadhi au badilisha marudio. Kwa mfano, unaweza kushusha hifadhi na gzip kama hii: mysqldump -u root -p mydatabase | gzip > backup.sql.gz
  • Kosa: Haki hazitoshi : Ikiwa mtumiaji wa hifadhidata hana haki za kutosha, hifadhi au kurejesha itashindwa. Toa haki zinazohitajika (kama SELECT , LOCK TABLES , SHOW VIEW , n.k.) na jaribu tena.

8.2 Masuala ya Ulinganifu wa Toleo

Masuala ya kutofanana kati ya matoleo tofauti ya MySQL yanaweza kutatuliwa kwa kufanya majaribio kabla ya kusasisha. Kwa hasa, wakati wa kuhamisha kutoka MySQL 5.7 hadi 8.0, inapendekezwa kurejesha tu muundo wa jedwali kwa kutumia chaguo la --no-data na kuthibitisha kutofanana.

  • Jaribu kutofanana : Kabla ya kusasisha, simuli uhamisho katika mazingira ya majaribio ili kutambua matatizo yanayoweza kutokea. Angalia vipengele au sintaksia zisizofanana, na badilisha maandishi ya SQL kadiri inavyohitajika.

9. Muhtasari

mysqldump ni chombo cha kuaminika na chenye nguvu kwa ajili ya kuhifadhi nakala rudufu na kurejesha hifadhidata za MySQL. Katika makala hii, tulijifunza kila kitu kutoka matumizi ya msingi hadi chaguo za juu, mbinu bora, na utatuzi wa matatizo. Kwa kutumia maarifa haya, unaweza kulinda na kusimamia hifadhidata zako kwa ufanisi zaidi ukitumia mysqldump.

Kwa kuingiza mbinu bora kama kupanga ratiba ya nakala rudufu na kusimba faili, unaweza kuboresha usalama wa data na kuongeza uaminifu wa shughuli za hifadhidata yako. Tumia mysqldump ipasavyo ili kujiandaa kwa matatizo yanayoweza kutokea kwenye hifadhidata.

10. Marejeleo na Rasilimali Zaidi

Rejelea rasilimali hii ili ujifunze zaidi kuhusu mysqldump na kuitumia katika hali halisi. Pia, kwa kufanya nakala rudufu za kawaida na kuthibitisha urejeshaji, unaweza kudumisha usalama wa hifadhidata na kuwa tayari kwa upotevu wa data usiotarajiwa.