Categories
Disaster Recovery

**

פֿאַר דעוואָפּס אינזשענירן, דאַטאַבייס אַדמיניסטראַטאָרן (DBAs), און IT סיסטעם אַרכיטעקטן, זענען “רעקאָווערי צייט אָביעקטיוו” (RTO) און “רעקאָווערי פונקט אָביעקטיוו” (RPO) מער ווי בלויז געשעפט-קאָנטינויטעט ווערטער—זיי זענען שטרענג אינזשעניריע באַגרענעצונגען. ווען מען פירט מיסיע-קריטישע דאַטאַבייסן, קען אַ דורכפאַל צו פּינטלעך רעכענען, אַרכיטעקטירן פֿאַר, און וואַלידירן די מעטריקן פירן צו קאַטאַסטראָפאַלע דאַטן-פאַרלוסט און לאַנגע דאַונטיים.

אין מאָדערנע ענטערפּרייז סוויוועס, פאָדערט די רעכענונג פון RTO און RPO אַ טיפער פאַרשטענדעניש פון דאַטאַבייס אינערלעכע אַרבעט, סטאָרידזש I/O, נעטוואָרק טרופּוט, און טראַנסאַקציע לאָג מעכאַניק. דער פירער פאָרשט די טעכנישע מעטאָדאָלאָגיעס פֿאַר רעכענען, טעסטן, און אָפּטימיזירן RTO און RPO פֿאַר פּראָדוקציע דאַטאַבייס סיסטעמען.

דעקאָנסטרוקציע פון RPO (רעקאָווערי פונקט אָביעקטיוו) אין דאַטאַבייס סיסטעמען

RPO דעפינירט די מאַקסימום אַקסעפּטאַבאַל סומע פון דאַטן-פאַרלוסט געמאָסטן אין צייט. אויב דיין RPO איז 15 מינוט, מיינט אַ קאַטאַסטראָפע וואָס פּאַסירט 12:00 אַזייגער, אַז איר מוזט קענען צוריקקריגן אַלע באַשטעטיקטע טראַנסאַקציעס ביז לפּחות 11:45.

פֿאַר דאַטאַבייסן, ווערט RPO באַשטימט דורך דיין טראַנסאַקציע לאָג פאַרוואַלטונג סטראַטעגיע (WAL אין PostgreSQL, Redo Logs אין Oracle, Transaction Logs אין SQL Server).

די מעכאַניק פון דאַטן-פאַרלוסט און לאָג דזשענעריישאַן

צו רעכענען אַ דערגרייכבאַרן RPO, מוזט איר ערשט פאַרשטיין די טראַנסאַקציע לאָג דזשענעריישאַן קורס פון דיין דאַטאַבייס. אויב איר שיקט לאָגס צו אַ באַקאַפּ ריפּאַזאַטאָרי יעדער 15 מינוט, אָבער דיין נעטוואָרק קען נישט אַריבערפירן 15 מינוט ווערט פון לאָגס אין דעם פענצטער, וועט דיין פאַקטישער RPO קעסיידער פאַרערגערט ווערן.

איר קענט באַזעלינען דיין לאָג דזשענעריישאַן קורס ניצנדיק נאַטיווע SQL קאָמאַנדעס. פֿאַר ביישפּיל, אין PostgreSQL (ווערסיע 10+), קענט איר מעסטן די “Write-Ahead Log” (WAL) דזשענעריישאַן קורס איבער אַ ספּעציפישן אינטערוואַל:

-- Run this at T=0
SELECT pg_current_wal_lsn() AS start_lsn;

-- Wait exactly 5 minutes (300 seconds), then run:
SELECT pg_current_wal_lsn() AS end_lsn,
       pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), 'START_LSN_VALUE')) AS wal_generated_size,
       pg_wal_lsn_diff(pg_current_wal_lsn(), 'START_LSN_VALUE') / 300 AS bytes_per_second;

אויב די קווערי אַנטפּלעקט אַז איר דזשענעריירט 50 MB/s פון WAL דאַטן בעשאַס שפּיץ-לאַסט, פאָדערט אַ 15-מינוטיקער RPO אַריבערפירן 45 GB פון לאָג דאַטן צו דיין באַקאַפּ סטאָרידזש. דיין נעטוואָרק און סטאָרידזש צילן מוזן שטיצן סוסטאַינעד שרייב-גיכקייטן וואָס יקסידן 50 MB/s צו האַלטן דעם RPO.

סינכראָנישע קעגן אַסינכראָנישע רעפּליקאַציע אימפּאַקט

פילע DBAs פאַרלאָזן זיך אויף “הויך אַוויילאַביליטי” (HA) רעפּליקאַציע צו באַפרידיקן RPO. אָבער, רעפּליקאַציע איז נישט קיין באַקאַפּ. אַ אויסגעמעקטע טאַבעלע (DROP TABLE users;) רעפּליקירט זיך גלייך.

ווען מען ניצט רעפּליקאַציע פֿאַר “דיזאַסטער רעקאָווערי” (DR), אימפּאַקטירט דער רעפּליקאַציע-מאָדע גלייך דעם RPO:
* סינכראָנישע רעפּליקאַציע: גאַראַנטירט אַ RPO פון נול (RPO=0). די ערשטיקע דאַטאַבייס וועט נישט באַשטעטיקן אַ טראַנסאַקציע ביז די סטאַנדביי באַשטעטיקט דעם עמפאַנג. דער פּרייַז איז געוואקסענע לייטענסי אויף ערשטיקע שרייב-אָפּעראַציעס.
* אַסינכראָנישע רעפּליקאַציע: ברענגט אַריין רעפּליקאַציע-לאַג. דיין RPO איז עפעקטיוו גלייך צו דיין איצטיקן רעפּליקאַציע-לאַג.

צו מאָניטאָרן אַסינכראָנישע רעפּליקאַציע-לאַג אין PostgreSQL, ניצט:

SELECT application_name,
       client_addr,
       state,
       sync_state,
       pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn) AS replication_lag_bytes
FROM pg_stat_replication;

דעקאָנסטרוקציע פון RTO (רעקאָווערי צייט אָביעקטיוו) פֿאַר גרויס-סקאַלע דאַטאַבייסן

RTO איז די מאַקסימום דערטרעגלעכע געדויער פון דאַונטיים. רעכענען דאַטאַבייס RTO איז באַרימט פֿאַר זיין קאָמפּלעקסיטעט ווייַל עס איז נישט בלויז די צייט וואָס עס נעמט צו קאָפּירן טעקעס צוריק צו אַ סערווער.

דער מאַטעמאַטישער מאָדעל פֿאַר RTO רעכענונג

אַ רעאַליסטישע דאַטאַבייס RTO רעכענונג מוז נעמען אין חשבון פיר באַזונדערע פאַסעס:

RTO = T(infra) + T(transfer) + T(restore) + T(recovery)

  1. T(infra) – אינפראַסטרוקטור פּראָוויזשאַנינג: צייט צו שטעלן אויף פאַרבייט-קאַמפּיוט און סטאָרידזש. (קען זיין נאָענט צו נול מיט פאַר-פּראָוויזשאַנירטע DR זייטלעך אָדער “Infrastructure-as-Code” פּייפּליינס).
  2. T(transfer) – דאַטן אַריבערפירן: צייט צו באַוועגן די באַקאַפּ פּיילאָוד פון די ריפּאַזאַטאָרי צו די דאַטאַבייס סערווער.
  3. T(restore) – פיזישע רעסטאָר: צייט צו שרייבן די דאַטן-טעקעס צו די ציל-דיסק.
  4. T(recovery) – דאַטאַבייס קראַש רעקאָווערי: צייט פֿאַר די דאַטאַבייס ענדזשין צו איבערשפילן טראַנסאַקציע לאָגס, פאָרווערדן באַשטעטיקטע טראַנסאַקציעס, און צוריקדרייען די וואָס זענען נישט באַשטעטיקט.

רעכענען אַריבערפירן און רעסטאָר צייטן

צו רעכענען T(transfer) און T(restore), מוזט איר באַזעלינען דיין נעטוואָרק באַנדווידט און דיסק IOPS/טרופּוט. פאַרלאָזט זיך נישט אויף טעאָרעטישע מאַקסימומס; טעסט דיין פאַקטישע אינפראַסטרוקטור.

ניצט iperf3 צו טעסטן נעטוואָרק טרופּוט צווישן דיין באַקאַפּ ריפּאַזאַטאָרי און דאַטאַבייס סערווער:

# On the backup repository (server)
iperf3 -s

# On the database server (client)
iperf3 -c <backup_repo_ip> -t 60 -P 4

ניצט fio צו טעסטן די סעקווענציעלע שרייב-פאָרשטעלונג פון דיין דאַטאַבייס סטאָרידזש וואַליומז, סימולירנדיק אַ דאַטאַבייס רעסטאָר אָפּעראַציע:

fio --name=restore_sim --ioengine=libaio --rw=write --bs=1M --size=10G --numjobs=4 --iodepth=32 --direct=1 --filename=/var/lib/postgresql/data/testfile

אויב דיין דאַטאַבייס איז 5 TB, און דיין fio טעסטן ווייזן אַ מאַקסימום סוסטאַינעד שרייב-גיכקייט פון 500 MB/s, איז דיין אַבסאָלוטער מינימום T(restore) בערך 2.8 שעה. אויב דיין געשעפט SLA פאָדערט אַ 1-שעה RTO, וועלן טראַדיציאָנעלע סטרימינג רעסטאָרס דורכפאַלן. איר מוזט דרייען דיין אַרכיטעקטור צו סטאָרידזש-לעוועל סנאַפּשאָץ אָדער בלאָק-לעוועל רעפּליקאַציע.

די פאַרבאָרגענע פאַל: T(recovery)

די מערסט אָפט אונטערגעשאַצטע וואַריאַבלע איז T(recovery). אויב איר רעסטאָרט אַ וואכנטלעכן פולן באַקאַפּ און דאַרפט אַפּלייען 6 טעג פון טראַנסאַקציע לאָגס צו דערגרייכן דיין RPO, מוז די דאַטאַבייס ענדזשין סעקווענציעל איבערשפילן יעדער טראַנסאַקציע.

איבערשפילן 500 GB פון טראַנסאַקציע לאָגס קען נעמען שעהן, שטאַרק באַגרענעצט דורך איין-טרעדיד CPU פאָרשטעלונג און סטאָרידזש IOPS. צו מינימיזירן T(recovery), פאַרגרעסער די אָפטקייט פון דיינע פולע אָדער דיפערענציעלע באַקאַפּס.

איבערבריקן די ריס: פּראַקטישע טריט צו וואַלידירן RTO און RPO

רעכענען טעאָרעטישע RTO און RPO איז בלויז דער ערשטער טריט. מיסיע-קריטישע סוויוועס פאָדערן קעסיידערדיקע וואַלידאַציע.

טריט 1: ימפּלעמענטירן קעסיידערדיקע אַרכיווירונג

צו דערגרייכן אונטער-מינוטיקע RPOs אָן דעם פאָרשטעלונג-שטראָף פון סינכראָנישע רעפּליקאַציע, ימפּלעמענטירט קעסיידערדיקע לאָג-אַרכיווירונג. אַנשטאָט צו וואַרטן ביז אַ לאָג-טעקע ווערט פול (וואָס קען נעמען שעהן בעשאַס נידעריק-פאַרקער פּעריאָדן), צווינגט לאָג-סוויטשעס אין רעגולערע אינטערוואַלן.

אין SQL Server, קענט איר אָטאָמאַטיזירן אָפטע “Transaction Log” באַקאַפּס:

BACKUP LOG [MissionCriticalDB] 
TO DISK = N'\BackupRepoSQLMissionCriticalDB_Log.trn' 
WITH NOFORMAT, NOINIT, 
NAME = N'MissionCriticalDB-Transaction Log Backup', 
SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10;

בעסטע פּראַקטיס: פּלאַנירט דעם דזשאָב צו לויפן יעדער 1-5 מינוט דיפּענדינג אויף דיינע RPO באדערפענישן.

טריט 2: אָטאָמאַטיזירן רעסטאָר טעסטינג

אַ נישט-געטעסטער באַקאַפּ איז בלויז אַ טעאָרעטישער באַגריף. צו גאַראַנטירן דיין גערעכנטן RTO, מוזט איר דורכפירן אָטאָמאַטיזירטע רעסטאָר טעסטינג.

ענטערפּרייז באַקאַפּ פּלאַטפאָרמס ווי CloudSave פאַרהעלפערן דאָס דורך צושטעלן אָטאָמאַטיזירטע, אפגעזונדערטע רעקאָווערי טעסטינג. CloudSave קען אָטאָמאַטיש שטעלן אויף אַ סאַנדבאָקס סוויווע, מאַונטן דעם לעצטן באַקאַפּ, דורכפירן אַ פולע דאַטאַבייס רעקאָווערי, און אויספירן קאַסטאַם וואַלידאַציע סקריפּטן (למשל, DBCC CHECKDB פֿאַר SQL Server) צו מעסטן דעם פּינטלעכן RTO און פאַרזיכערן דאַטן-אינטעגריטעט. דאָס פאַרוואַנדלט RTO פון אַ גערעכנטער השערה אין אַ באַוויזענער, באַריכטעטער מעטריק.

טריט 3: מאָניטאָרן און אַלערטירן אויף SLA בריטשעס

דיין מאָניטאָרינג-סטעק (Prometheus, Datadog, Zabbix) זאָל אַקטיוו נאָכפאָלגן מעטריקן וואָס סטראשען דיינע RTO/RPO SLAs. אַלערטירן-רולס זאָלן זיין קאָנפיגורירט פֿאַר:
* באַקאַפּ דזשאָב דורכפאַלן: גלייכער סטראשע צו RPO.
* לאָג שיפּינג לייטענסי: אויב לאָג-אַריבערפירן נעמט לענגער ווי דער דזשענעריישאַן-אינטערוואַל.
* סטאָרידזש IOPS טראָטלינג: וואָלקן-פּראַוויידערס (ווי AWS EBS) טראָטלען IOPS אויב בערסט-קרעדיטן זענען אויסגענוצט, וואָס וועט שטילערהייט צעשטערן דיין RTO בעשאַס אַ פאַקטישער נויטפאַל.

אָפּטימיזירן דאַטאַבייס באַקאַפּ אַרכיטעקטור צו טרעפן שטרענגע SLAs

ווען מאַטעמאַטישע רעכענונגען אַנטפּלעקן אַז דיין איצטיקע אַרכיטעקטור קען נישט טרעפן געשעפט-SLAs, מוזט איר אָפּטימיזירן דיין באַקאַפּ סטראַטעגיע.

1. ניצט בלאָק-לעוועל ינקרימענטאַלע באַקאַפּס

טראַדיציאָנעלע דאַטאַבייס דאַמפּס (לאָגישע באַקאַפּס ווי pg_dump אָדער mysqldump) זענען צו פּאַמעלעך פֿאַר מיסיע-קריטישע RTOs. ניצט פיזישע, בלאָק-לעוועל באַקאַפּס. בלאָק-לעוועל ינקרימענטאַלע באַקאַפּס קאָפּירן בלויז די דיסק-בלאָקס וואָס האָבן זיך געביטן זינט דעם לעצטן באַקאַפּ, דראַסטיש רעדוצירנדיק T(transfer) און נעטוואָרק אָוווערהעד.

2. ניצט סטאָרידזש סנאַפּשאָץ

פֿאַר מולטי-טעראַבייט דאַטאַבייסן וואָס פאָדערן אַ RTO פון ווייניקער ווי 15 מינוט, איז טראַדיציאָנעלע טעקע-קאָפּירונג פיזיש אוממעגלעך איבער נאָרמאַלע נעטוואָרקס. ינטעגראַציע מיט SAN אָדער וואָלקן-נאַטיווע סטאָרידזש סנאַפּשאָץ (למשל, AWS EBS Snapshots, Pure Storage) דערלויבט אַ נאָענט-צו-רעגע-צייט T(restore). די דאַטאַבייס ענדזשין דאַרף דאַן בלויז דורכפירן קראַש-רעקאָווערי אויף דעם סנאַפּשאָט.

3. ימפּלעמענטירן פּאַראַלעליזם

פאַרזיכערט אַז דיינע באַקאַפּ און רעסטאָר מכשירים ניצן מולטי-טרעדינג. ווען איר רעסטאָרט אַ PostgreSQL דאַטאַבייס ניצנדיק pgbackrest אָדער אַ SQL Server דאַטאַבייס, דעפינירט עקספּליציט פּאַראַלעלע אַרבעטער-טרעדס צו סאַטורירן דיין פאַראַנען נעטוואָרק און דיסק-באַנדווידט.

# Example of parallel restore in pgBackRest
pgbackrest --stanza=prod_db --process-max=8 restore

מסקנא

רעכענען RTO און RPO פֿאַר מיסיע-קריטישע דאַטאַבייסן איז אַ שטרענגע געניטונג אין סיסטעם-אינזשעניריע. עס פאָדערט פון DBAs צו גיין ווייטער ווי דיפאָלט באַקאַפּ קאָנפיגוראַציעס און מאַטעמאַטיש מאָדעלירן זייער סטאָרידזש I/O, נעטוואָרק קאַפּאַציטעט, און דאַטאַבייס רעקאָווערי מעכאַניק.

דורך באַזעלינען לאָג דזשענעריישאַן קורסן, פאַרשטיין די באַזונדערע פאַסעס פון דאַטאַבייס רעקאָווערי, און ימפּלעמענטירן אָטאָמאַטיזירטע טעסטינג דורך שטאַרקע פּלאַטפאָרמס ווי CloudSave, קענען IT טימז מיט בטחון גאַראַנטירן זייערע “דיזאַסטער רעקאָווערי” SLAs. געדענקט: אין דער וועלט פון דאַטאַבייס אַדמיניסטראַציע, האָפענונג איז נישט קיין סטראַטעגיע, און נישט-געטעסטע באַקאַפּס זענען אַ לייאַביליטי.

לערנט ווי דעוואָפּס אינזשענירן און DBAs קענען פּינטלעך רעכענען, טעסטן, און אָפּטימיזירן RTO און RPO פֿאַר מיסיע-קריטישע דאַטאַבייסן ניצנדיק אַוואַנסירטע רעקאָווערי מעכאַניק, CLI מכשירים, און אָטאָמאַטיזירטע טעסטינג.