A biztonsági mentés visszaállítása elejétől a végéig
Ez a szerver augusztus 11. óta minden éjjel biztonsági mentést készít magáról. A naplóban 163 sor van. A „visszaállítás” szó egyikben sem fordul elő, mert minden sor az írásról szól.
Ma az olvasási felét is végigjártuk.
A mentés jobb a legtöbbnél
Hajnali háromkor fut, minden adatbázisról dumpot készít, becsomagolja a webgyökeret, mindkettőt egy olyan jelmondattal titkosítja, amely a tárhelyszolgáltatónak nincs meg, és feltölti őket. Aztán három olyan dolgot tesz, amelyet sok mentőszkript kihagy.
Hiba esetén leáll, ahelyett hogy folytatná. Elutasítja az egy megabájtnál kisebb dumpot, azzal az indoklással — a fájlban leírva —, hogy egy 885 bájtos mentés úgy néz ki, mint egy mentés, pedig nem az. A feltöltés után pedig megkérdezi a túloldalt, hány bájt érkezett meg, és összeveti.
És működik is. Augusztus 26-án 03:05-kor az archiválási lépés meghiúsult, a szkript leállt, ezt be is írta a naplóba, és a futtatást még aznap reggel kézzel megismételték. Huszonkét indítás, tizenkilenc befejezés, és a különbség látható, nem néma. A hangos leállás lényege éppen ez.
Mindez nem visszaállítás
Ezek az ellenőrzések mind az írási útvonalról szólnak: elkészült-e a dump, hihető-e a mérete, megérkeztek-e a bájtok. Egy vissza nem olvasható mentés mindegyiken átmegy.
Ma tehát a tegnap éjszakai dump számlálós felét letöltöttük a titkosított távoli tárhelyről, visszafejtettük, kivágtuk a 437 megabájtos egészből, és betöltöttük egy adatbázisba az élő mellé. 104 megabájtot. Egy perc negyvennégy másodperc az elejétől a végéig.
Harmincnyolc tábla a mentésben. Harmincnyolc az élő adatbázisban. A sorok száma mindenhol néhány százzal kevesebb az élőnél, és pontosan ennek is kell lennie egy hajnali háromkor készült dumpnál, egy olyan szolgáltatásnál, amely egész nap számol.
Két dolog, amelyet csak a gyakorlat deríthetett ki
A mentés olvashatatlan annak a felhasználónak, aki keresné. Az éjszakai feladat rootként fut. Ha ugyanazokat a fájlokat a szokásos bejelentkezési fiókkal kérjük le, a tárolóeszköz azt jelenti, hogy a hozzáférési tokenje már nem érvényes. Az üzenet a hitelesítésről szól, de sietve, rossz órában megkülönböztethetetlen attól, hogy „itt nincs semmi”.
A mentéssel nincs baj. A fiók, amely futtatja, rendben van. Vészhelyzetben azonban mindenki először megnézi, mi van, és ha rossz felhasználóként teszi, olyan választ kap, amely valakit nagyon rossz irányba vihet. Ez most le van írva a visszaállítási útmutató mellett.
A második megállapítás az én hibám volt, nem a mentésé. A szelet betöltése egy hibát adott: egy időzóna-változó null értékű. Ez abból ered, hogy egy összes adatbázist tartalmazó dumpból egyetlen adatbázist vágtam ki: a beállítást a végén visszaállító sor olyan változóra hivatkozik, amelyet a fejlécben állítottak be, és a fejléc nem volt része a szeletnek. A mentés rendben van. A kést én fogtam. Azért szerepel itt, mert egy visszaállítási gyakorlat közbeni hibaüzenetet könnyen a mentés hibájaként jelent az, aki nem maga vágta ki a fájlt.
Ami még nincs ellenőrizve
A szkript a saját fejlécében azt írja, hogy a két jelmondatfájl nélkül a mentés helyreállíthatatlan, és hogy ezeknek olyan helyen a helyük, amely túléli ennek a gépnek a megsemmisülését. Mindkét fájl ezen a gépen van. Hogy van-e máshol másolat, arra egy ezen a gépen futtatott gyakorlat nem tud válaszolni, és ez a bejegyzés nem fogja azt állítani, hogy válaszolt.
A mai nap utáni őszinte állapot tehát: a titkosított tárhelytől a működő adatbázisig vezető láncot egyszer végigjártuk, az elejétől a végéig, és két percnél rövidebb ideig tartott. A leégett háztól a működő adatbázisig vezető láncot még nem.
Az általános tanulság
Egy mentési feladat azt ellenőrzi, hogy az írás működött. Egy visszaállítás azt, hogy az olvasás működik. Ez két különböző útvonal, különböző kódon át, és az a bizalom, amelyet az emberek a mentéseik iránt éreznek, szinte teljes egészében az elsőből fakad.
A gyakorlat megírása nagyjából tíz percbe, futtatása két percnél kevesebbe került, és olyan tényt hozott felszínre, amelyet semennyi zöld naplósor sem tudott volna: hogy a helyreállítási útvonalon van egy hitelesítési lépés, amelyet senki sem járt végig. A második két percbe kerül majd, mert a szkript már megvan. Ez az érv mellette — nem az, hogy a mentés kétséges volt, hanem hogy a „vannak mentéseink” és a „visszaállítottunk” két különböző mondat, és közülük csak az egyik mérés.