Tunatupa hifadhidata ya MySQL na kuhamisha data kwenye kiweko. Dampo la hifadhidata - blogu ya msimbo

Chapisho hili lina amri zinazotumiwa sana kuunda au kupeleka nakala rudufu za hifadhidata Data ya MySQL.

Kweli, nimechoka tu kwa funguo za googling kila wakati ninapozihitaji "ghafla".

Nadharia kidogo ...

MySQLDUMP ni zana ambayo hukuruhusu kuunda chelezo za hifadhidata za MySQL. Kama matokeo, tunapata faili ya .sql na utupaji wa hifadhidata. KATIKA faili hili zilizomo msimbo wa sql kwa namna ya maandishi, i.e. unaweza kuifungua kila wakati mhariri wa maandishi kutazama, kuhariri, nk...
Unaweza kurejesha dampo kama hilo kwa kutumia matumizi ya mysql kupitia STDIN.

Kwa njia, pia kuna matumizi kama MySqlHotCopy, ambayo hutumiwa vyema kuunda chelezo moto, kwani hufunga hifadhidata na kunakili faili za hifadhidata kwa Mahali pazuri. Lakini jambo hili litafanya kazi tu ikiwa linaendeshwa kwenye seva yenyewe, inafanya kazi tu na meza za MyISAM na Archive na inafaa zaidi kwa hifadhidata kubwa.
Unaweza kurejesha data kwa kunakili faili zilizohifadhiwa kwenye saraka ya data ya MySQL.

Lakini, kwa ujumla, hii sio juu yake ... labda nitaandika kuhusu "nakala ya moto" katika makala nyingine ...

Kuunda Hifadhidata ya Hifadhidata

Wacha tuanze na amri ya kawaida ya kutupa tovuti.ru kwenye faili ya site.ru:

Mysqldump -uroot -h10.30.30.10 -p site_ru > site_ru.sql

    Zaidi kuhusu funguo:
  • -u(--user=...) ni jina la mtumiaji wa hifadhidata;
  • -h(—mwenyeshi=…) ndiye mwenyeji ambamo seva yenyewe iko. Ikiwa seva ni ya ndani, basi parameta hii haiwezi kutumika au unaweza kuingiza mwenyeji hapo. Pia kumbuka kwamba ip ya seva baada ya ufunguo lazima iandikwe bila nafasi;
  • -p(--password=...) ni nenosiri la mtumiaji. Ikiwa ufunguo huu haujatumiwa, basi kuunganisha kwenye database itawezekana ikiwa hakuna nenosiri. Pia, hakuna mtu anayekataza kuingia nenosiri katika amri, na haipaswi kuwa na nafasi baada ya ufunguo (kwa mfano: -p1234567890, ambapo 1234567890 ni nenosiri);
  • tovuti_ru hili ni jina la hifadhidata kwenye seva ya MySql;
  • tovuti_ru.sql hii ni faili ya kutupa.

Ili kufanya nakala ya chelezo ya hifadhidata kadhaa, unaweza kutumia ufunguo -B na taja hifadhidata kadhaa, hapa kuna mfano:

Mysqldump -uroot -h10.30.30.10 -p site_ru site2_ru site3_ru > sites.sql

Ikiwa hali haikupi muda wa kufikiria, na unahitaji kufanya nakala ya hifadhi ya hifadhidata zote, basi katika hali hii unaweza kutumia ufunguo. --database-zote, hapa kuna mfano:

Mysqldump -uroot -h10.30.30.10 -p -A > all-db.sql

Kwa njia, kuna nuance.

Ikiwa utafanya chelezo ya hifadhidata kwenye kukimbia, na zaidi ya hayo, seva inayotumika kikamilifu, basi una hatari ya kupata ukiukaji miunganisho ya kimantiki. Kuna njia kadhaa za kuepuka hili.

Njia ya kwanza ni kufungia meza, i.e. unaweza kutumia --lock-tables paramu, hapa kuna mfano:

Mysqldump -uroot -h10.30.30.10 -p --lock-meza site_ru > site_ru.sql

Lakini wakati wa kuunda nakala rudufu, maombi ya mteja yatasimamishwa ... na kwa hivyo kunaweza kuwa na muda.

Njia ya pili ni kutumia --flush-log swichi wakati wa kuunda nakala rudufu. Ufunguo huu utafungwa logi ya zamani vitendo na itaunda mpya. Ikiwa mtu anaandika kitu wakati wa kuunda nakala, hii itaonyeshwa mwanzoni mwa logi na itawezekana kuhamisha mabadiliko haya kwenye hifadhidata. Ifuatayo, kuwa na uhakika, baada ya kukamilisha chelezo, unahitaji kuendesha amri mysqladmin -flush-logs na kuacha nakala ya logi ya binary iliyotangulia.

Kurejesha hifadhidata ya hifadhidata

Hapa matumizi ya "mysql" yatatawala tayari. Hapa kuna mfano:

Mysql -uroot -h10.30.30.10 -p site_ru< site_ru.sql

Njia nyingine, zaidi ya pedantic:

Mysql -uroot -p Weka nenosiri: Karibu kwenye kifuatiliaji cha MySQL. Amri zinaisha na; au\g. Kitambulisho chako cha muunganisho wa MySQL ni toleo la Seva 35: 5.6.35-1+deb.sury.org~xenial+0.1 (Ubuntu) Hakimiliki (c) 2000, 2016, Oracle na/au washirika wake. Haki zote zimehifadhiwa. Oracle ni chapa ya biashara iliyosajiliwa ya Oracle Corporation na/au washirika wake. Majina mengine yanaweza kuwa alama za biashara za wamiliki husika. Andika "msaada;" au "\h" kwa usaidizi. Andika "\c" ili kufuta taarifa ya sasa ya ingizo. mysql> tumia site_ru; mysql> chanzo tovuti_ru.sql;

Kweli, ikiwa hifadhidata yako imehifadhiwa kwenye kumbukumbu ya gz, basi unaweza kuchanganya amri za mysql na zcat kama hii:

Zcat tovuti_ru.sql.gz | mysql -uroot -h10.30.30.10 -p site_ru

Chaguzi zaidi za kutumia mysqldump

Kwa mfano, tunahitaji hifadhidata katika eneo la dev, sanduku la mchanga, kwa kusema, na saizi ya hifadhidata kuu ni kubwa sana. Unaweza kutumia kitufe cha -where="true limit 150", ambacho tutabainisha kwa uwazi sampuli ya data isiyozidi rekodi 150. Hapa kuna mfano:

Mysqldump -uroot -h10.30.30.10 -p --where="kikomo cha kweli 150" site_ru > site_ru.sql

Ikiwa tunahitaji tu muundo bila data, basi tunaweza kutumia --no-data swichi, hapa kuna mfano

Mysqldump -uroot -h10.30.30.10 -p --no-data site_ru > site_ru.sql

Ikiwa tunahitaji nakala ya jedwali moja tu, basi hapa kuna amri ya mfano:

Mysqldump -u root -p testdb tablename > testdb_table_backup.sql

Ikiwa tunahitaji nakala ya vichochezi, taratibu na matukio (kipanga ratiba kilichojengwa), basi hapa kuna mfano:

Mysqldump --no-create-info --no-data --triggers --routines --events -uroot -p site_ru | gzip > ~/database.sql.gz

Unaweza pia kuunda mara moja dampo la hifadhidata lililohifadhiwa. Unaweza kuifanya kama hii:

Mysqldump -uroot -p site_ru | gzip > /path/to/site_ru.sql.gz

Na unaweza pia kutaja tarehe ambayo kumbukumbu iliundwa, kama hii:

Mysqldump -uroot -p site_ru | gzip > `tarehe +/path/to/site_ru.sql.%Y%m%d.%H%M%S.gz`

Vifunguo vya kutumia mysqldump

Chini ni funguo maarufu za mysqldump:

Panua orodha...

  • --add-drop-database - Huongeza taarifa ya DROP DATABASE kabla ya kila taarifa ya CREATE DATABASE.
  • --add-drop-table - Huongeza taarifa ya TABLE DROP kabla ya kila taarifa CREATE TABLE.
  • --add-locks - Huongeza taarifa ya LOCK TABLES kabla ya utekelezaji na taarifa ya FUNGUA TABLE baada ya utekelezaji wa kila utupaji wa jedwali (ili kuharakisha ufikiaji wa MySQL).
  • --all-databases, -A - Huhifadhi majedwali yote kutoka kwa hifadhidata zote zinazodhibitiwa na seva ya sasa.
  • --ruhusu-manenomsingi - Ruhusu uundaji wa majina ya safuwima yanayolingana na manenomsingi. Kutokuwepo kwa migogoro kunahakikishwa kwa kuongeza jina la jedwali kama kiambishi awali kwa jina la kila safu.
  • -maoni, -i - Kigezo hiki hukuruhusu kuongeza kwenye dampo Taarifa za ziada, kama vile toleo la mysqldump, toleo la MySQL, jina la mwenyeji ambapo faili ya Seva ya MySQL.
  • --compact Chaguo hili husababisha mysqldump kuunda dampo kwa kutumia umbizo fupi zaidi iwezekanavyo. Kigezo ni kinyume cha -maoni.
  • --compatible=name - Kigezo hutoa pato ambalo linaendana na DBMS zingine au za zamani. Matoleo ya MySQL. Badala ya neno kuu la jina, unaweza kutumia: "ansi", "mysql323", "mysql40", "postgresql", "oracle", "mssql", "db2", "maxdb", "no_key_options", "no_table_options", "hakuna_chaguo_za_uga" . Unaweza kutumia thamani nyingi, zikitenganishwa na koma.
  • --complete-insert, -c — Tumia fomu kamili ya taarifa INGIZA (yenye majina ya safuwima).
  • --create-options - Inaongeza maelezo ya ziada ili KUUNDA taarifa za TABLE. Hii inaweza kuwa aina ya jedwali, thamani ya awali ya AUTO_INCREMENT, na vigezo vingine.
  • --databases, -B - Kigezo hukuruhusu kubainisha majina ya hifadhidata kadhaa ambazo ungependa kuzitengenezea dampo.
  • --imecheleweshwa - Tumia amri ya INSERT DELAYED unapoingiza safu mlalo.
  • --delete-master-logs - Seva kuu ya urudufishaji hufuta kiotomati kumbukumbu jozi (logbin) baada ya utupaji kutengenezwa kwa ufanisi kwa kutumia mysqldump. Chaguo hili huwezesha kiotomati chaguo la "--master-data".
  • --lemaza-funguo, -K - Kwa kila jedwali, zunguka taarifa INGIZA kwa vielezi /*!40000 ALTER TABLE tbl_name ZIMA VIFUNGUO */; na /*!40000 ALTER TABLE tbl_name WASHA VIFUNGUO */; katika matokeo ya dampo. Hii itaharakisha upakiaji wa data kwenye seva kwa jedwali kama MyISAM, kwani faharasa huundwa baada ya data yote kuingizwa.
  • --extended-insert, -e — Tumia amri ya INSERT na mpya syntax ya mistari mingi(huongeza ushikamano na utendaji wa waendeshaji wa pembejeo).
  • --flush-logs, -F - Andika data kwenye diski syslog kutoka kwa bafa ya seva ya MySQL kabla ya kuanza kutupa.
  • --force, -f - Endelea hata kama hitilafu ilitokea wakati wa mchakato wa kuunda dampo.
  • —hex-blob — Kigezo hukuruhusu kuwakilisha data ya jozi katika nyanja za aina BINARY, VARBINARY, BLOB na BIT katika umbizo la heksadesimali. Kwa hivyo mlolongo "abc" utabadilishwa na 0x616263.
  • --ignore-table=db_name.tbl_name - Inaruhusu jedwali la tbl_name la hifadhidata ya db_name kupuuzwa wakati wa kuunda dampo. Ikiwa unahitaji kuwatenga meza kadhaa kutoka kwa dampo, lazima utumie vigezo kadhaa "--ignore-table", ukibainisha jedwali moja katika kila parameta.
  • --ingiza-puuza - Inaongeza neno kuu PUUZA kwenye taarifa INGIZA.
  • --lock-all-tables, -x - Kubainisha chaguo hili husababisha majedwali yote katika hifadhidata zote kufungwa huku utupaji kamili wa hifadhidata zote ukiundwa.
  • --lock-tables, -l - Kubainisha chaguo hili hufunga majedwali ya hifadhidata ambayo utupaji wa taka unatengenezewa.
  • --no-autocommit - Inajumuisha taarifa zote za INGIZA kwenye jedwali moja katika muamala mmoja, na kusababisha upakiaji wa data kwa kasi zaidi.
  • --no-create-db, -n - Hukandamiza utupaji wa taarifa za CREATE DATABASE ambazo huongezwa kiotomatiki wakati wa kutumia --databases na --all-databases chaguo.
  • --no-data, -d — Hukandamiza uundaji wa taarifa za INGIZA kwenye dampo, ambazo zinaweza kuwa muhimu wakati wa kutupa muundo wa hifadhidata bila data yenyewe.
  • —chagua — Kigezo kimekusudiwa kuongeza kasi ya kuhifadhi data na ni njia ya mkato inayojumuisha chaguzi zifuatazo: — haraka — ongeza-tone-meza — ongeza-kufuli — tengeneza-chaguo — Zima-funguo — ingiza-kuongeza —kufuli -meza -set-charset . Tangu MySQL 4.1, --opt chaguo hutumiwa na chaguo-msingi, i.e. Chaguzi zote hapo juu zinawezeshwa na chaguo-msingi, hata kama hazijabainishwa. Ili kuwatenga tabia hii, lazima utumie --skip-opt parameta
  • --order-by-primary - Kubainisha kigezo husababisha hili kutokea. kwamba kila meza imepangwa ufunguo wa msingi au faharasa ya kwanza ya kipekee.
  • --bandari, -P - Nambari Bandari ya TCP, iliyotumika kuunganishwa na mwenyeji.
  • —protocol=(TCP|SOCKET|PIPE|MEMORY) — Kigezo kinakuruhusu kuweka itifaki ya kuunganisha kwenye seva.
  • —quick, -q — Inakuruhusu kuanza kutengeneza dampo bila kungoja mzigo kamili data kutoka kwa seva na kwa hivyo kuhifadhi kumbukumbu.
  • --quote-majina, -Q - Hifadhidata ya maeneo, jedwali, na safu wima kwenye vijiti `. Kama ya MySQL 4.1, chaguo hili linawezeshwa na chaguo-msingi.
  • --replace - Inaongeza REPLACE neno kuu kwa taarifa INSERT. Chaguo hili lilionekana kwanza katika MySQL 5.1.3.
  • --result-file=/njia/to/faili, -r /njia/to/faili — Kigezo hutuma utupaji kwa faili. Chaguo hili ni muhimu sana kwenye Windows, bila kutumia mstari wa amri. wakati unaweza kuelekeza matokeo kwa faili kwa kutumia mlolongo > na >>.
  • --routines, -R — Chaguo hili hutengeneza utupaji wa taratibu na vitendakazi vilivyohifadhiwa. Inapatikana kwa MySQL 5.1.2.
  • --single-transaction - Chaguo hutengeneza dampo kama muamala mmoja.
  • —ruka-maoni — Kigezo hiki hukuruhusu kukandamiza matokeo ya habari ya ziada kwenye dampo.
  • --socket=/njia/to/tundu, -S /njia/to/soketi - Faili ya tundu ya kuunganisha kwa localhost.
  • —tab=/njia/, -T /njia/ — Unapotumia kigezo hiki, faili mbili tofauti huundwa kwenye saraka ya njia kwa kila jedwali: tbl_name.sql, ambayo ina taarifa ya CREATE TABLE, na tbl_name.txt, ambayo ina data ya jedwali iliyotenganishwa na kichupo . Umbizo la data linaweza kubatilishwa kwa uwazi kwa kutumia chaguo --fields-xxx na --lines-xxx.
  • --tables - Inabatilisha --databases (-B) kigezo. Hoja zote zinazofuata kigezo hiki zinachukuliwa kama majina ya jedwali.
  • -vichochezi - Hutengeneza dampo la vichochezi. Chaguo hili limewezeshwa na chaguo-msingi. Ili kuizima, tumia --skip-triggers chaguo.
  • --events, -E - Hutengeneza dampo la tukio. Tazama Mratibu wa Tukio la MySQL au kidhibiti cha tukio kilichojengewa ndani katika MySQL.
  • —tz-utc — unapotumia kigezo hiki, opereta kama vile SET TIME_ZONE=’+00:00′ ataongezwa kwenye dampo, jambo ambalo litaruhusu utupaji kubadilishana katika saa za maeneo tofauti.
  • --verbose, -v - Hali ya pato iliyopanuliwa. Hitimisho zaidi maelezo ya kina kuhusu kazi ya programu.
  • --version, -V - Onyesha habari kuhusu toleo la programu.
  • —where=’where-condition’, -w ‘where-condition’ — Tupa rekodi zilizochaguliwa pekee. Tafadhali kumbuka kuwa alama za nukuu zinahitajika.
  • --xml, -X - Inawakilisha utupaji wa hifadhidata kama XML.
  • --first-slave, -x - Hufunga majedwali yote katika hifadhidata zote.
  • —debug=…, -# — Fuatilia maendeleo ya programu (kwa utatuzi).
  • --msaada - Pato habari ya usuli na uondoke kwenye programu.

Wazo la kifungu ni kuunda mwongozo wa hali ya juu wa kusanikisha na kufanya kazi na programu ya mysqldump. Kutumia mifano mingi na kukusanya kila kitu chaguzi muhimu na vigezo vya kufanya kazi na shirika hili. Ni ngumu kuweka kila kitu kwenye kifungu kimoja, kwa hivyo kila kitu kitakuwa kifupi na kwa uhakika. Ikiwa mtu haelewi kitu, tafadhali toa maoni yako juu ya kifungu hicho.

Sehemu:

Ufungajimysqldup:

mysqldump ni nini?

MySQLdump-Hii programu ya seva, ambayo hukuruhusu kuhifadhi hifadhidata (hapa inajulikana kama kutupa) na kuzihifadhi faili tofauti. Wakati huo huo, unaweza kufanya mipangilio rahisi ya kutupa: hifadhidata kadhaa au zote, kuhifadhi kwenye gzip, kuongeza kufuli, amri za kuacha na mengi zaidi. Pia inawezekana geuza uingizaji chelezo za hifadhidata. Inaweza kufanywa na kwa kutumia PHP, lakini hii haikubaliki kwa miradi mikubwa ambayo ina uzito mwingi wa data.

Mpango huu ni muhimu sana katika kusafirisha na kuagiza data kutoka kwa hifadhidata. Inaweza kusanikishwa kama kawaida kwenye mwenyeji wako (kwa usahihi zaidi, seva ya mysql). Lakini ili kuboresha ujuzi wako katika kufanya kazi na mysqldump na kujifunza jinsi ya kuiweka, unaweza kuiweka kwenye dewer. Hiyo ndiyo tutafanya sasa.

Pakua mysqldump

Unaweza kupakua programu ya mysqldump kila wakati kwenye wavuti yetu, na kupakua programu ni bure kabisa. Pakua mysqldump kutoka kwa kiunga cha moja kwa moja hapa chini.

Jinsi ya kufunga mysqldump?

Tutasakinisha seva ya ndani Denwer. Kufunga programu ni rahisi na rahisi, kwa kufanya hivyo, fuata maagizo na viwambo vilivyotolewa hapa chini.

1.Nakili faili ya mysqldump.exe kwenye folda ya Denver:

D:\WebServers\usr\local\mysql5\bin\
Katika kesi hii, unaweza kuwa na jina tofauti kidogo kwa folda ya mysql5, kwa mfano mysql-5.1 au iliyorekebishwa kidogo. Kwa hivyo, kwa uwazi zaidi, hapa chini kuna picha ya skrini:

2. Kuzindua Denver

Hakika wewe mwenyewe unajua jinsi ya kuzindua Denwer.


3.Zindua koni:

Anza-> Run->cmd.mfano au kwenye Windows 7: Anza-> Tafuta-> Ingizacmd.exe->Ingiza, kama inavyoonyeshwa kwenye picha ya skrini:

4. Majaribio:

Kutumia maagizo kwenye koni, nenda kwa diski ya kawaida ya Denver (nina W:\) na kwenye folda iliyo na programu ya mysqldump. Ili kuthibitisha utekelezaji wa amri, bonyeza Enter.

Ingiza amri:

W:- nenda kwa Denver virtual disk

CDusr\mtaa\mysql5\bin- nenda kwenye folda na programu

mysqldump -uroot your_db_name>file_name.sql- kupima, kutupa hifadhidata ya kiholela kwenye faili, ambayo itahifadhiwa kwenye folda ya pipa.

Usakinishaji wangu ulifanikiwa, natumai yako pia. Kwenye folda ya bin tunapata faili ya chelezo ya hifadhidata. Ili kujifunza jinsi ya kutumia programu kwa upana zaidi, soma sehemu zifuatazo za kifungu.

Kuanza: usafirishaji wa hifadhidata na uagizaji

Usafirishaji wa hifadhidata

Tayari tumeweka programu na tumejifunza jinsi ya kutumia console. Tayari tumefanya jaribio la kutupa. Sasa hebu tufanye utupaji wa hifadhidata rahisi kwenye saraka tunayohitaji. Ili kufanya hivyo, niliunda hifadhidata iliyotumiwa hapo awali inayoitwa "mtihani". Iko kwenye seva ya eneo la dewer. Chini hutolewa maagizo ya hatua kwa hatua console kwa kutupa hifadhidata ya majaribio kwenye folda inayotakiwa na faili inayotakiwa.

W: cdusr\local\mysql5\bin mysqldump -uroot test>D:\test\easydump.sql

Picha ya skrini hapa chini inaonyesha faili ya kutupa kwenye folda ya majaribio:

Uhamishaji umekamilika. Sasa hebu tujaribu kurudisha faili hii kwenye seva yetu.

Ingiza Hifadhidata

Ili kuagiza hifadhidata, futa hifadhidata katika phpmyadmin na utumie amri ifuatayo katika cmd.exe:

Mtihani wa Mysql -uroot

Kumbuka muhimu: ikiwa wakati wa kuuza nje tulitumia mysqldump..., basi wakati wa kuingiza unahitaji kuanza amri na mysql. Mfano huu ni matumizi ya kimsingi ya programu tumizi ya mysqldump kuunda chelezo za hifadhidata. Utapata amri na mifano zaidi katika sehemu na makala.

Mifano ya MySQLdump

Ifuatayo ni mifano inayotumika sana ya kutumia mysqldump. Ambayo huwezi tu kufanya nakala rudufu, lakini pia kuongeza vigezo vingine vya chelezo: compression kwa kutumia gzip, kuongeza tarehe ya chelezo, kutupa meza chache tu au muundo wa hifadhidata, kwa kutumia mipangilio inayoweza kubadilika. Chaguzi hizi zinakuwezesha kuongeza kasi ya utekelezaji wa kutupa na kutumia nafasi ya disk kwa kiasi kikubwa.

Kutengeneza dampo

mysqldump -uUSER -h82.82.82.82 -pPASSWORD DATABASE > /path/to/file/dump.sql

-u au --mtumiaji=...- Jina la mtumiaji

-h au --mwenyeji=... - mwenyeji wa mbali(kwa localhost unaweza kuacha parameta hii)

-p au --nenosiri- omba nenosiri

hifadhidata- jina la hifadhidata iliyosafirishwa

/path/to/file/dump.sql- njia na faili kwa ajili ya kutupa

Tunatupa hifadhidata kadhaa, kwa hili tunatumia --databases sifa au -B kwa ufupi, angalia mfano hapa chini:

Mysqldump -uroot -h82.82.82.82 -p -B hifadhidata1 hifadhidata2 hifadhidata3 > hifadhidata.sql

Ikiwa unataka kuunda utupaji wa hifadhidata zote, lazima utumie parameta ya -all-databases au -A kwa ufupi, angalia mfano:

Mysqldump -uroot -h82.82.82.82 -p -A > hifadhidata zote.sql

Kuunda muundo wa hifadhidata bila data

Ili kufanya hivyo, unahitaji kutumia --no-data parameta kama inavyoonyeshwa kwenye mfano hapa chini:

Mysqldump --no-data - uUSER -pPASSWORD DATABASE > /path/to/file/schema.sql

Unda utupaji wa jedwali moja tu au kadhaa za hifadhidata

mysqldump -uUSER -pPASSWORD DATABASE TABLE1 TABLE2 TABLE3 > dump.sql

Unda dampo na uihifadhi kwenye kumbukumbugzip

mysqldump -u MTUMIAJI -pPASSWORD DATABASE | gzip > /path/to/outputfile.sql.gz

Unda dampo na tarehe katika jina la faili

mysqldump -uUSER -pPASSWORD DATABASE | gzip > `date +dump.sql.%Y%m%d.%H%M%S.gz`

Kutumia sifa za ziada

mysqldump -Q -c -e -uUSER -pPASSWORD DATABASE > /path/to/file/dump.sql

Kama ilivyoelezwa hapo awali, sifa hizi hupunguza saizi ya mwisho ya faili na kuharakisha mchakato wa chelezo. Usahihi zaidi:

-Q hufunga majina katika nukuu za nyuma

-c inaingiza kamili, pamoja na majina ya safu

-e hufanya kuingiza kupanuliwa.

Kufanya utupaji wa hifadhidata (chelezo) ni muhimu sana. Kwa hivyo nilitoa maoni na mifano kwa hii matumizi bora kama mysqldump.

mysqldump - matumizi ambayo hukuruhusu kutupa yaliyomo kwenye hifadhidata au seti ya hifadhidata ili kuunda nakala rudufu au kutuma data kwa seva nyingine ya hifadhidata ya SQL (sio lazima seva ya MySQL). Dampo litakuwa na seti ya amri za SQL ili kuunda na/au kujaza majedwali.

mysqldump-u mzizi -p -f jina_database >

Na timu hii tunafanya chelezo ya hifadhidata data chini ya jina_database ya kuendesha C katika faili mydb_backup_name_database.txt

Sio lazima kuunda faili; MySQL itaiunda yenyewe.

mysql-u mzizi -p -f jina_database< C:\mydb_backup_name_database.txt

Kwa amri hii tunaingiza data ya chelezo kutoka kwa faili C:\mydb_backup_name_database.txt

Kumbuka: -f, --force ni chaguo ambalo linabainisha kuendelea hata kama hitilafu ya SQL itapokelewa, i.e. kupuuza makosa. Kwa mfano, ikiwa safu mlalo inayofanana tayari ipo kwenye jedwali.

Ili kuepuka kuuliza nenosiri, unahitaji kuandika mara moja baada ya -p, yaani, bila nafasi. Ikiwa nenosiri Pwd, basi mfano ungeonekana kama hii:

mysqldump-u mzizi -p Pwd-f name_database > C:\mydb_backup_name_database.txt

Ikiwa unatumia mara nyingi amri hii, basi ni bora kufanya mtumiaji binafsi Na haki zinazohitajika, ili kufanya nenosiri la mizizi lionekane kidogo

Hebu tuzingatie zaidi mipangilio mizuri mysqldup:

--database inaruhusu mysqldump kujumuisha CREATE DATABASE /*!33333 IKIWA HAIPO*/ DBNAME na TUMIA amri za DBNAME katika hati ya uokoaji. Hii itakuruhusu kuunda hifadhidata za kufanya kazi kutoka mwanzo. Hiyo ni, bila kutumia --databases, inadhaniwa kuwa mtumiaji anarejesha hifadhidata moja na kubainisha wazi ambapo data iliyorejeshwa inapaswa kuwekwa. Ikiwa chelezo imeundwa kwa lengo la kufanya nakala ya kazi kikamilifu ya data, kwa mfano, kwenye seva nyingine ya MySQL, basi unahitaji kutumia ufunguo huu;

--all-databases hukuruhusu kutengeneza nakala za hifadhidata zote zilizopo seva hii ya MySQL. Ikiwa unahitaji kufanya nakala za hifadhidata fulani tu, unahitaji tu kuzitaja zikitenganishwa na nafasi wakati wa kupiga simu mysqldump kutoka kwa safu ya amri (tazama hapo juu);

Ufunguo --msaada. Programu ya mysqldump ina matoleo mengi. Unaweza kuona ni vipengele vipi vinavyotumika hasa na toleo lako kwa kutumia ufunguo huu;

--ongeza-kudondosha-meza- swichi ambayo italazimisha mysqldump kuongeza amri ya meza ya kushuka kwenye hati inayosababisha kabla ya kuunda meza. Hii itakuruhusu kuzuia makosa kadhaa wakati wa kurejesha hifadhidata kutoka kwa nakala rudufu. Kwa kweli, unahitaji kuzingatia kwamba meza ziko kwenye nakala ya kazi (ikiwa meza zilizo na jina moja zipo kwenye chelezo) zitafutwa kutoka kwa hifadhidata kuu na kurejeshwa kutoka kwa chelezo kabla ya kurejesha kutoka kwa nakala rudufu;

--hakuna-data. Kwa kutumia ufunguo huu, unaweza haraka kutengeneza nakala ya muundo wa jedwali/database bila data yenyewe. Kwa mfano, umeunda meza ngumu na ungependa kuhifadhi muundo wake kwa siku zijazo, lakini hauitaji data yenyewe iliyo kwenye jedwali hili kwenye nakala ya nakala;

--matokeo-faili=...- swichi hii inaweza kutumika kuelekeza pato kwa faili. Unaweza kutumia uelekezaji upya wa Unix wa kawaida na ">" amri, au unaweza kutumia kitufe hiki. Nani anapenda nini;

Mwingine sana ushauri wa kusaidia juu ya kutumia mysqldump katika mazingira ya mwenyeji. Kama sheria, wakati wa kutumia mwenyeji, vikwazo vingine vinawekwa kwa mtumiaji. Kwa mfano, huwezi kukopa zaidi ya kiasi fulani kumbukumbu ya kimwili(RAM, RAM). mysqldump kwa chaguo-msingi huweka data zote zilizopokelewa kutoka kwa seva ya MySQL kwenye kumbukumbu, na kisha kuziandika zote kwa diski. Ipasavyo, ikiwa mtoaji hukuruhusu kukopa, kwa mfano, 30 MB ya kumbukumbu, na hifadhidata, ambayo unakili kwa kutumia mysqldump, inachukua 50 MB, kwa kweli, kosa litatokea hapa - mysqldump haitaweza kufanya kazi kwa usahihi. na itaanguka, ambayo itakujulisha juu yake. Ili "kulazimisha" mysqldump kuandika data moja kwa moja kwa diski, badala ya kuihifadhi, hata kwa muda, kwenye kumbukumbu, tumia ufunguo. --haraka. Hii itasuluhisha shida.

Hapa kuna mifano michache muhimu zaidi:

mysqldump -u mzizi -p Pwd-f --default-character-set=cp1251 DBNAME| gzip -c > filename.txt .gz

Unaweza kufungua kumbukumbu kama hiyo kwa amri:

gunzip filename.txt.gz

Ili kujua ni tarehe gani nakala rudufu ilifanywa, unaweza kuandika amri ifuatayo:

mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME | gzip -c > `tarehe "+%Y-%m-%d"`.gz

na ikiwa itabidi utengeneze utupaji na usimbuaji tofauti, basi ni rahisi kutumia anuwai:

kuweka DBCHARACTER= utf8

kuweka DBNAME= uvunjaji

mysqldump -u mzizi -p Pwd-f --default-character-set=$ DBCHARACTER $DBNAME| bzip2 -c > sql. $DBNAME.`tarehe "+%Y-%m-%d"`.bz2

Ikiwa unataka kuhariri uondoaji wa kumbukumbu za zamani, jaribu kutumia cron na kupata amri, ambayo kwa kawaida hupatikana katika unix. Kukimbia mara kwa mara

tafuta~/directory-with-archives -jina "*.gz" -mtime +7 -exec rm -f () \;

Kwa hivyo, utafuta kumbukumbu ambazo ni "zamani" kuliko siku saba.

Huduma hii hukuruhusu kupata utupaji ("picha") ya yaliyomo kwenye hifadhidata au mkusanyiko wa hifadhidata ili kuunda nakala rudufu au kutuma data kwa seva nyingine ya hifadhidata ya SQL (si lazima seva ya MySQL). Dampo litakuwa na seti ya amri za SQL ili kuunda na/au kujaza majedwali.

Kama nakala ya chelezo imeundwa kwenye seva, basi badala ya matumizi yaliyoelezwa unapaswa kutumia mysqlhotcopy . Tazama sehemu ya 4.8.6 mysqlhotcopy, Kunakili hifadhidata na majedwali ya MySQL.

Shell> hifadhidata ya mysqldump au mysqldump --databases DB1 au mysqldump --all-databases

Ikiwa hutabainisha majina ya jedwali au kutumia --databases au --all-databases chaguo, utupaji wa hifadhidata nzima (mtawalia, wa hifadhidata zote) utapatikana.

Orodha ya chaguzi zinazoungwa mkono na toleo lako mahususi la mysqldump inaweza kupatikana kwa kuendesha mysqldump --help amri.

Tafadhali kumbuka kuwa matumizi ya mysqldump, yanayotumika bila --quick au --opt chaguzi, itapakia matokeo yote kwenye kumbukumbu kabla ya kutupa matokeo ya uchotaji wa habari. Hii inaweza kusababisha matatizo wakati wa kutupa hifadhidata kubwa.

Kumbuka kuwa haupaswi kutumia --opt au -e chaguzi ikiwa unakusudia kuitumia kupata utupaji taka. nakala mpya mysqldump na kisha uicheze kwenye seva ya MySQL ya zamani sana.

Huduma ya mysqldump inasaidia chaguzi zifuatazo:

Vifungo vya kuongeza Ongeza amri LOCK TABLES kabla ya utekelezaji na UNLOCK TABLE baada ya utekelezaji wa kila utupaji wa jedwali (ili kuharakisha ufikiaji wa MySQL). --add-drop-table Ongeza amri ya DROP TABLE kabla ya kila amri ya CREATE TABLE. -A, --all-databases Tupa hifadhidata zote. Sawa na --databases chaguo, ikibainisha hifadhidata zote. -a, --all Washa chaguo zote za kuunda kitu mahususi cha MySQL. --ruhusu-manenomsingi Ruhusu uundaji wa majina ya safuwima yanayolingana na manenomsingi. Kutokuwepo kwa migogoro kunahakikishwa kwa kuongeza jina la jedwali kama kiambishi awali kwa jina la kila safu. -c, --kamilisha-ingiza Matumizi amri kamili INGIZA (pamoja na majina ya safu wima). -C, --compress Tumia mbano wa taarifa zote kati ya mteja na seva ikiwa zote zinaauni mbano. -B, --databases Tupa hifadhidata nyingi. Kumbuka tofauti katika matumizi: katika kesi hii hakuna meza zilizotajwa. Majina yote ya hoja yanachukuliwa kama majina ya hifadhidata. TUMIA taarifa db_name; imejumuishwa kwenye pato kabla ya kila hifadhidata mpya. --imecheleweshwa Tumia amri ya INSERT DELAYED wakati wa kuingiza safu mlalo. -e, --extended-insert Tumia amri ya INSERT na sintaksia mpya ya mistari mingi (inaboresha ushikamano na utendaji wa taarifa za ingizo). -#, --debug[=option_string] Fuatilia maendeleo ya programu (kwa utatuzi). --help Onyesha maelezo ya usaidizi na uondoke kwenye programu. --mashamba-yamesitishwa-kwa=... --mashamba-yaliyoambatanishwa-na=... --mashamba-kwa-hiari-yaliyofungwa-na=... --mashamba-yameepukwa-na=... --mistari- terminated-by=... Chaguzi hizi zinatumika pamoja na -T chaguo na zina maana sawa na taarifa zinazolingana za LOAD DATA INFILE . Tazama Angalia sehemu ya 6.4.9 PAKIA DATA ISIYO NA TAARIFA YA Sintaksia. -F, --flush-logs Andika data ya kumbukumbu ya mfumo kutoka kwa bafa ya seva ya MySQL hadi kwenye diski kabla ya kuanza kutupa. -f, --force, Endelea hata kama unapokea hitilafu ya SQL wakati wa kutekeleza utupaji wa jedwali. -h, --host=.. Tupa data ya seva ya MySQL kwenye seva pangishi iliyobainishwa. Thamani chaguo-msingi ya seva pangishi ni localhost. -l, --lock-meza. Funga meza zote kabla ya kuanza kutupa. Majedwali yamefungwa kwa taarifa ya SOMA MTAA ili kuruhusu uandishi unaofanana kwa jedwali la MyISAM. Ikumbukwe kwamba wakati wa kutekeleza utupaji wa mkusanyiko wa hifadhidata, chaguo --lock-tables hufunga majedwali ya kila hifadhidata kibinafsi. Kwa hivyo, kutumia chaguo hili hakuhakikishi kuwa majedwali yatakuwa sawa kimantiki ndani ya hifadhidata hizi. Katika hifadhidata tofauti, jedwali zinaweza kuwa katika hali tofauti kabisa wakati utupaji unafanywa. -K, --lemaza-funguo Inaongeza usemi /*!40000 ALTER TABLE tb_name ZIMA VIFUNGUO */; na /*!40000 ALTER TABLE tb_name WASHA VIFUNGUO */; katika matokeo ya matokeo. Hii itaharakisha upakiaji wa data kwenye seva ya MySQL 4.0, kwani faharisi huundwa baada ya data yote kuingizwa. -n, --no-create-db Katika towe, usemi CREATE DATABASE /*!32312 KAMA HAIPO*/ db_name; itakosekana. Mstari huu itaongezwa wakati wa kutumia --databases au --all-databases chaguzi. -t, --no-create-info Usirekodi maelezo ya uundaji wa jedwali (CREATE TABLE amri). -d, --no-data Usiandike habari kutoka kwa safu mlalo za jedwali. Hii ni muhimu sana kwa muundo wa meza ya kutupa! --opt Sawa na --quick --add-drop-table --add-locks --extended-insert --lock-tables . Inapaswa kutoa zaidi haraka dampo kwa kusoma kwenye seva ya MySQL. -pyour_pass, --password[=password_yako] Nenosiri la kutumia unapounganisha kwenye seva. Ikiwa =your_pass haijatolewa, mysqldump itakuomba nenosiri. -P port_num, --port=port_num Nambari ya mlango wa TCP/IP inayotumiwa kuunganishwa kwa seva pangishi (hutumika wakati wa kuunganishwa na wapangishi mbali na localhost , ambayo hutumia soketi za Unix). -q, --quick Tupa la pato moja kwa moja kwa pato la kawaida stdout bila kuhifadhi ombi. Kazi ya mysql_use_result() inatumika kwa hili. -Q, --quote-names Jedwali la nukuu na majina ya safu wima bila herufi ``". -r, --result-file=... Toleo la moja kwa moja faili maalum. Chaguo hili linafaa kutumika kwenye MS DOS kwa sababu inazuia herufi mpya "\n" isibadilishwe kuwa mfuatano "\n\r" ( mstari mpya+ kurudi kwa gari). --single-transaction Chaguo hili linatoa amri ya BEGIN SQL kabla ya kutekeleza utupaji wa data kutoka kwa seva. Mara nyingi hutumiwa na majedwali ya InnoDB na kiwango cha kutengwa cha READ_COMMITTED, kwa kuwa ni katika hali hii ambapo unaweza kutupa hali thabiti ya hifadhidata baada ya kutekeleza amri ya BEGIN bila kuzuia programu zozote. Unapotumia chaguo hili, lazima ukumbuke kwamba wakati wa kufanya dampo, meza tu za shughuli zitakuwa katika hali thabiti, i.e. Baadhi ya jedwali za MyISAM au HEAP bado zinaweza kubadilisha hali yao chaguo hili linapotumika. Chaguo la --single-transaction liliongezwa katika toleo la 4.0.2. Haishirikiani na chaguo la --lock-tables kwa sababu amri ya LOCK TABLES inabatilisha shughuli iliyotangulia. -S /path/to/socket, --socket=/njia/to/socket Faili ya tundu ya kuunganisha kwa localhost (mwenyeji chaguomsingi). --tables Inabatilisha --databases (-B) chaguo. -T, --tab=path-to-some-directory Kwa kila jedwali, huunda faili `table_name.sql" iliyo na amri za SQL CREATE kuunda jedwali, na faili `table_name.txt" iliyo na data ya jedwali. Faili ya `.txt' imeumbizwa kulingana na --fields-xxx na --lines--xxx chaguo. Kumbuka: Chaguo hili hufanya kazi tu ikiwa matumizi ya mysqldump yanaendeshwa kwenye mashine sawa na daemon ya mysqld, na mtumiaji/kikundi kinachoendesha. mkondo huu mysqld (kawaida mtumiaji wa mysql na kikundi cha mysql) lazima awe na ruhusa ya kuunda/kuandika faili kwa anwani maalum. -u mtumiaji_jina, --user=jina_la_jina Mtumiaji wa MySQL-server, inayotumiwa wakati wa kuunganisha kwenye seva. Thamani chaguo-msingi ni jina la mtumiaji la Unix. -O var=chaguo, --set-variable var=option Weka thamani tofauti. Vigezo vinavyopatikana kwa matumizi vimeorodheshwa hapa chini. -v, --verbose Hali ya pato iliyoimarishwa. Inaonyesha maelezo ya kina zaidi kuhusu uendeshaji wa programu. -V, --version Maelezo ya toleo la kuchapisha na uondoke kwenye programu. -w, --where="where-condition" Tupa rekodi zilizochaguliwa pekee. Tafadhali kumbuka kuwa alama za nukuu zinahitajika. "--where=user="jimf"" "-wuserid>1" "-wuserid -X, --xml Inawakilisha utupaji hifadhidata kama XML. -x, --first-slave Hufunga majedwali yote katika hifadhidata zote. -O net_buffer_length=#, ambapo # Matumizi ya kawaida ya mysqldump ni kucheleza hifadhidata zote Tazama sehemu ya 4.4.1 Kuhifadhi hifadhidata mysqldump --opt hifadhidata > backup-file.sql

Hifadhidata ya Mysql

Mysql -e "chanzo /patch-to-backup/backup-file.sql" hifadhidata

Huduma hii mara nyingi hutumiwa kuhamisha habari kutoka kwa hifadhidata hadi seva nyingine ya MySQL:

Mysqldump --opt hifadhidata | mysql --host=remote-host -C hifadhidata

Inawezekana kabisa kutupa hifadhidata nyingi kwa amri moja:

Mysqldump --databases database1 > my_databases.sql

Ikiwa unahitaji kutupa hifadhidata zote, unaweza kutumia:

Mysqldump --all-databases > all_databases.sql

Makala haya yanaweza kuwa na manufaa ikiwa una tovuti inayotumia mfumo wa usimamizi wa maudhui (Joomla, WordPress, OpenCart, n.k.) na ukaamua kuihamisha hadi kwenye seva nyingine. Hii haihitaji tu uhamisho wa faili za tovuti, lakini pia uhamisho wa . Kabla ya kuanza kuhama tovuti yako, unahitaji kupata nzuri na uiagize ili kupata ufikiaji wa akaunti yako mpya ya mwenyeji. Sisi, kwa mfano, tunatoa tofauti , Joomla na PrestaShop. Ikiwa unataka kuhamisha tovuti yako hadi kwa jina jipya na unahitaji, chukua muda wako. Mpango wetu mwenyeji wa kawaida S4 itakupa kikoa kama zawadi. Ikiwa upangishaji pamoja hautoshi kwa tovuti yako, unaweza kuagiza VPS au .

Ili kuhamisha hifadhidata, lazima kwanza uunde utupaji wake, ambayo ni, weka yaliyomo kwenye faili tofauti ya sql. Hii inafanywa kwenye menyu phpMyAdmin kwenye upangishaji kutoka ambapo unahamisha tovuti. Ingia kwa phpMyAdmin, chagua hifadhidata ambayo inahitaji kuhamishwa upande wa kushoto, na ubonyeze " Hamisha»katika menyu ya juu.

Sanduku la mazungumzo litafungua ambalo lazima uchague aina Hifadhidata za SQL, kisha bonyeza kitufe sawa. Subiri wakati faili ya hifadhidata inapakuliwa kwenye kompyuta yako.

Sasa faili hii lazima iwekwe kwa usahihi kwenye mwenyeji wetu. Ili kufanya hivyo, lazima kwanza uunde hifadhidata ya MySQL katika akaunti yako ya cPanel, uongeze mtumiaji kwake na uipe haki. Hapo chini tunaelezea jinsi ya kuunda hifadhidata katika MySQL.

Nenda kwa cPanel na upate sehemu " Hifadhidata", chagua"".

Dirisha jipya litafungua. Katika hatua ya 1, ingiza jina la hifadhidata. Tafadhali kumbuka kuwa jina la hifadhidata litaangaziwa kila wakati; nusu ya kwanza ya jina itakuwa na jina la akaunti ya cPanel.

Baada ya kuingiza jina, bonyeza " Hatua ifuatayo».

Katika hatua ya 2, unahitaji kuunda mtumiaji wa MySQL kwa hifadhidata na kuweka nenosiri lake. Baada ya kuingiza data yote, bofya " Unda mtumiaji».

Wakati wa kuweka haki za mtumiaji aliyeundwa, chagua chaguo " HAKI ZOTE"na nenda kwa hatua inayofuata.

Ikiwa kila kitu kilifanyika kwa usahihi katika hatua za awali, Mchawi wa Hifadhidata atakujulisha kuwa uundaji wa hifadhidata kwenye mwenyeji umekamilika kwa ufanisi.

Sasa unaweza kupata hifadhidata iliyoundwa kwenye orodha hifadhidata zinazopatikana MySQL kwenye menyu ya paneli ya kudhibiti ya jina moja.

Sasa, ili kurejesha hifadhidata ya MySQL, tunaingiza kwenye hifadhidata iliyoundwa yaliyomo kwenye faili iliyohifadhiwa kutoka kwa mwenyeji wa zamani na kiendelezi. .sql. Ili kufanya hivyo ukurasa wa nyumbani cPanel chagua kipengee cha menyu " phpMyAdmin” katika sehemu hiyo hiyo “ Hifadhidata" Katika dirisha linalofungua, chagua hifadhidata mpya iliyoundwa kutoka kwa menyu iliyo upande wa kushoto na ubonyeze kwenye kichupo " Ingiza»katika menyu ya juu.

Bofya kitufe Chagua Faili", kwenye kisanduku cha mazungumzo, chagua faili ya sql iliyohifadhiwa hapo awali na uipakie kwa mwenyeji. Hakikisha aina ya usimbaji ni utf-8. Baada ya kubofya Sawa, subiri ujumbe unaoonyesha kuwa uagizaji wa hifadhidata ulifanikiwa.

Katika hatua hii, hatua zote muhimu za kuhamisha hifadhidata hadi nyingine zimekamilika.