Kopie zapasowe i odzyskiwanie środków w przypadku klęsk żywiołowych
Kopie zapasowe i odzyskiwanie katastrof
1) Definicje i cele
Kopia zapasowa - spójna kopia danych/konfiguracji do późniejszego odzyskania (z przypadkowych usunięć, błędów, kryptolocerów, katastrof).
DR (Recovery Disaster) - proces przywracania infrastruktury/usług do pracy SLO po poważnej awarii (pożar, utrata regionu, ogromny kompromis).
RPO (Recovery Point Objective) - maksymalna dopuszczalna utrata danych w czasie (na przykład 15 minut).
RTO (Recovery Time Objective) - cel odzyskiwania czasu usługi (na przykład 30 minut).
Kluczowa zasada: kopia zapasowa. Replikacja szybko rozmazuje błędy i szyfrowanie we wszystkich kopiach. Kopia zapasowa jest odizolowaną, zweryfikowaną, potencjalnie niezmienną kopią.
2) Klasyfikacja danych i poziomy krytyki
Podział aktywów na klasy:- Tier-0 (istotne): transakcyjne bazy danych, płatności, rachunkowość bilansu, tajemnice/PKI.
- Tier-1 (krytyczny): konfiguracje usług, kolejki, artefakty CI/CD, rejestry kontenerów.
- Tier-2 (ważne): analityka, raporty, indeksy wtórne, archiwa dziennika.
- Tier-3 (pomocnicze): bufory, dane czasowe (mogą być przywrócone przez odbudowę).
Dla każdej klasy należy określić RPO/RTO, okres retencji, wymagania dotyczące niezmienności i lokalizację.
3) Strategie zatrzymywania: zasada 3-2-1-1-0
3 kopie danych (prod + 2 kopie zapasowe).
2 różne nośniki/rodzaje pamięci masowej.
1 kopia offsite (inny region/chmura).
1 immutable/air-gap (WORM/Object Lock/Tape).
0 błędów w kontrolach odzysku (regularne testy).
4) Rodzaje kopii zapasowych
Pełna - pełna kopia Powolna/droga, ale podstawa dla wszystkich strategii.
Incremental - różnica z ostatnią kopią zapasową. Optymalna objętość.
Różnica - różnica z ostatnim pełnym. Szybszy powrót, więcej miejsca.
Migawka - migawka woluminu/dysku (EBS/ZFS/LVM). Potrzebujemy migawki spójne aplikacji (cisza).
PITR (Point-in-Time Recovery) - podstawowa kopia zapasowa + logi (WAL/binlog) do wstecznego dokładnego czasu/LSN.
Obiekt/plik/symboliczny - dla określonych typów danych (obrazy VM, obiekty S3, porzucenia DB).
5) Spójność kopii zapasowych
Konsekwentne: jak po nagłym wyłączeniu - nadaje się do bezpaństwowego/dziennego FS.
Spójność aplikacji: aplikacja „zamraża” operacje (fsfreeze/pre-post skryptów) → gwarantowana integralność.
Spójność bazy danych: API narzędzia kopii zapasowej (pgBackRest, XtraBackup), tryby kopii zapasowych na gorąco, punkty kontrolne zamrażania.
6) Szyfrowanie, klucze i dostęp
Szyfrowanie podczas odpoczynku i tranzytu dla wszystkich kopii.
Klucze w KMS/HSM, obrót według zasad (90/180 dni), oddzielne klucze według środowiska.
Rozdzielenie obowiązków: kto tworzy/usuwa kopie zapasowe i kto może je odszyfrować/czytać.
Nie przechowuj kluczy szyfrowania w tej samej domenie zaufania co kopie docelowe.
7) Niemodyfikowalne kopie i ochrona ransomware
Obiekt Lock/WORM (Zgodność/Zarządzanie) z zatrzymaniem i legalnym trzymaniem.
Szczelina powietrza: izolowana/offline storage (feed, offline cloud/account).
Zasady usuwania „opóźnionej aktywacji”, MFA-Delete, oddzielne konto dla wiader kopii zapasowych, zakaz publicznego dostępu.
Weryfikacja złośliwego oprogramowania/wskaźników kompromisu przed zamontowaniem.
8) Częstotliwość, harmonogram i zatrzymywanie
GFS (dziadek-ojciec-syn): przyrosty dzienne, tygodniowe pełne/zróżnicowane, miesięczne pełne z długim przechowywaniem.
RPO dyktuje częstotliwość przyrostów i archiwizacji WAL/binlog (na przykład co 5-15 minut).
Przechowywanie: krytyczne - ≥ 35-90 dni + miesięcznie przez 12-36 miesięcy (wymagania prawne).
Sezonowe szczyty są oddzielnymi punktami kontroli (przed promocjami/zwolnieniami).
9) Modele i scenariusze DR
Active-Active: Oba regiony obsługują ruch. Minimalny RTO, załamanie danych wymaga ścisłej polityki konfliktu.
Active-Passive (gorący/ciepły): gorący - rozłożony i zsynchronizowany (RTO minutes), ciepły - częściowo gotowy (RTO hours).
Zimno: przechowywać kopie i Terraform/Ansible/obrazy, podnieść na żądanie (RTO day +).
DRaaS: orkiestra dostawców maszyn wirtualnych/sieci/adresów w innej strefie.
10) Priorytety w zakresie orkiestry Feilover i odbudowy
Priorytet uruchamiania: sieć/VPN/DNS → sekrety/KMS → bazy danych/klastry → kolejki/pamięci podręcznej → aplikacje → obwód/CDN → analityka.
Automatyzacja: skrypty/runbook działania, Terraform/Ansible/Helm/ArgoCD profile dla środowiska DR.
Dane: DB PITR → reindex/replika → ciepłe pamięci podręcznej → usługi uruchamiania z flagami kompatybilności schematu.
DNS/GSLB: TTL downgrade z wyprzedzeniem, przełączyć scenariusze z walidacją.
11) Testy weryfikacji kopii zapasowych
Przywracanie testów na harmonogramie: pobieranie próbek N% kopii zapasowych, wdrażanie piaskownicy, automatyczne schematy/niezmienne kontrole.
Pełne DR-wiertło (gra-day): wyłączanie regionu/AZ, sprawdzanie RTO/RPO w ruchu na żywo (lub cienie ruchu).
Testy integralności: katalogi hash, checksums, próba odczytu wszystkich warstw (pełny + łańcuch).
Raport dokumentu: czas, kroki, anomalie, rozmiar luki od celów, korekty.
12) Praktyka w zakresie podstawowych technologii
Bazy danych
PostgreSQL: bazowa kopia zapasowa + archiwum WAL (PITR), narzędzia pgBackRest/Barman; sloty replikacji, monitorowanie 'lsn'.
MySQL/MariaDB: kopia zapasowa Percona XtraBackup/Enterprise Backup, archiwizacja binlog.
MongoDB: „mongodump” dla kopii logicznej + migawka dla dużych zestawów; Oplog dla PITR.
Redis: RDB/AOF dla krytycznych (jeśli Redis jest nie tylko pamięci podręcznej), ale częściej - logiczna rekonstrukcja ze źródła + migawka do wypadków.
Kafka/Pulsar: kopia zapasowa metadanych (ZK/Kraft/BookKeeper), migawki dysku, temat/lustro dziennika.
Kubernety
etcd snapshot + Velero dla zasobów/woluminów (migawki CSI).
Sekrety kopii zapasowej/PKI oddzielnie (migawka skarbca).
Oddzielny rejestr obrazów: immutable tags.
Maszyny wirtualne i systemy plików
ZFS: 'zfs snapshot' + 'zfs send | zstd | send-recv' increments, checking 'scrub'.
Migawki LVM/EBS ze skryptami pre/post (spójne z aplikacją).
Sklepy obiektów - wersje + blokada obiektów.
13) Katalogowanie i kontrola wersji kopii zapasowych
Katalog (katalogowanie metadanych): co, gdzie, kiedy, niż zrobione, hashes, klucz KMS, właściciel, okres retencji.
Метка/тева: '= prod' stage', 'system = db' k8s 'vm',' tier=0|1|2 ',' retention=35d|1y '.
Punkty kontrolne złota: przed migracjami/DDL/wielkoskalowe wydania.
14) Obserwowalność i wskaźniki
Wskaźnik sukcesu w pracy:% sukces/porażka, powody.
Czas tworzenia kopii zapasowych/przywracania, szerokość okna.
RPO-actual: log archive log (WAL/binlog) p95.
Integralność: odsetek sprawdzonych łańcuchów, błędy w uzgodnieniu hash.
Koszt: pojemność magazynowa według klasy, współczynnik deduplikacji/kompresji.
Gotowość DR: częstotliwość i wynik ćwiczeń (przejście/awaria).
15) Polityka dostępu i zgodności
oddzielne rachunki/projekty dotyczące przechowywania kopii zapasowych; dostęp zgodnie z zasadą NaC (nie zezwalamy na usuwanie/szyfrowanie z kont produkcyjnych).
Dzienniki dostępu/zmiany (ścieżka audytu), wpisy dotyczące masowych usunięć/zmian retshn.
Zgodność: RODO (prawo do usunięcia archiwów vs), PCI DSS (szyfrowanie, klawisze, segmentacja), lokalne regulatory.
16) Anty-wzory
„Jest replika, co oznacza, że nie potrzebujesz wsparcia”.
Brak immutable/air-gap: jeden błąd/złośliwe oprogramowanie kasuje wszystko.
Kopie zapasowe w tym samym koncie/regionie co prod.
Nigdy nie sprawdzaj odzyskiwania (kopia zapasowa „dead before check”).
Brak katalogowania i kontroli wersji → chaos w wypadku.
Współdzielone klucze szyfrujące dla wszystkich środowisk.
Migawki bez tryb spójny aplikacji dla bazy danych.
Okno zapasowe przecina się ze szczytami (dotyczy p99 i SLO).
17) Lista kontrolna realizacji (0-60 dni)
0-10 dni
Spis systemów/danych, klasy krytyki.
Ustaw cele RPO/RTO według klas.
Włącz pełne + przyrostowe dla Tier-0/1, archiwum WAL/binlog.
Kopie zapasowe poczty: oddzielny region/konto + włącz szyfrowanie KMS.
11-30 dni
Konfiguracja immutable (Object Lock/WORM) dla kopii krytycznych.
Wprowadź katalogowanie, tagi, raportowanie; wpisy do niepowodzeń i lag magazynów.
Pierwszy DR-wiertło: przywrócić oddzielną usługę z kopii zapasowej w odizolowanym środowisku.
31-60 dni
Automatyczna książka startowa: Terraform/Profile Ansible/Helm DR.
Regularne testy przywracania (tydzień/miesiąc) + kwartalny pełny scenariusz DR.
Optymalizacja cyklów życia kosztowo-deduplikacji/kompresji/przechowywania.
18) Wskaźniki zapadalności
Badania przywracania: ≥ 1/tydzień dla Tier-0 (selektywne), ≥ 1/miesiąc - pełny scenariusz.
Niezmienny zasięg дла Tier-0/1 = 100%.
RPO-actual p95 ≤ cel (np. ≤ 15 min).
RTO-actual na ćwiczeniach DR ≤ cel (np. ≤ 30 min).
Kompletność katalogu = 100% (każda kopia zapasowa jest opisana i zaznaczona).
Incydent-to-restore - Czas od wykrycia do rozpoczęcia odzysku.
19) Przykłady (snippets)
PostgreSQL - polityka PITR (idea):bash base backup once a day pgbackrest --stanza = prod --type = full backup archive WAL every 5 minutes pgbackrest --stanza = prod archive-push restore to time pgbackrest --stanza = prod restore --type = time --target =" 2025-11-03 14:00:00 + 02"
MySQL - pętla przyrostowa:
bash xtrabackup --backup --target-dir=/backup/full-2025-11-01 xtrabackup --backup --incremental-basedir=/backup/full-2025-11-01 --target-dir=/backup/inc-2025-11-02 xtrabackup --prepare --apply-log-only --target-dir=/backup/full-2025-11-01 xtrabackup --prepare --target-dir=/backup/full-2025-11-01 --incremental-dir=/backup/inc-2025-11-02
Kubernetes - Velero (idee manifestu):
yaml apiVersion: velero. io/v1 kind: Backup metadata: { name: prod-daily }
spec:
includedNamespaces: ["prod-"]
ttl: 720h storageLocation: s3-immutable
Blokada obiektu S3 (przykładowa polityka cyklu życia):
json
{
"Rules": [{
"ID": "prod-immutable",
"Status": "Enabled",
"NoncurrentVersionExpiration": { "NoncurrentDays": 365 }
}]
}
20) Komunikacja i role operacyjne
Dowódca incydentu, dowództwo komunikacyjne, dowództwo operacyjne, dowództwo DB, bezpieczeństwo.
szablony wiadomości dla zainteresowanych stron/organów regulacyjnych/użytkowników.
Pośmiertnie z działaniami: gdzie stracili minuty, gdzie poprawić automatykę.
21) Wniosek
Niezawodna pętla kopii zapasowych i DR nie jest „zrobić kopię”, ale cykl: klasyfikacja → cele RPO/RTO → wielopoziomowe i niezmienne kopie → zautomatyzowane książki startowe'i → regularne przywracania i ćwiczenia. Trzymaj się 3-2-1-1-0, oddziel replikację od kopii zapasowych, szyfruj i izoluj klucze, dokumentuj i weryfikuj. Wtedy nawet „czarny łabędź” zamieni się w zarządzalny proces z przewidywalnym przestojem i minimalną utratą danych.