Serveri varundamine: miks taastetest on kohustuslik
Kui võtan serveri haldusse, küsin esimesena: „Kas varukoopiad on olemas?“ Vastus on peaaegu alati „jah“. Järgmisele küsimusele — „Millal te viimati midagi neist taastasite?“ — on vastus enamasti vaikus.
See on koht, kus varundamine tavaliselt katki on. Mitte see, et koopiaid ei tehta, vaid see, et keegi ei tea, kas neist saab päriselt midagi tagasi.
Lühivastus: varukoopia on olemas alles siis, kui sellest on edukalt taastatud. Hoia vähemalt kolme koopiat kahel eri andmekandjal, millest üks on serverist eemal ja ründaja jaoks kättesaamatu. Andmebaas varunda andmebaasi enda tööriistaga, mitte failikoopiana. Ja tee taastetest regulaarselt — mitte alles siis, kui midagi on juba kadunud.
Miks „varukoopia on olemas“ sageli ei vasta tõele
Tüüpilised olukorrad:
- Varundusskript lõpetas töö kuude eest — näiteks pärast parooli vahetust või ketta täitumist — ja keegi ei saanud sellest teada, sest veateadet ei saadetud kellelegi.
- Andmebaas kopeeriti töötamise ajal failidena. Koopia on olemas, aga see on poolelioleva kirjutamise hetkel tehtud ja andmebaas ei pruugi sellest käivituda.
- Varukoopia asub samas serveris. Kui ketas sureb või server krüpteeritakse lunavaraga, kaob koopia koos originaaliga.
- Koopia on olemas, aga taastamisjuhist ei ole. Taastamine võtab tunni asemel kaks päeva, sest keegi ei mäleta, milline versioon, mis kaustas ja mis järjekorras.
3-2-1 reegel lihtsas keeles
- 3 koopiat andmetest (originaal + kaks varukoopiat),
- 2 eri andmekandjal või süsteemis,
- 1 koopia mujal — teises andmekeskuses või teise teenusepakkuja juures.
Tänapäeval lisan sellele ühe nõude: vähemalt üks koopia peab olema muudetamatu või ründaja eest kaitstud. Lunavara otsib teadlikult üles ka varukoopiad. Kui serverist on varukoopiate hoidlasse kirjutus- ja kustutusõigus, saab ründaja need samuti hävitada. Seepärast saadab server koopiad välja, aga ei saa neid ise kustutada.
Mida varundada — ja mida mitte
Varunda:
- Andmebaasid (PostgreSQL, MySQL/MariaDB) andmebaasi enda tõmmisega või sobiva varundusmeetodiga, mis annab ühtse seisu. Mitte töötava andmebaasi failide pimekoopiana.
- Rakenduse failid, mida kasutajad loovad: üleslaadimised, dokumendid, pildid.
- Seadistus: veebiserveri (Nginx, Apache2) konfiguratsioon, rakenduse seadistusfailid, ajastatud tööd, Dockeri compose-failid ja keskkonnamuutujad.
- Sertifikaadid ja võtmed — krüpteeritult.
Ära raiska ruumi:
- operatsioonisüsteemi failidele, mille saab uuesti paigaldada;
- vahemäludele ja ajutistele failidele;
- Dockeri kujutistele, mille saab registrist uuesti tõmmata (varunda andmeköited, mitte konteinereid).
Kui server on hästi dokumenteeritud, saab süsteemi kiiremini nullist üles ehitada, kui kogu kettapilti taastada. Varundada tuleb seega eelkõige seda, mida uuesti luua ei saa.
Kui kaua koopiaid hoida
Üks koopia eilsest ei aita, kui viga tekkis nädal tagasi ja jõudis juba kõigisse koopiatesse. Tüüpiline rotatsioon on näiteks: igapäevased koopiad kaheks nädalaks, iganädalased paariks kuuks, igakuised aastaks. Täpne rütm sõltub sellest, kui kiiresti sinu andmed muutuvad ja mida nõuab raamatupidamine või leping.
Varukoopiad peavad olema krüpteeritud — eriti siis, kui need asuvad kellegi teise taristus. Krüpteerimisvõti peab aga olema hoitud mujal kui serveris: kui võti kaob koos serveriga, on krüpteeritud koopia kasutu.
Taastetest: kaks küsimust, millele peab olema vastus
Enne kui midagi juhtub, tasub kokku leppida kahes numbris:
- Kui palju andmeid võib kaotada? Kui varundad kord ööpäevas, võid halvimal juhul kaotada terve päeva töö. Kui see on liiga palju, on vaja tihedamat varundust.
- Kui kaua võib süsteem maas olla? Kas taastamine peab mahtuma tundi või võib see võtta päeva?
Taastetest vastab sellele, kas need numbrid on päriselt saavutatavad. Minu rutiin on lihtne:
- Võtan juhusliku varukoopia — mitte alati kõige värskema.
- Taastan selle eraldi testkeskkonda, mitte töötavasse serverisse.
- Kontrollin, et andmebaas käivitub, rakendus avaneb ja viimased andmed on olemas.
- Mõõdan, kui kaua see aega võttis, ja panen kirja kõik, mis ei läinud nii, nagu juhis ütles.
Ja üks automaatne asi: varundusele peab olema seadistatud teavitus, kui koopia jääb tegemata või on kahtlaselt väike. Vaikne viga on varunduses kõige kallim viga.
Varundus ja taastetest on osa minu serverihaldusest — mis hoolduslepingusse veel kuulub, on kirjas postituses Linuxi serveri hooldus: mida leping sisaldab. Kui vahetad serverit, on värske taastetest ka kõige parem kontroll enne serveri kolimist.
Korduma kippuvad küsimused
Kas majutusteenuse pakkuja varukoopiast ei piisa?
See on hea lisakiht, aga harva piisav üksi. Sageli on hoiuaeg lühike, taastada saab ainult kogu serveri korraga ja koopia asub sama pakkuja juures. Kui probleem on pakkujas endas või kontol, on mõlemad koopiad korraga kättesaamatud.
Kui tihti taastetesti teha?
Vähemalt paar korda aastas ja alati pärast suuremat muudatust: uus server, uus andmebaasi versioon, muudetud varundusskript. Kriitiliste süsteemide puhul tihedamini.
Kas RAID on varukoopia?
Ei. RAID kaitseb ühe ketta rikke eest, aga kustutatud fail või lunavaraga krüpteeritud andmed kustuvad või krüpteeruvad kõigil ketastel korraga.
Kas Dockeris töötavat rakendust varundatakse teisiti?
Põhimõte on sama: varunda andmeid ja seadistust, mitte konteinerit. Andmebaas konteineris varundatakse samuti andmebaasi enda tõmmisega, mitte köite toorkoopiana töö ajal.
Kas sinu varukoopiad on päriselt kontrollitud?
Kui sa ei tea kindlalt, millal sinu serveri varukoopiast viimati midagi taastati, kirjuta mulle. Vaatan üle, mida varundatakse, kuhu ja kui kaua hoitakse, ning teen esimese taastetesti koos sinuga. Rohkem selle kohta, kuidas serverihaldus käib, leiad lehelt Linuxi serverite paigaldus ja haldus.
