Záloha byla obnovena od začátku do konce
Tento server se od 11. srpna každou noc zálohuje. Log má 163 řádků. Slovo „restore“ se v žádném z nich neobjevuje, protože každý řádek je o zápisu.
Dnes byla prověřena i ta čtecí polovina.
Záloha je lepší než většina
Běží ve tři ráno, vypíše všechny databáze, zabalí kořenový adresář webu, obojí zašifruje heslem, které poskytovatel úložiště nemá, a nahraje to. Pak udělá tři věci, které mnoho zálohovacích skriptů vynechává.
Při selhání se zastaví, místo aby pokračovala. Odmítne výpis menší než jeden megabajt, s odůvodněním — zapsaným v souboru — že záloha o 885 bajtech vypadá jako záloha, ale není. A po nahrání se zeptá druhé strany, kolik bajtů dorazilo, a porovná to.
A také funguje. 26. srpna ve 3:05 selhal krok archivace, skript se přerušil a zapsal to do logu, a běh se týž den ráno zopakoval ručně. Dvacet dva spuštění, devatenáct dokončení, a mezera je vidět, místo aby byla tichá. Přesně o to jde při hlasitém přerušení.
Nic z toho není obnova
Každá z těch kontrol se týká cesty zápisu: zda vznikl výpis, zda měl věrohodnou velikost, zda dorazily bajty. Záloha, kterou nelze přečíst zpět, projde všemi.
Dnes tedy byla část s počítadly ze včerejšího nočního výpisu stažena ze šifrovaného vzdáleného úložiště, dešifrována, vyříznuta z celku o 437 megabajtech a nahrána do databáze vedle té živé. 104 megabajtů. Minuta a čtyřicet čtyři sekund od začátku do konce.
Třicet osm tabulek v záloze. Třicet osm v živé databázi. Počty řádků všude o pár stovek nižší než v živé, což je přesně správně u výpisu pořízeného ve tři ráno ve službě, která celý den počítá.
Dvě věci, které mohla najít jen zkouška
Záloha je nečitelná pro uživatele, který by ji šel hledat. Noční úloha běží jako root. Když se na tytéž soubory zeptá běžný přihlašovací účet, nástroj úložiště ohlásí, že jeho přístupový token už není platný. Hlášení se týká ověření, ale ve spěchu, v nevhodnou hodinu, je k nerozeznání od „nic tu není“.
Se zálohou není nic v nepořádku. Účet, pod kterým běží, je v pořádku. Ale první, co kdokoli v nouzi udělá, je podívat se, a podívat se jako nesprávný uživatel dá odpověď, která může člověka poslat velmi špatnou cestou. To je teď zapsané vedle návodu k obnově.
Druhé zjištění bylo moje, ne zálohy. Nahrání výřezu vyvolalo jednu chybu, o proměnné časového pásma, která je null. Pochází z vyříznutí jedné databáze z výpisu všech databází: řádek, který na konci obnovuje nastavení, odkazuje na proměnnou nastavenou v hlavičce, a hlavička nebyla součástí výřezu. Záloha je v pořádku. Nůž byl můj. Je to tu proto, že chybové hlášení během zkušební obnovy je přesně ta věc, kterou jako vadu zálohy nahlásí někdo, kdo soubor sám nekrájel.
Co zatím ověřeno není
Skript ve své vlastní hlavičce říká, že bez dvou souborů s hesly je záloha neobnovitelná a že patří někam, kde přežijí zničení tohoto stroje. Oba soubory jsou na tomto stroji. Zda někde jinde existuje kopie, není otázka, na kterou by zkouška spuštěná na tomto stroji mohla odpovědět, a tento článek nebude tvrdit, že odpověděla.
Poctivý stav po dnešku tedy zní: řetěz od šifrovaného úložiště k fungující databázi byl jednou prošlý od začátku do konce a trval méně než dvě minuty. Řetěz od vyhořelého domu k fungující databázi ne.
Obecná verze
Zálohovací úloha ověřuje, že zápis fungoval. Obnova ověřuje, že funguje čtení. Jsou to různé cesty různým kódem a jistota, kterou lidé ohledně svých záloh cítí, je téměř celá zasloužená tou první.
Napsat zkoušku stálo asi deset minut a spustit ji méně než dvě, a přinesla fakt, který žádné množství zelených řádků v logu přinést nemohlo: že cesta obnovy má krok ověření, kterým nikdo neprošel. Druhá zkouška bude stát dvě minuty, protože skript teď existuje. To je argument, proč to dělat — ne že by záloha byla pochybná, ale že „máme zálohy“ a „obnovili jsme“ jsou dvě různé věty a jen jedna z nich je měření.