Kaip viena iš pirmaujančių laisvai prieinamų duomenų bazių, MySQL yra populiarus daugelio žiniatinklio programų pasirinkimas. Būdama veikiama interneto, jūsų programa yra veikiama kenkėjiškų atakų. Jei jūsų serveris pažeistas, geriausiu atveju turite iš naujo įdiegti programą; blogiausiu atveju galite prarasti savo duomenis. Be to, galite susidurti su situacija, kai reikės perkelti duomenų bazę iš vieno serverio į kitą.
Kam naudojamas mysqldump?
Mysqldump įrankis padės išspręsti tiek serverio pavojaus, tiek perkėlimo atvejus. Pagrindinė jo funkcija yra paimti MySQL duomenų bazę ir iškelti ją kaip tekstinį failą. Bet ne bet koks tekstinis failas; failas yra SQL sakinių rinkinys. Šie teiginiai, kai jie vykdomi, atkuria duomenų bazę iki tikslios būsenos, kurios ji buvo vykdant iškeltą.
Naudokite mysqldump, kad sukurtumėte duomenų bazės eksportą kaip atsargines kopijas arba perkeldami duomenų bazę į naują pagrindinį kompiuterį. Bet kuriuo atveju tekstinis failas bus importuotas atgal į MySQL duomenų bazės serverį. Jis vykdys visus faile esančius SQL sakinius, kurie atkuria duomenų bazę į pradinę būseną. Šioje dalyje nenaudojama mysqldump komanda, bet tai taip pat nebūtų įmanoma be šios priemonės.
MySQL dokumentuose pateikiami kiti atsarginių kopijų kūrimo būdai, tačiau jie turi trūkumų:
- Duomenų bazės greitasis kopijavimas iš „MySQL Enterprise“yra puikus būdas sukurti šias atsargines kopijas – jei neprieštaraujate „Enterprise“kainai.
- Duomenų bazės duomenų katalogų kopijavimas gali būti sudėtingas perkeliant operacines sistemas, nes paskirties vietos bus skirtingos.
- Eksportuojant į atskirtą teksto failą, gausite turinį, bet turėsite iš naujo sukurti struktūrą.
- Dažnai galite kurti atsargines duomenų bazių kopijas iš GUI programų, pvz., „MySQL Workbench“. Bet tai yra rankinis procesas; negalite parašyti scenarijaus arba įtraukti į paketinį darbą.
Įdiekite mysqldump įrankį
Jei naudojate „Windows“, peržiūrėkite mūsų instrukcijas, kaip įdiegti „MySQL“sistemoje „Windows 7“(diegimo procesas yra toks pat, kaip „Windows 10“). „MacOS“sistemoje žr. nurodymus, kaip įdiegti „MySQL“„macOS 10.7“(vėlgi, senesnė, bet vis dar taikoma). „Ubuntu“pagrindu veikiančių „Linux“sistemų vartotojai gali naudoti šią komandą, norėdami įdiegti „MySQL“klientą ir paslaugas:
sudo apt install mysql-client
Išskleiskite „MySQL“išrašą
Įdiegę naudokite mysqldump, kad gautumėte visą duomenų bazės atsarginę kopiją.
mysqldump -h [jūsų DB pagrindinio kompiuterio pavadinimas arba IP] -u [DB vartotojo vardas] -p [duomenų bazės pavadinimas] > db_backup.sql
Štai šioje komandoje naudojamų vėliavėlių aprašymas:
- - h: ši vėliavėlė yra duomenų bazės priegloba. Tai gali būti visas pagrindinio kompiuterio pavadinimas (pavyzdžiui, myhost.domain.com) arba IP adresas. Palikite šį lauką tuščią, jei komandą vykdote tame pačiame pagrindiniame kompiuteryje kaip ir MySQL serveris.
- - u: Jūsų vartotojo vardas.
- - p: jei tinkamai apsaugojote MySQL diegimą, norint prisijungti, reikės slaptažodžio. Ši vėliavėlė be argumentų, kai vykdote komandą, ragina įvesti slaptažodį. Kartais naudinga pateikti slaptažodį tiesiogiai kaip šios vėliavėlės argumentą, pavyzdžiui, atsarginiame scenarijuje. Tačiau paraginti neturėtumėte, nes jei kas nors gautų prieigą prie jūsų kompiuterio, jis galėtų gauti šį slaptažodį komandų istorijoje.
- > db_backup.sql: ši dalis nurodo mysqldump nukreipti išvestį į failą. Paprastai komanda viską išveda į konsolę, o tai reiškia, kad ekrane matysite kelis SQL sakinius. Simbolis > nukreipia išvestį į pavadintą tekstinį failą. Jei šio failo nėra, jis sukuriamas automatiškai.
Kai tai bus baigta, turėsite. SQL failą. Tai tekstinis failas, kuriame yra SQL teiginiai. Galite atidaryti jį bet kuriame teksto rengyklėje, kad patikrintumėte turinį. Štai eksportas iš „WordPress“duomenų bazės, kuriame parodyta, kaip šie failai sudėti.
Failas suskirstytas į skyrius. Pirmajame skyriuje nustatoma „WordPress“komentarų lentelė. Antrasis skyrius atkuria tų lentelių turinį (šiame pavyzdyje komentarų įrašai). Kai iš naujo importuojate MySQL iškeltą, komanda veikia per failą, vykdo teiginius ir iš naujo sukuria tokią duomenų bazę, kokia ji buvo.
Importuokite MySQL iškelties failą
Prieš importuodami iškelties failą, jums reikės jau sukurtos duomenų bazės ir galiojančio vartotojo vardo bei slaptažodžio. Taip pat turėtumėte turėti visus duomenų bazės leidimus. Jums nereikia GRANT leidimo, bet lengviau juos visus suteikti.
Sužinokite daugiau apie duomenų bazės leidimus prieš keisdami saugos vaidmenis duomenų bazėje.
Jei norite iš naujo importuoti duomenis, prisijunkite prie MySQL serverio naudodami komandą mysql. Raginame įveskite use [duomenų bazės pavadinimas] ir pakeiskite duomenų bazės pavadinimą. Įveskite source [failo pavadinimas] ir pakeiskite anksčiau paimto iškelties failo pavadinimą.
Kai baigsite, pasirodo pranešimų sąrašas, kuriame pažymima, kad vykdomi SQL sakiniai. Stebėkite klaidas, bet jei turite tinkamus leidimus, viskas turėtų būti gerai.
Kai procesas bus baigtas, turėsite pradinės duomenų bazės dublikatą. Norėdami patikrinti duomenų bazių panašumą, atlikite kitą išrašymą, tada palyginkite du išvestis. Norėdami palyginti du failus, naudokite teksto rengyklę arba skirtą diferencijavimo įrankį.
Šie failai turi du skirtumus, kuriuos rodo raudonos linijos dešiniosios slinkties juostos viršuje ir apačioje. Pirmoji yra eilutė, kurioje yra duomenų bazės pavadinimas, ir tai skiriasi, nes failai buvo pavadinti skirtingai. Antrasis yra iškelties failo laiko žyma. Tai skiriasi, nes antroji duomenų bazė buvo atkurta po pirmosios. Kitu atveju failai yra lygiai tokie patys, tai reiškia, kad taip pat yra juos sukūrusios duomenų bazės.
DUK
Kaip ištaisyti mysqldump klaidą: Prieiga uždrausta naudojant užrakinimo lenteles?
Prašykite savo duomenų bazės administratoriaus suteikti jums LOCK teisę. Jei tai neišsprendžia problemos, pabandykite paleisti tą pačią komandą mysqldump, pridėdami žymą - -single-transaction, pvz., [ $ mysqldump --single-transaction] [-u naudotojas] [-p DBNAME] > backup.sql
Ar su mysqldump galite naudoti sąlygą „kur“?
Naudokite WHERE sąlygą kurdami atsarginę kopiją, apimančią tik nurodytas sąlygas atitinkančias eilutes. Pavyzdžiui, norėdami iškelti duomenis tik iš eilučių, kurių ID stulpelis didesnis nei 100, įveskite "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql.