✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

WordPressi arendaja juhend MySQL-i andmete rekonstrueerimiseks

16

Mingil hetkel iga arendaja karjääris saabub aeg, kus teete midagi, mis tootmist tankib.

  • Võib-olla surute koodi, mis lõhub vahemälu, mis teenindab andmeid miljonite inimesteni,
  • Võib-olla värskendate rakendust ja kustutate teabe, mis pole varundatud,
  • Või teete muudatuse, mis "töötab teie masinas", kuid täidab täielikult allika juhtimise hoidla.

Ja muid näiteid on palju. Olen kindel, et saate ise kiiresti nimetada veel viis inimest.

Olen panustanud (sõnasõnaga, omamoodi) oma õiglase osa kõigest ülaltoodust, kuid ühest asjadest, mida näen meie ruumis töötavatelt inimestelt.

See tähendab, et need, kes töötavad andmebaasi tagatud veebirakendustega, on puudulik arusaam andmebaasi korraldusest failisüsteemi tasemel ja sellest, kuidas on võimalik andmeid rekonstrueerida isegi siis, kui teil pole standardset varukoopiat, millest töötada.

Selles postituses käsitlen sügavalt MySQL-i andmebaasi korraldust failisüsteemi tasemel, kuidas saate sellest teavet taastada ja varukoopiafaili, kui peaksite sellesse olukorda sattuma, ja pakun viiteid (või järjehoidjaid). sa vajad neid.

MySQL-i andmete rekonstrueerimine

Selguse huvides räägin MySQL-i andmebaasist, mis töötab *nix-põhise operatsioonisüsteemi variandil (nii et te vaatate Linuxi või macOS-i distributsiooni).

Failide asukohad (mida ma peatselt käsitlen) on Windowsi-põhises süsteemis erinevad, kuid nende leidmiseks peate lugema MySQL-i käsiraamatut või muud sarnast ressurssi.

Mõte on järgmine: enne kui lähete sellesse artiklisse liiga kaugele, tehke kindlaks, kus failid teie operatsioonisüsteemis asuvad. Näiteks kui kasutate MacOS-i ja leiate selle tõenäoliselt kaustast /usr/local/mysql/data.

Eelistan kasutada Homebrew’i, nii et minu MySQL-i andmebaasid asuvad kaustas /usr/local/var/mysql . Ja nagu ülal näete, märkate faile, millel on sama nimi, mis teie süsteemis olevatel andmebaasidel .

Kuidas andmebaasid on korraldatud

Pinnatasandil tundub see üsna lihtne. Kui aga avate kataloogi, nagu eespool mainitud, leiate, et suur osa sellest, mida näete, on kataloogid – mitte failid iseenesest –, mis sisaldavad rohkem teavet.

Kui uurite mõnda kataloogi, näete mitmesuguseid faile:

WordPressi arendaja juhend MySQL-i andmete rekonstrueerimiseks

Nende hulka kuuluvad järgmist tüüpi failid:

  • MAAILM
  • MYI
  • FRM
  • IBD

Ja kõik seda tüüpi failid on olemas iga andmebaasi tabeli jaoks.

Nii et vaatame neid üksikasjalikumalt, et saada paremini aru, millest andmebaas täpselt koosneb.

1 Andmebaas on failide komplekt

Üldiselt teavad enamik meist, et MySQL on relatsiooniline andmebaas ja iga andmebaas koosneb tabelite komplektist, mis kõik salvestavad erinevat tüüpi teavet (ja paljud tabelid on üksteisega mingil viisil seotud, isegi kui see on lihtsalt väärtus üks veerg).

WordPressi arendaja juhend MySQL-i andmete rekonstrueerimiseks

Kuid see postitus ei käsitle andmebaasi relatsioonilist aspekti ega ka seda, kuidas me saame selle vastu päringuid käivitada. (Kui olete huvitatud, proovige seda teha – see kõik põhineb korteelarvutusel .)

Selle asemel tuleb mõista, et iga tabeli jaoks on failide komplekt, mis viitab igas tabelis sisalduvale teabele. Ja

2 Failitüüpide mõistmine

Kuna andmebaasi iga tabel koosneb ülaltoodud failitüüpidest, vaatleme üksikut failitüüpi ja seejärel määrame kindlaks, millist rolli see iga tabeli puhul mängib (ja lõpuks, kuidas see mõjutab kogu andmebaasi).

  • MYD. See fail sisaldab andmeid, mis on salvestatud andmebaasi tabeli ridadele. See fail on tihedalt seotud FRM-failiga.
  • FRM. See fail sisaldab tabelivormingu andmeid (mis sisaldab näiteks andmebaasi iga veeru ülesehitust, selles sisalduvate andmete tüüpe ja nii edasi).
  • MYI. See on andmebaasi register. Kui kasutate MyISAM-i andmebaasi (mida enamik meist kasutab praegu InnoDB-d), on teil see fail. Lisaks sisaldavad andmed teavet selle kohta, kas andmed on korralikult suletud või mitte. Pidage seda failiks tabeli enda terviklikkuse kohta. Mitte selles sisalduv teave ega selle formaat.
  • IBD. See on failitüüp, mis on seotud InnoDB andmebaasi tabelitega (nii et te ei pruugi seda oma andmebaasi kataloogis näha). Kui aga seda teete, on oluline teada, et InnoDB-põhised andmebaasid salvestavad teavet selle faili iga tabeli kohta.

Ülaltoodud teabes on veel kaks uurimist väärt teemat.

  1. MinuISAM
  2. InnoDB

Enne nende kõigi vaatamist pange tähele, et MyISAM ja InnoDB on need, mida nimetatakse salvestusmootoriteks. See kõlab uhkelt, kuid see on seotud sellega, kuidas andmebaasitarkvara haldab teabe loomise, lugemise, värskendamise ja kustutamise toiminguid .

MyISAM ja InnoDB: mis vahe on?

Kõik need salvestusmootorid erinevad tehingute, lukustamise, tagasipööramiste ja otsingute käsitlemise poolest. Neile, kes on andmebaasiadministraatorid, olete kõige eelnevaga tuttav (kuid tõenäoliselt ei loe te seda ka 🙃).

WordPressi arendaja juhend MySQL-i andmete rekonstrueerimiseks

Muidugi mitte seda tüüpi mootor.

Ülejäänute jaoks on meil see:

  • Tehingud toimuvad alati, kui koos kasutatakse vähemalt kahte käsku, nagu SELECT ja UPDATE või INSERT ja DELETE või nende kahe (või enama) kombinatsiooni. Nii et kui valiksite teabe ja seejärel KUSTUTATE tulemused, oleks teil tehing.
    • MyISAM ei toeta tehinguid. See tähendab, et kui "tehing" katkestatakse, mõjutab see kõiki toimingu ajal töödeldud andmeid. Ütlematagi selge, et seda ei kasutata.
    • InnoDB seevastu garanteerib, et tabelis ei tehta muudatusi enne, kui tehing on lõpetatud. Teisisõnu, muudatusi andmebaasi ei kanta.
  • Iga salvestusmootori puhul on lukustus erinev laua või rea tasemel. Kui käivitate tabeli päringu, lukustab MyISAM kogu tabeli, kuni protsess on lõpule viidud. InnoDB seevastu lukustab ainult mõjutatud read. See on oluline erinevus, sest see tähendab, et saate InnoDB-d kasutades jätkata tööd tabelis, mitte samadel ridadel.
  • Tagasivõtmine pole MyISAMis võimalik. See tähendab, et kui muudatus on tehtud, on see tehtud. InnoDB pakub tagasipööramist. Oletame, et muudate tabelit, tegite kogemata midagi, mida te ei kavatsenud teha, ja seejärel saate selle eelmisesse olekusse tagasi kerida. Seda ei tohi siiski segi ajada varukoopiaga. See on rohkem nagu tehingu tagasivõtmine.
  • Otsing, eriti selles, kuidas me oma andmebaase struktureerime, on võtmetähtsusega andmete korraldamisel oma andmebaasides. Lihtsamalt öeldes toetab InnoDB FULLTEXT indekseerimist (alates MySQL 5.6.4). Kuid kui teie host või teenusepakkuja ei luba FULLTEXT-indekseid, väidan, et see pole tehingute rikkuja.

Arvestades kogu ülaltoodud teavet, tuleb igaühel näha, et InnoDB salvestusmootori eelised kaaluvad palju üles MyISAM salvestusmootori eelised, eriti kui soovite kasutada MySQL-i versiooni, mis on vähemalt võrdne versiooniga 5.6.4

3 Andmebaasi taasloomine

Siinkohal oletame, et teate, et teil on operatsioonisüsteemist juurdepääs andmebaasi moodustavatele failidele.

WordPressi arendaja juhend MySQL-i andmete rekonstrueerimiseks

Võib-olla on see eelmine varukoopia, võib-olla leiate failid kettal või saate need mõnel muul viisil alla laadida – ja peate andmebaasi taastama eelmisesse punkti.

1 Ärge tehke seda tootmisel

Enne millegi tegemist seadistage oma kohalikus masinas tühi andmebaas ja seejärel importige teave. Kuid jällegi pole see sama, kui lihtsalt andmebaasi kasutajaliidese kasutamine SQL-faili importimiseks.

Selle asemel looge kataloog, mis vastab selle andmebaasi nimele, mida soovite luua. Selles postituses kasutan trunkdevi näidet (kuna siin ma töötan, kasutades WordPressi trunki uusimat versiooni ).

2 Varundage olemasolev andmebaas

Järgmiseks varundage olemasolev andmebaas nii palju kui võimalik – olgu selleks siis andmebaasi esiserva või failide koopiad. Pärast seda kopeerige failid allika asukohast loodud kataloogi.

Sel hetkel peaksite saama oma valitud andmebaasi esiosa üles laadida ja nägema teavet, mis sisaldub just kopeeritud andmebaasifailides. See sõltub sellest, kas failid pole rikutud ja andmebaasiserver töötab.

3 Ärge installige muud tarkvara

Pange tähele, et praegu ei prooviks ma sellele installida muud tarkvara, näiteks WordPressi või muud teavet. Selle asemel töötage otse andmetega. Eeldades, et see on teie esiotsas nähtav, varundage või eksportige fail korralikult SQL-faili, et saaksite teavet tulevikus hõlpsamini taastada.

Mõned kasutajaliidesed annavad teile võimaluse eksportida ainult teatud tabeleid. Sel juhul varundage kõik. Mõne andmebaasi puhul võtab see kaua aega; teiste jaoks mitte nii väga. Kõik sõltub projekti suurusest.

4 Töötage andmetega

Siinkohal peaksite saama alustada andmebaasi manipuleerimist esiosa või SQL-i abil. Kui te ei tunne end mugavalt või pole isegi kindel, kuidas seda teha, siis rääkige kellegagi, kes on selline, et see võib olla midagi väga tundlikku (lõppude lõpuks on teil tegemist andmebaasi taastamisega failidest, eks?)

Kui arvate, et teil on teave kohas, mis on valmis taastamiseks mis tahes rakenduses, mille teave on kadunud, teave on rikutud või lihtsalt andmetega on valesti vormindatud, on aeg valmistuda teabe oma kohalikust arvutist võtma ja selle tagasi saatmiseks allikas.

Tagasi Allika juurde

Esiteks soovitatakse kõike ülaltoodut teha vähese liiklusega aegadel, seega veenduge, et seda tehes ei teeks te seda tipptööajal. See peaks olema ütlematagi selge.

Järgmiseks tehke andmebaasist enne sellega töötamist varukoopia. Salvestage fail kohta, mida saate hõlpsasti meelde tuletada ja hõlpsasti juurde pääseda, nii et kui imporditava teabe kasutamisel läheb midagi valesti, siis olete kaitstud ja taastage lihtsalt see, mis seal oli. Selguse huvides eksportige kogu andmebaas SQL-vormingus.

WordPressi arendaja juhend MySQL-i andmete rekonstrueerimiseks

Nüüd võtke oma kohalikus masinas olev andmebaas ja eksportige see teave ka SQL-faili. Avage eksporditud fail ja veenduge, et see kasutab õige nimega andmebaasi loomiseks käsku CREATE ja õigete nimedega tabelid.

Eeldusel, et kõik läheb hästi, taastatakse kõik imporditud täpselt nii, nagu see peaks olema ja nagu näete oma kohalikus seadmes. Kui te seda ei näe, importige varem eksporditud fail; muidu on sul hea minna.

Mis siis, kui see ei tööta?

Kui see ei tööta, peate asuma juurprobleemi juurde:

  • Kas see ei töötanud, kuna serveri failidega on midagi valesti?
  • Kas see ei töötanud kohalikus masinas loodud andmebaasi tüübi tõttu?
  • Kas kasutate sama salvestusmootorit? Peaksite olema, kuna see pärineb failidest.
  • Kas andmebaasi terviklikkus on kohapeal kindel?
  • Kas serveris olev andmebaas kustutatakse enne andmete importimist teie kohalikust masinast?

Kui see praegu ei tööta, on selle põhjuseks tavaliselt midagi ülaltoodut. Siiski võib see olla midagi muud. Olen teinud kõik endast oleneva, et pakkuda võimalikult palju teavet MySQL-i andmebaaside, nende ülesehituse ja andmebaasi failidest rekonstrueerimiseks vajalike sammude kohta, kuid ma ei suuda tabada kõiki võimalikke eelisjuhtumeid.

Varundage andmed alati (ja ärge eeldage, et seda tehakse)

Sellegipoolest loodan, et kogu ülaltoodud teave annab sügavama arusaama sellest, mis WordPressi all on, kui peaksite selle probleemiga iseseisvalt või koos kliendiga silmitsi seisma.

Ja lõpuks, alati varundamine. Varundage käsitsi, tehke automaatseid varukoopiaid ja tehke neid sageli. Ärge piirake seda ka andmebaasiga. Varundage andmebaas, rakendus ja kõik muu, mis on lahenduse käivitamiseks vajalik.

Kui te seda teete, siis ei pea te kõige eelneva pärast muretsema.

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem