Kai jie bus baigti „MySQL“ duomenų bazės atsarginės kopijos, įprasta naudoti komandą mysqldump jokių variantų. Tačiau ši komanda turi daug įdomių parinkčių, leidžiančių atlikti išplėstines atsargines kopijas.
Pagal numatytuosius nustatymus „mysqldump“ komanda sukuria visų duomenų bazės lentelių SQL struktūros kopiją nurodyta, tekstiniame faile sql. Jei norite įtraukti tik vieną ar daugiau lentelių, įveskite jų pavadinimus po duomenų bazės pavadinimo.
Iš terminalo lango „mysql“ kataloge:
# Atsarginė vieno stalo kopija $ mysqldump -user = user --password = lentelės duomenų bazės raktas> backup_sql
# Atsarginė trijų lentelių kopija $ mysqldump -user = user --password = duomenų bazės raktas table1 table2 table3> backup_sql1 arba 3 lentelių pavyzdžiai.
1. Išskyrus kai kurias lenteles iš atsarginės kopijos
Kad į atsarginę kopiją neįtrauktume konkrečios lentelės, turime ją nurodyti pasirinkdami --ignore-table, kurios reikšmė turi būti nurodyta
Jei, pavyzdžiui, darote duomenų bazės, vadinamos komercija, atsarginę kopiją, bet nenorite, kad būtų įtraukta lentelė, vadinama pardavimais, paleiskite šią komandą:
$ mysqldump -vartotojas = vartotojas -slaptažodis = slaptažodis --ignore -table = merchant.sales prekybininkas> backup_back.sqlKitaip tariant, nukopijuokite visą prekybos duomenų bazę, išskyrus pardavimo lentelę. Jei norime neįtraukti kelių lentelių, turime naudoti šią komandą:
$ mysqldump --user = user --password = password --ignore-table = commerce.sales --ignore-table = commerce.products --ignore-table = commerce. komercijos kainos> backup_copy.sql(Jei norite neįtraukti kelių lentelių, nurodykite jų pavadinimus su daugybe --ignore-table parinkčių)
2. Apriboti įrašų skaičių kiekvienoje lentelėje
Pagal numatytuosius nustatymus „mysqldump“ komanda nukopijuos visus įrašus iš visų lentelių. Jei norite iš anksto filtruoti įrašus, pridėkite parinktį -kur, kad galėtumėte nurodyti WHERE tipo sąlygą, kuri pridedama prie SELECT užklausų, skirtų išgauti visus įrašus:
$ mysqldump -vartotojas = vartotojas -slaptažodis = slaptažodis -kur = "amžius> 18 IR amžius backup_back.sqlJei norime iš duomenų bazės išgauti tik kai kuriuos įrašus, pavyzdžiui, pirmuosius 500
$ mysqldump --user = user -password = password --where = "1 limit 500" duomenų bazė> backup.sqlJie būtų išgaunami neviršijant 500.
3. Nukopijuokite tik lentelių struktūrą, bet ne jų duomenis
Pagal numatytuosius nustatymus komandą mysqldump išskleidžia ir lentelių struktūrą, ir visą jų informaciją. Jei jus domina tik lentelių ir stulpelių struktūros išmetimas, naudokite parinktį --no-data. Taigi galite sukurti kitą visiškai panašią, bet tuščią duomenų bazę:
$ mysqldump-vartotojas = vartotojas-slaptažodis = slaptažodis-nėra duomenų bazės> atsarginė kopijaPaprastai, kai sugeneruojami intarpai, jie sugrupuojami į vieną teiginį, kad būtų išsaugotos kodo eilutės taip:
ĮDĖTI Į LENTELĘ VERTĖS (1, 'vardas1'), (2, 'vardas2'), (3, 'vardas3');Toks elgesys gali sukelti klaidų, kai senesnės sistemos negali apdoroti ilgų eilučių. Panašiai galite susidurti su teksto redaktoriaus problemomis bandydami atidaryti atsarginį failą, kuriame yra šios ilgos eilutės.
Jei susiduriame su šia byla, galime pridėti šią parinktį --extended-insert = false kad kiekvienas INSERT būtų paleistas su savo teiginiu:
$ mysqldump --user = user -password = password --extended -insert = false database> backup_sqlRezultatas bus toks:
INSERT INTO table VALUES (1, 'name1'); INSERT INTO table VALUES (2, 'name2'); INSERT INTO table VALUES (3, 'name3');Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką