پشتیبان گیری و بازیابی فاجعه
پشتیبان گیری و بازیابی فاجعه
1) تعریف و اهداف
پشتیبان گیری - یک کپی سازگار از داده ها/تنظیمات برای بازیابی بعدی (از حذف تصادفی، اشکالات، cryptolocers، بلایای طبیعی).
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 کپی از داده ها (prod + 2 backup).
2 نوع رسانه/ذخیره سازی مختلف.
1 کپی خارج از سایت (منطقه/ابر مختلف).
1 تغییر ناپذیر/هوا شکاف (WORM/شی قفل/نوار).
0 خطا در بازیابی چک (آزمون به طور منظم).
4) انواع پشتیبان گیری
کامل - کپی کامل. آهسته/گران اما پایه برای همه استراتژی ها.
Incremental - تفاوت با آخرین نسخه پشتیبان. بهینه در حجم.
تفاوت - تفاوت با آخرین کامل است. بهبود سریع تر، فضای بیشتر
تصویر لحظهای - تصویر لحظهای از یک حجم/دیسک (EBS/ZFS/LVM). ما نیاز به عکس های فوری برنامه سازگار (quiesce).
PITR (بازیابی نقطه در زمان) - پشتیبان گیری اساسی + سیاهههای مربوط (WAL/binlog) برای بازگشت به زمان دقیق/LSN.
Object/file/figurative - برای انواع داده های خاص (تصاویر VM، اشیاء S3، DB dump).
5) سازگاری پشتیبان گیری
سازگار با سقوط: به عنوان پس از خاموش شدن ناگهانی - مناسب برای FS بدون حالت/روزنامه نگاری.
برنامه سازگار: برنامه «یخ» عملیات (fsfreeze/قبل از ارسال اسکریپت) → یکپارچگی تضمین شده است.
سازگاری پایگاه داده: API ابزار پشتیبان گیری (pgBackRest، XtraBackup)، حالت های پشتیبان گیری داغ، بازرسی های انجماد.
6) رمزگذاری، کلید و دسترسی
رمزگذاری در حالت استراحت و حمل و نقل برای همه نسخه ها.
کلید در KMS/HSM، چرخش توسط سیاست (90/180 روز)، کلید های جداگانه توسط محیط.
تفکیک وظایف: چه کسی پشتیبان گیری را ایجاد/حذف می کند ≠ چه کسی می تواند آنها را رمزگشایی/خواندن کند.
کلید های رمزگشایی را در همان دامنه اعتماد به عنوان کپی های هدف نگه ندارید.
7) کپی غیر قابل تغییر و حفاظت از ransomware
قفل شی/WORM (انطباق/حکومت) با حفظ و نگهداری قانونی.
شکاف هوا: ذخیره سازی جداگانه/آفلاین (خوراک، ابر/حساب آفلاین).
سیاست های حذف «فعال سازی تاخیر»، MFA-Delete، حساب جداگانه برای سطل های پشتیبان، ممنوعیت دسترسی عمومی.
تایید برای نرم افزارهای مخرب/شاخص های سازش قبل از نصب.
8) فرکانس، برنامه و نگهداری
GFS (پدربزرگ-پدر-پسر): افزایش روزانه، هفتگی کامل/diff، ماهانه با ذخیره سازی طولانی.
RPO فرکانس افزایش و بایگانی WAL/binlog را تعیین می کند (به عنوان مثال، هر 5-15 دقیقه).
ذخیره سازی: بحرانی - ≥ 35-90 روز + ماهانه برای 12-36 ماه (الزامات قانونی).
قله های فصلی نقاط کنترل جداگانه (قبل از تبلیغات/انتشار).
9) مدل های DR و سناریوها
فعال فعال: هر دو منطقه در خدمت ترافیک هستند. RTO حداقل، فروپاشی داده ها نیاز به یک سیاست جنگ سخت است.
فعال منفعل (گرم/گرم): گرم باز و هماهنگ (دقیقه RTO)، گرم - تا حدی آماده (ساعت RTO).
سرد: نسخه های فروشگاه و Terraform/Ansible/تصاویر، افزایش تقاضا (RTO روز +).
DRaaS: ارائه دهنده هماهنگی VMs/شبکه/آدرس در منطقه دیگر.
10) اولویت های ارکستراسیون و بازیابی Feilover
اولویت راه اندازی: شبکه/VPN/DNS → اسرار/KMS → پایگاه داده ها/خوشه → صف/کش → برنامه های کاربردی → محیط/CDN → تجزیه و تحلیل.
اتوماسیون: اسکریپت ها/اقدامات runbook، پروفایل های Terraform/Ansible/Helm/ArgoCD برای محیط DR.
داده ها: DB PITR → reindex/replica → کش گرم → راه اندازی خدمات با پرچم سازگاری طرح.
DNS/GSLB: TTL در پیشبرد، سناریوهای سوئیچ با اعتبار سنجی.
11) تست تایید پشتیبان گیری
بازیابی تست بر روی یک برنامه: نمونه برداری N٪ از پشتیبان گیری, استقرار sandbox, خودکار چک طرح/ثابت.
DR-drill کامل (روز بازی): غیرفعال کردن منطقه/AZ، چک کردن RTO/RPO در ترافیک زنده (یا سایه ترافیک).
تست های یکپارچگی: دایرکتوری های هش، چک سام ها، تلاش برای خواندن تمام لایه ها (کامل + زنجیره ای).
گزارش سند: زمان، مراحل، ناهنجاری ها، اندازه شکاف از اهداف، اصلاحات.
12) تمرین برای فن آوری های اصلی
پایگاه های داده
PostgreSQL: پشتیبان گیری پایه + آرشیو WAL (PITR)، ابزار pgBackRest/Barman ؛ اسلات تکرار، نظارت 'LSN'.
MySQL/MariaDB: Percona XtraBackup/Enterprise Backup، بایگانی binlog.
MongoDB: «mongodump» برای کپی منطقی + عکس فوری برای مجموعه های بزرگ ؛ «اُپلاگ» براي «پيتر».
Redis: RDB/AOF برای بحرانی (اگر Redis نه تنها حافظه پنهان است)، اما اغلب - بازسازی منطقی از منبع + عکس فوری برای حوادث.
Kafka/Pulsar: تهیه نسخه پشتیبان از ابرداده (ZK/Kraft/BookKeeper)، عکس های فوری دیسک، آینه سازی موضوع/ورود به سیستم.
کوبرنتیز
etcd snapshot + Velero برای منابع/حجم (عکس های فوری CSI).
اسرار پشتیبان/PKI به طور جداگانه (عکس فوری خرک).
ثبت جداگانه تصاویر: برچسبهای تغییرناپذیر.
ZFS: 'zfs snapshot' + 'zfs send | zstd | send-recv' increments, چک کردن 'scrub'.
LVM/EBS عکس های فوری با اسکریپت های قبل/پست (برنامه سازگار).
فروشگاه های شی - نسخه + قفل شی.
13) فهرست بندی و کنترل نسخه پشتیبان گیری
دایرکتوری (فهرست بندی ابرداده): چه، کجا، چه زمانی، از انجام، هش، کلید KMS، مالک، دوره نگهداری.
Метки/теги: 'env = prod' stage ',' system = db 'k8s' vm ',' tier = 0 | 1 | 2 ',' retention = 35d | 1y '.
نقاط بازرسی طلا: قبل از مهاجرت/DDL/انتشار در مقیاس بزرگ.
14) قابلیت مشاهده و معیارها
میزان موفقیت شغلی:٪ موفقیت/شکست، دلایل.
زمان پشتیبان گیری/بازگرداندن، عرض پنجره.
RPO-real: ورود به سیستم آرشیو ورود (WAL/binlog) p95.
یکپارچگی: نسبت زنجیره های آزمایش شده، خطاهای آشتی هش.
هزینه: ظرفیت ذخیره سازی توسط کلاس، deduplication/نسبت فشرده سازی.
آمادگی DR: فرکانس و نتیجه تمرینات (پاس/شکست).
15) سیاست های دسترسی و انطباق
حساب ها/پروژه های جداگانه برای ذخیره سازی پشتیبان ؛ دسترسی با توجه به اصل NaC (ما حذف/رمزگذاری از حساب های تولید اجازه نمی دهد).
سیاهههای مربوط از دسترسی/تغییرات (دنباله حسابرسی)، هشدار برای حذف جرم/تغییرات retshn.
انطباق: GDPR (حق حذف در مقابل آرشیو)، PCI DSS (رمزگذاری، کلید، تقسیم بندی)، تنظیم کننده های محلی.
16) ضد الگوهای
«یک کپی وجود دارد، به این معنی که شما نیازی به پشتیبان ندارید».
بدون تغییر/شکاف هوا: یک خطا/بدافزار همه چیز را پاک می کند.
پشتیبان گیری در همان حساب/منطقه به عنوان prod.
هرگز بازیابی (پشتیبان گیری «مرده قبل از بررسی») را بررسی کنید.
بدون فهرست بندی و کنترل نسخه → هرج و مرج در یک تصادف.
کلیدهای رمزگذاری مشترک برای همه محیط ها.
عکس های فوری بدون حالت برنامه سازگار برای پایگاه داده.
پنجره پشتیبان با قله تقاطع (تاثیر می گذارد P99 و SLO).
17) چک لیست پیاده سازی (0-60 روز)
0-10 روز
موجودی سیستم ها/داده ها، کلاس های بحرانی.
تنظیم اهداف RPO/RTO توسط کلاس.
فعال کردن کامل + افزایشی برای Tier-0/1، آرشیو WAL/binlog.
پشتیبان گیری پست: منطقه/حساب جداگانه + رمزگذاری KMS را فعال کنید.
11-30 روز
پیکربندی غیر قابل تغییر (Object Lock/WORM) برای نسخه های مهم.
فهرست بندی، برچسب ها، گزارش را وارد کنید هشدار به شکست و تاخیر مجلات.
اول DR-drill: بازگرداندن یک سرویس جداگانه از یک نسخه پشتیبان در یک محیط جدا شده.
31-60 روز
خودکار کتاب اجرا: پروفیل های Terraform/Ansible/Helm DRR
تست های بازیابی منظم (هفته/ماه) + سناریوی DR کامل سه ماهه.
بهینه سازی چرخه های هزینه/فشرده سازی/ذخیره سازی.
18) معیارهای بلوغ
بازگرداندن آزمون: ≥ 1/هفته برای Tier-0 (انتخابی)، ≥ 1/ماه - سناریو کامل است.
پوشش غیر قابل تغییر для Tier-0/1 = 100٪.
هدف ≤ P95 واقعی RPO (به عنوان مثال ≤ 15 دقیقه).
RTO-واقعی در DR-تمرینات ≤ هدف (به عنوان مثال ≤ 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 - ولرو (ایده های مانیفست):
yaml apiVersion: velero. io/v1 kind: Backup metadata: { name: prod-daily }
spec:
includedNamespaces: ["prod-"]
ttl: 720h storageLocation: s3-immutable
S3 شی قفل (سیاست چرخه عمر نمونه):
json
{
"Rules": [{
"ID": "prod-immutable",
"Status": "Enabled",
"NoncurrentVersionExpiration": { "NoncurrentDays": 365 }
}]
}
20) ارتباطات و نقش های عملیاتی
فرمانده حادثه، فرمانده عملیات، فرمانده عملیات، فرمانده عملیات، امنیت.
قالب پیام برای ذینفعان/تنظیم کننده/کاربران.
پس از مرگ با اقدامات: جایی که آنها دقیقه را از دست دادند، جایی که برای بهبود اتوماسیون.
21) نتیجه گیری
یک حلقه قابل اعتماد از پشتیبان گیری و DR یک «ایجاد یک کپی» نیست، بلکه یک چرخه است: طبقه بندی → اهداف RPO/RTO → نسخه های چند سطحی و غیر قابل تغییر → runbooks خودکار و → بازیابی و تمرینات منظم. پایبندی به 3-2-1-1-0، تکرار جداگانه از پشتیبان گیری، رمزگذاری و جداسازی کلید ها، سند و تأیید. سپس حتی «قوی سیاه» به یک فرآیند قابل کنترل با خرابی قابل پیش بینی و حداقل از دست دادن داده ها تبدیل خواهد شد.