Бэкаптар және disaster recovery
Backaps және Disaster Recovery
1) Анықтамалар мен мақсаттар
Бэкап - кейіннен қалпына келтіру үшін деректердің/конфигурациялардың келісілген көшірмесі (кездейсоқ жойылудан, бумалардан, криптолокерлерден, апаттардан).
DR (Disaster Recovery) - инфрақұрылымды/сервистерді ірі авариядан (өрт, аймақты жоғалту, жаппай компромисс) кейін жұмыс істейтін SLO-ға дейін қалпына келтіру процесі.
RPO (Recovery Point Objective) - уақыт бойынша деректердің барынша рұқсат етілген жоғалуы (мысалы, 15 минут).
RTO (Recovery Time Objective) - сервисті қалпына келтірудің мақсатты уақыты (мысалы, 30 минут).
Негізгі принцип: репликация ≠ бэкап. Репликалау барлық көшірмелер бойынша қателер мен шифрлауды жылдам «бұлдырады». Бэкап - оқшауланған, тексерілген, ықтимал өзгермейтін көшірме.
2) Деректерді жіктеу және сындылық деңгейлері
Активтерді мынадай сыныптарға бөліңіз:- Tier-0 (өмірлік маңызы бар): транзакциялық ДБ, төлемдер, балансты есепке алу, құпиялар/PKI.
- Tier-1 (күрделі): сервистер конфигі, кезектер, CI/CD артефактілері, контейнерлер тізілімі.
- Tier-2 (маңызды): талдау, есептер, қайталама индекстер, лог-мұрағаттар.
- Tier-3 (көмекші): кэштер, уақытша деректер (қалпына келтіру арқылы қалпына келтіруге болады).
Әрбір сынып үшін RPO/RTO, сақтау мерзімін, өзгермейтіндігі мен орналасу талаптарын анықтаңыз.
3) Сақтау стратегиясы: ереже 3-2-1-1-0
Деректердің 3 көшірмесі (прод + 2 резервтік).
2 түрлі тасығыштар/сақтау орындары.
1 көшірме offsite (басқа өңір/бұлт).
1 immutable/air-gap (WORM/Object Lock/Tape).
Қалпына келтіруді тексерудегі 0 қате (тұрақты тесттер).
4) Бэкап түрлері
Full - толық көшірме. Баяу/қымбат, бірақ барлық стратегиялар үшін база.
Incremental - соңғы бэкаппен айырмашылық. Көлемі бойынша оңтайлы.
Differential - соңғы full айырмашылығы. Тез қалпына келтіру, көп орын.
Snapshot - томның/дискінің дереу бедері (EBS/ZFS/LVM). app-consistent snapshot (quiesce) қажет.
PITR (Point-in-Time Recovery) - нақты уақытқа/LSN қайту үшін базалық бэкап + журналдар (WAL/binlog).
Объектілік/файлдық/бейнелік - деректердің нақты түрлеріне (VM-бейнелер, S3-объектілер, ДҚ-дампалар).
5) Бэкаптарды келісу
Crash-consistent: кенеттен өшірілгеннен кейін - stateless/журнал FS үшін жарамды.
App-consistent: қосымша «мұздатады» операциялары (fsfreeze/pre-post scripts) → кепілдендірілген тұтастық.
БД-консистенттілігі: API бэкап құралы (pgBackRest, XtraBackup), hot-backup режимдері, бақылау нүктелерін мұздату.
6) Шифрлау, кілттер және қол жеткізу
Барлық көшірмелер үшін at-rest және in-transit шифрлау.
KMS/HSM кілттері, саясат бойынша ротация (90/180 күн), қоршаған орта бойынша бөлек кілттер.
Міндеттерді бөлу: бэкаптарды кім жасайды/жояды ≠ оларды кім ашады/оқи алады.
Шифрды ашу кілттерін мақсатты көшірмелермен бірдей сенім доменінде ұстамаңыз.
7) Өзгермейтін көшірмелер және ransomware қорғанысы
Ретеншн және Legal Hold бар Object Lock/WORM (Compliance/Governance).
Air-gap: оқшауланған/офлайн сақтау орны (лента, офлайн-бұлт/аккаунт).
«Кейінге қалдырылған белсенділікпен» жою саясаты, MFA-Delete, backup-бакеттерге арналған жеке аккаунт, көпшілікке қол жеткізуге тыйым салу.
Монтаждау алдында malware/компромисс индикаторларына тексеру.
8) Жиілік, кесте және ретеншн
GFS (Grandfather-Father-Son): күндізгі инкременталдар, апта сайынғы full/diff, ұзақ сақталатын ай сайынғы full.
RPO инкременталдар жиілігін және WAL/binlog мұрағаттауды талап етеді (мысалы, әрбір 5-15 минут сайын).
Сақтау: күрделі - 35-90 күнге ≥ + ай сайын 12-36 айға (заңдық талаптар).
Маусымдық шыңдар - жекелеген бақылау нүктелері (акциялар/релиздер алдында).
9) DR-модельдер мен сценарийлер
Active-Active: екі өңір де трафикке қызмет көрсетеді. Ең аз RTO, деректерді бұзу қақтығыстардың қатаң саясатын талап етеді.
Active-Passive (ыстық/жылы): ыстық - кеңейтілген және үндестірілген (RTO минут), жылы - жартылай дайын (RTO сағат).
Cold: көшірмелерді және Terraform/Ansible/суреттерді сақтаймыз, сұрау бойынша көтереміз (RTO тәулік +).
DRaaS: басқа аймақтағы VM/желілердің/мекенжайлардың провайдерлік оркестрі.
10) Фейловерді оркестрлеу және қалпына келтіру басымдықтары
Іске қосу басымдығы: желі/VPN/DNS → құпиялар/KMS → базалар/кластерлер → кезектер/кеш → қосымшалар → периметр/CDN → аналитика.
Автоматтандыру: скрипттер/Runbook-әрекеттер, Terraform/Ansible/Helm/ArgoCD DR-ортаның профильдері.
Деректер: DB PITR → reindex/replica → warm-кэш → сызбалардың үйлесімділік жалаулары бар сервистерді іске қосу.
DNS/GSLB: алдын ала TTL төмендету, валидациямен ауыстырып қосу сценарийлері.
11) Қалпына келтіру тестілері (backup verification)
Кесте бойынша restore-тесттер: N% бэкаптарды іріктеу, «құмсалғышта» өрістету, схемаларды/инварианттарды автоматты түрде тексеру.
Толық DR-drill (game-day): аймақты/AZ өшіру, RTO/RPO-ны тірі трафикте тексеру (немесе көлеңке трафигі).
Тұтастық тестілері: хэш-каталогтар, бақылау сомалары, барлық қабаттарды оқу әрекеті (full + chain).
Док-есеп: уақыт, қадамдар, ауытқулар, мақсаттардан алшақтық мөлшері, түзетулер.
12) Негізгі технологияларға арналған практика
Дерекқорлар
PostgreSQL: base backup + WAL мұрағаты (PITR), pgBackRest/Barman құралдары; репликалау слоттары, бақылау 'lsn'.
MySQL/MariaDB: Percona XtraBackup/Enterprise Backup, binlog мұрағаттау.
MongoDB: логикалық көшірме үшін 'mongodump' + үлкен жиынтықтар үшін snapshot; PITR үшін Oplog.
Redis: сыни үшін RDB/AOF (егер Redis тек кэш емес), бірақ жиі - авариялар үшін бастапқы + snapshot логикалық қайта құру.
Kafka/Pulsar: метадеректердің бэкаптары (ZK/Kraft/BookKeeper), дискілердің снапшоттары, топиктерді/логтарды зеркалау.
Kubernetes
etcd snapshot + Velero (CSI snapshots).
Құпия/PKI жеке (Vault snapshot).
Бейнелердің жеке тізілімі: артефактілерді сақтау полистері (immutable tags).
ЖМ және файл жүйелері
ZFS: 'zfs snapshot' + 'zfs send | zstd | send-recv' инкременттерімен, 'scrub' тексеруі.
LVM/EBS снапшоттары pre/post скриптімен (app-consistent).
Нысанды сақтау орындары: + Object Lock нұсқалары.
13) Бэкап нұсқаларын каталогтау және бақылау
Каталог (метадеректерді каталогтау): не, қайда, қашан, не істеді, хэштер, KMS кілті, иесі, сақтау мерзімі.
Метки/теги: `env=prod|stage`, `system=db|k8s|vm`, `tier=0|1|2`, `retention=35d|1y`.
«Алтын» бақылау нүктелері (Gold): көші-қон/DDL/масштабты релиздер алдында.
14) Бақылау және метрика
Тапсырмалардың табысты болуы: табысты/істен шыққан%, себептер.
Бэкап/қалпына келтіру уақыты, терезенің ені.
RPO-нақты: журнал мұрағаттарының лаг (WAL/binlog) p95.
Тұтастығы: тексерілген тізбектердің үлесі, хэштерді салыстыру қателері.
Құны: сыныптар бойынша сақтау көлемі, дедупликация/қысылу коэффициенті.
DR-дайындық: оқу-жаттығудың жиілігі мен нәтижесі (pass/fail).
15) Кіру саясаты және комплаенс
Бэкап-қоймаларға арналған бөлек есепке алу жазбалары/жобалары; NaC қағидаты бойынша кіру (сынақ есептеулерінен жоюға/шифрлауға жол бермейміз).
Қол жеткізу/өзгерту логтары (audit trail), жаппай жою/өзгерту алаңдары ретеншн.
Нормаларға сәйкестігі: GDPR (жою құқығы vs мұрағаттар), PCI DSS (шифрлау, кілттер, сегменттеу), жергілікті реттегіштер.
16) Қарсы үлгілер
«Реплика бар, демек бэкап қажет емес».
Жоқ immutable/air-gap: бір қате/зиянкестер бәрін өшіреді.
Прод.
Ешқашан қалпына келтіруді тексермеңіз (бэкап «тексеруге дейін өлді»).
Каталогтау және бақылау нұсқалары жоқ → апат кезінде хаос.
Барлық орталар үшін ортақ шифрлау кілттері.
ДБ үшін app-consistent режимі жоқ снапшоттар.
Бэкап терезесі шыңдармен қиылысады (p99 және SLO әсер етеді).
17) Енгізу чек-парағы (0-60 күн)
0-10 күн
Жүйелерді/деректерді түгендеу, сындылық сыныптары.
RPO/RTO мақсаттарын сыныптар бойынша қою.
Tier-0/1 үшін full + incremental, WAL/binlog архивін қосу.
Бэкаптарды тарату: жеке өңір/аккаунт + KMS шифрлауды қосу.
11-30 күн
Сыни көшірмелерге арналған immutable (Object Lock/WORM) бағдарламасын баптау.
Каталогтауды, тегтерді, есептілікті енгізу; журналдардың құлдырауы мен артта қалуына алаңдар.
Бірінші DR-drill: оқшауланған ортада бэкаптан жеке сервисті қалпына келтіру.
31-60 күн
Runbook: Terraform/Ansible/Helm DR профильдерін автоматтандыру.
Тұрақты restore-тесттер (апта/ай) + тоқсандық full DR сценарийі.
Құнды оңтайландыру: дедупликация/сығу/сақтаудың өмірлік циклдері.
18) Жетілу метрикасы
Restore-тестілер: ≥ 1/апта Tier-0 үшін (іріктеп), ≥ 1/ай - толық сценарий.
Immutable coverage для Tier-0/1 = 100%.
RPO-нақты p95 нысаналы ≤ (мысалы, ≤ 15 мин).
DR-жаттығуларда RTO-нақты мақсатты ≤ (мысалы, ≤ 30 мин).
Каталог-жиынтығы = 100% (әрбір бэкап сипатталған және тексерілген).
Incident-to-restore: табудан қалпына келтіруді іске қосуға дейінгі уақыт.
19) Мысалдар (сниппеттер)
PostgreSQL - PITR саясаты (идея):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 - инкременталды цикл:
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 (манифесттер идеялары):
yaml apiVersion: velero. io/v1 kind: Backup metadata: { name: prod-daily }
spec:
includedNamespaces: ["prod-"]
ttl: 720h storageLocation: s3-immutable
S3 Object Lock (өмірлік цикл саясатының мысалы):
json
{
"Rules": [{
"ID": "prod-immutable",
"Status": "Enabled",
"NoncurrentVersionExpiration": { "NoncurrentDays": 365 }
}]
}
20) Коммуникация және операциялық рөлдер
Incident Commander, Comms Lead, Ops Lead, DB Lead, Security.
Стейкхолдерлерге/реттеушілерге/пайдаланушыларға арналған хабарлар үлгілері.
Әрекетті Post-mortem: қайда минуттарды жоғалтып, қайда автоматтандыруды жақсарту.
21) Қорытынды
Бэкап пен DR сенімді контуры - бұл «көшірме жасау» емес, цикл: жіктеу → RPO/RTO мақсаттары → көпдеңгейлі және immutable көшірмелері → автоматтандырылған runbook 'және → тұрақты қалпына келтіру және жаттығулар. 3-2-1-1-0 ұстаныңыз, репликаны бэкаптан бөліңіз, кілттерді шифрлаңыз және оқшаулаңыз, құжаттаңыз және тексеріңіз. Сонда тіпті «қара аққу» болжамды бос тұру уақыты мен деректердің ең аз жоғалуы бар басқарылатын процеске айналады.