Moodul 8 · 8.1
Varundusplaan sinu serverile
Moodul 8: Varukoopiad ja jälgimine · Lugemisaeg: 11 minutit
Õpieesmärk: Pärast seda õppetundi oskad oma serverile varundusplaani koostada: mida hoiad, kus, kui tihti ja kui kaua ning kuidas veenduda, et taastamine töötab.
Põhimõisted: reegel 3-2-1, hetktõmmis (snapshot), teenusepakkuja varukoopia, oma varukoopia väljaspool teenusepakkujat, RPO, RTO, andmebaasi tõmmis (mariadb-dump, pg_dump), seadistus kaustas /etc, Dockeri köited (volumes), krüpteerimine, lunavara, append-only, taastamise test
Miks plaan, mitte lihtsalt "varukoopia ju on olemas"?
Peaaegu kõik, kes on serveri kaotanud, arvasid, et varukoopia on olemas. Siis selgub, et selles on ainult operatsioonisüsteem, mitte andmebaas, või asub see samas serveris, mis nüüd kadunud on, või on sama lunavara selle krüpteerinud, või ei tea keegi parooli. Varukoopial on väärtus alles siis, kui saad selle taastada. Seepärast alusta plaanist ja lõpeta testiga.
Plaan vastab viiele küsimusele:
- Mida peab saama taastada?
- Kui palju andmeid tohid kaotada? (RPO)
- Kui kiiresti peab kõik jälle töötama? (RTO)
- Kus koopiad asuvad ja kui palju neid on?
- Kuidas tead, et see töötab?
Mida peab saama taastada?
Server koosneb kihtidest. Kõiki kihte ei pea varundama:
| Kiht | Näide | Varundada? |
|---|---|---|
| Operatsioonisüsteem ja paketid | Debian, nginx, PHP | Mitte tingimata: saab uuesti paigaldada. Küll aga nimekiri: dpkg --get-selections |
| Seadistus | /etc (nginx, SSH, tulemüür, systemd üksused), sinu compose-failid | Jah, väike ja hädavajalik |
| Rakendused ja veebisaidid | /var/www, /opt/<app>, /srv | Jah, kui need ei tule Gitist |
| Andmed | andmebaasid, üleslaaditud failid, Dockeri köited (/var/lib/docker/volumes) | Jah, kõige olulisem |
| Saladused | paroolid, API-võtmed, sinu varukoopia enda võti | Jah, kuid eraldi ja krüpteeritult (vt allpool) |
| Logid, vahemälud, ajutised failid | /var/log, /var/cache, /tmp | Tavaliselt mitte |
Pööra erilist tähelepanu andmebaasidele. Töötav andmebaas kirjutab pidevalt. Kui kopeerid töötava MariaDB või PostgreSQLi faile, võid saada vigase koopia. Seepärast tee kõigepealt tõmmis (dump): järjepidev hetkeseis failina, mille võtad seejärel varukoopiasse kaasa.
root@web1:~# mariadb-dump --single-transaction --all-databases | gzip > /var/backups/db/alles-$(date +%F).sql.gz
root@web1:~# sudo -u postgres pg_dumpall | gzip > /var/backups/db/pg-$(date +%F).sql.gz(mariadb-dump kandis varem nime mysqldump; see käsk töötab enamasti ka praegu.) Kui andmebaas töötab konteineris, tee sama käsuga docker compose exec (õppetund 9.4).
RPO ja RTO: kui palju tohid kaotada?
Kaks erialast mõistet aitavad valikuid teha:
- RPO (recovery point objective): kui mitme tunni andmed tohid kõige rohkem kaotada? Igapäevane varukoopia kell 03:00 tähendab, et kui server kell 22:00 kokku jookseb, on peaaegu terve päev kadunud. Tellimustega e-poe jaoks on see liiga palju, kord nädalas muutuva blogi jaoks aga täiesti sobiv.
- RTO (recovery time objective): kui kaua tohib aega minna, kuni kõik jälle töötab? Teenusepakkuja täieliku varukoopia taastamine võib võtta minuteid, uue serveri ülesehitamine ja kõige käsitsi taastamine aga tunde.
Pane need oma serveri jaoks kirja. Neist sõltub, kui tihti varukoopiat teed ja kuidas seda hoiad.
Hetktõmmis, teenusepakkuja varukoopia, oma varukoopia
VPS-il on tavaliselt kolme liiki turvavõrku. Need sarnanevad, kuid kaitsevad erinevate asjade eest.
1. Hetktõmmis (snapshot). Kogu virtuaalse ketta hetkeseis, mis tehakse teenusepakkuja paneelis. Kiire teha ja kiire taastada. Ideaalne vahetult enne uuendamist (õppetund 4.3). Kuid enamikul teenusepakkujatel asub hetktõmmis serveriga samal andmesalvestil. Kui see salvesti rikki läheb või kaotad oma konto, on ka hetktõmmis kadunud. Ja hetktõmmist ei hoita kaua: see kasvab koos kõigi hilisemate muudatustega. Hetktõmmis ei ole varukoopia.
2. Teenusepakkuja varukoopia. Paljud teenusepakkujad teevad (vajadusel lisavalikuna) automaatselt iga päev koopia kogu sinu serverist teisele andmesalvestile. WebOkés on see näiteks kogu VPS-i igapäevane varukoopia, mida hoitakse seitse päeva; teistel teenusepakkujatel toimib see sarnaselt, oma tähtaegadega. See on hea teine kiht riistvararikete ja sinu enda eilsete eksimuste vastu. Kuid see on endiselt üks osapool: sinu konto, sinu makse, nende rike. Ja taastatakse tavaliselt kogu server korraga.
3. Sinu oma varukoopia väljaspool teenusepakkujat. Koopia sinu andmetest teise osapoole juures või teises asukohas, mille teed ja mida haldad ise (õppetund 8.2). See on kiht, mis jääb alles, kui kõik muu läheb nässu.
Reegel 3-2-1
Levinud rusikareegel:
- 3 koopiat sinu andmetest (originaal ja kaks varukoopiat);
- 2 eri liiki andmesalvestil või süsteemis;
- millest 1 asub teises asukohas.
VPS-i puhul võib see olla: andmed serveris, teenusepakkuja igapäevane varukoopia ja restic abil tehtud krüpteeritud oma varukoopia teise osapoole andmesalvestisse. Tänapäevane lisanõue on, et vähemalt ühte koopiat ei saa kustutada see, kes serveri üle võtab (võrguühenduseta või append-only, õppetund 8.2). Serverisse sattunud lunavara otsib aktiivselt varukoopiaid, et ka need krüpteerida või kustutada. Varukoopia, mida server ise kustutada tohib, selle vastu ei kaitse.
Krüpteerimine ja sinu varukoopia parool
Teise osapoole juures asuv varukoopia peab olema krüpteeritud: selles on kliendiandmed, paroolid ja võtmed. restic (õppetund 8.2) krüpteerib vaikimisi. Sellega tekib aga uus risk: sinu varukoopia parool. Kui see kaob, on varukoopia kasutu. Ja kui see on ainult serveris, mille kaotasid, samuti.
Seepärast hoia parooli ka väljaspool serverit: oma paroolihalduris ja soovi korral paberil seifis. Sama kehtib selle andmesalvesti juurdepääsuandmete kohta, kus su varukoopia asub.
Taastamise testimine
Plaani kõige olulisem osa. Taastamise test tähendab, et taastad varukoopia päriselt kohta, kus see midagi katki ei tee, ja kontrollid, kas tulemus töötab.
- Väikselt ja tihti: taasta üks fail või üks kaust asukohta
/tmp/terugja võrdle (diff). Näiteks kord kuus. - Suurelt ja aeg-ajalt: ehita varukoopiast üles täiesti uus testserver, impordi andmebaas, käivita veebisait. Näiteks kord aastas või iga suurema muudatuse järel. See on ühtlasi harjutus päris hädaolukorra jaoks (õppetund 10.3).
Pane kirja, kui kaua see aega võttis: see on sinu tegelik RTO.
Säilitustähtajad
Ära hoia ainult viimast varukoopiat. Kui avastad alles kahe nädala pärast, et fail on vigane või kustutatud, vajad kolme nädala tagust varukoopiat. Levinud skeem: seitse päevast, neli nädalast ja kuus kuist versiooni. restic korraldab selle käsuga forget (õppetund 8.2). Mõtle ka isikuandmete kaitse üldmäärusele (GDPR): isikuandmeid ei hoita kauem kui vaja, ka mitte varukoopiates. Pane oma säilitustähtajad kirja.
Praktikas
Kasuta teenusepakkuja hetktõmmist vahetult enne riskantseid muudatusi ja kustuta see pärast; jäta teenusepakkuja igapäevane varukoopia sisse, kui see on olemas; ja tee lisaks oma krüpteeritud varukoopia andmetest ja seadistusest teise osapoole juurde. WebOkés on need VPS-i vaates nimega Snapshots ja Backups; teistel teenusepakkujatel on nimed ja tähtajad teised, kuid põhimõte on sama. Majutuspaketi või hallatud teenuse puhul kehtivad sageli teised kokkulepped: vaata, mis sinu puhul korraldatud on.
Kokkuvõte
- Varukoopial on väärtus alles siis, kui taastamine töötab; alusta plaanist ja lõpeta testiga.
- Varunda eelkõige andmeid ja seadistust: andmebaasid tõmmisena,
/etc, veebisaidid, Dockeri köited, compose-failid. - Määra RPO (kui palju tohid kaotada) ja RTO (kui kiiresti peab kõik töötama).
- Hetktõmmis (sama andmesalvesti, lühiajaline), teenusepakkuja varukoopia (teine andmesalvesti, sama osapool) ja oma varukoopia väljaspool teenusepakkujat on kolm eri kihti; järgi reeglit 3-2-1 ja hoia vähemalt üht koopiat, mida server ise kustutada ei saa.
- Krüpteeri, hoia varukoopia parooli väljaspool serverit ning testi taastamist väikselt ja tihti, suurelt aeg-ajalt.
Test (quiz)
Ülesanne
Ülesanne O8.1: Sinu varundusplaan. Koosta oma serverile ühe lehekülje pikkune varundusplaan: mida peab saama taastada (kihtide kaupa), sinu RPO ja RTO, millised koopiad sul on (hetktõmmis, teenusepakkuja, oma) ja kus, sinu säilitustähtajad, kus asub varukoopia parool ja millal teed taastamise testi. Täida vorm; pärast saatmist näed näidisplaani, millega oma plaani võrrelda.
Ülesanne O8.1: Sinu varundusplaan
Selle ülesande teed ise, keegi ei kontrolli seda. Märgi ära, mida tegid, ja märgi ülesanne tehtuks.
Andmebaasid dump'ina, mitte töötava andmebaasi eraldi failidena. Iga päev krüpteeritult (restic) teise teenusepakkuja juurde; hetktõmmis ainult muudatuste ajal. 7 päevast, 4 nädalast ja 6 kuist versiooni on hea algus. Igal kuul väike taastamine, igal aastal täielik ülesehitus. Ära kunagi sisesta päris parooli.
Su linnukesed ja märkmed jäävad ainult sellesse brauserisse, me ei saada neid kuhugi. Kui oled sisse loginud, salvestame Minu kursustes ainult info, et tegid ülesande ära.
Loe edasi
- VPS-i hetktõmmised ja varukoopiad
- Varundusstrateegia: 3-2-1 reegel sinu enda ettevõtte jaoks
- Kursusel Veilig online: õppetunnid reeglist 3-2-1 ja varukoopiatest, mis lunavara üle elavad.
- MariaDB, mariadb-dump: https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump
- PostgreSQL, Backup and Restore (SQL Dump): https://www.postgresql.org/docs/current/backup-dump.html
