Categories
Disaster Recovery

**

Fyrir DevOps-verkfræðinga, gagnagrunnsstjóra (DBA) og kerfisarkitekta í upplýsingatækni eru Recovery Time Objective (RTO) og Recovery Point Objective (RPO) meira en bara tískuorð um samfellu í rekstri – þau eru strangar verkfræðilegar skorður. Við stjórnun á mikilvægum gagnagrunnum getur það leitt til skelfilegs gagnataps og langvarandi niður í miðbæ ef ekki tekst að reikna út, hanna fyrir og staðfesta þessa mælikvarða nákvæmlega.

Í nútíma fyrirtækjaumhverfi krefst útreikningur á RTO og RPO djúps skilnings á innviðum gagnagrunna, I/O geymslu, afkastagetu nets og vélfræði færsluskráa (transaction logs). Þessi leiðarvísir kannar tæknilegar aðferðir við að reikna út, prófa og fínstilla RTO og RPO fyrir framleiðslugagnagrunnskerfi.

Að sundurliða RPO (Recovery Point Objective) í gagnagrunnskerfum

RPO skilgreinir hámarks leyfilegt gagnatap mælt í tíma. Ef RPO þitt er 15 mínútur, þýðir hamfarir kl. 12:00 að þú verður að geta endurheimt allar staðfestar færslur fram að minnsta kosti kl. 11:45.

Fyrir gagnagrunna ræðst RPO af stefnu þinni um stjórnun færsluskráa (WAL í PostgreSQL, Redo Logs í Oracle, Transaction Logs í SQL Server).

Vélfræði gagnataps og skráarmyndunar

Til að reikna út raunhæft RPO verður þú fyrst að skilja hversu hratt gagnagrunnurinn þinn býr til færsluskrár. Ef þú ert að senda skrár í afritunargeymslu á 15 mínútna fresti, en netið þitt getur ekki flutt 15 mínútna magn af skrám innan þess glugga, mun raunverulegt RPO þitt stöðugt versna.

Þú getur sett viðmið fyrir skráarmyndunarhraða með innbyggðum SQL skipunum. Til dæmis, í PostgreSQL (útgáfa 10+), geturðu mælt hraðann á Write-Ahead Log (WAL) myndun yfir ákveðið tímabil:

-- Keyrðu þetta á T=0
SELECT pg_current_wal_lsn() AS start_lsn;

-- Bíddu í nákvæmlega 5 mínútur (300 sekúndur), keyrðu síðan:
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;

Ef þessi fyrirspurn leiðir í ljós að þú ert að búa til 50 MB/s af WAL gögnum á álagstímum, krefst 15 mínútna RPO þess að flytja 45 GB af skráargögnum í afritunargeymsluna þína. Netið þitt og geymslumarkmið verða að styðja viðvarandi skrifhraða sem er yfir 50 MB/s til að viðhalda þessu RPO.

Áhrif samstilltrar vs. ósamstilltrar afritunar

Margir gagnagrunnsstjórar treysta á High Availability (HA) afritun til að uppfylla RPO. Hins vegar er afritun ekki afrit (backup). Eydd tafla (DROP TABLE users;) afritast samstundis.

Þegar afritun er notuð fyrir hamfarabata (DR), hefur afritunarstillingin bein áhrif á RPO:
* Samstillt afritun (Synchronous Replication): Tryggir RPO upp á núll (RPO=0). Aðalgagnagrunnurinn staðfestir ekki færslu fyrr en biðstaðan hefur staðfest móttöku. Fórnarkostnaðurinn er aukin leynd (latency) á skrifaðgerðum á aðalþjóninum.
* Ósamstillt afritun (Asynchronous Replication): Kynnir afritunartöf. RPO þitt er í raun jafnt og núverandi afritunartöf þín.

Til að fylgjast með ósamstilltri afritunartöf í PostgreSQL, notaðu:

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;

Að sundurliða RTO (Recovery Time Objective) fyrir stóra gagnagrunna

RTO er hámarks leyfilegur niðurtími. Útreikningur á RTO gagnagrunna er mjög flókinn vegna þess að það er ekki bara tíminn sem það tekur að afrita skrár aftur á netþjón.

Stærðfræðilegt líkan fyrir RTO útreikning

Raunhæfur RTO útreikningur fyrir gagnagrunn verður að taka tillit til fjögurra mismunandi áfanga:

RTO = T(innviðir) + T(flutningur) + T(endurheimt) + T(bataferli)

  1. T(innviðir) – Útvegun innviða: Tími til að ræsa varatölvu og geymslu. (Getur verið nærri núlli með fyrirfram útveguðum DR-svæðum eða Infrastructure-as-Code leiðslum).
  2. T(flutningur) – Gagnaflutningur: Tími til að færa afritið úr geymslunni yfir á gagnagrunnsþjóninn.
  3. T(endurheimt) – Líkamleg endurheimt: Tími til að skrifa gagnaskrárnar á markdiskinn.
  4. T(bataferli) – Bati gagnagrunns eftir hrun: Tími fyrir gagnagrunnsvélina til að spila færsluskrár aftur, framkvæma staðfestar færslur og afturkalla óstaðfestar færslur.

Útreikningur á flutnings- og endurheimtartíma

Til að reikna út T(flutningur) og T(endurheimt) verður þú að setja viðmið fyrir bandbreidd nets og IOPS/afköst disks. Ekki treysta á fræðileg hámarksgildi; prófaðu raunverulega innviði þína.

Notaðu iperf3 til að prófa afköst nets milli afritunargeymslunnar og gagnagrunnsþjónsins:

# Á afritunargeymslunni (þjónn)
iperf3 -s

# Á gagnagrunnsþjóninum (biðlari)
iperf3 -c <backup_repo_ip> -t 60 -P 4

Notaðu fio til að prófa röðskrifafköst geymslurýma gagnagrunnsins, til að líkja eftir endurheimtaraðgerð gagnagrunns:

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

Ef gagnagrunnurinn þinn er 5 TB, og fio prófin þín sýna hámarks viðvarandi skrifhraða upp á 500 MB/s, er algjört lágmark T(endurheimt) um það bil 2,8 klukkustundir. Ef SLA fyrirtækisins krefst 1 klukkustundar RTO, munu hefðbundnar streymisendurheimtur mistakast. Þú verður að breyta arkitektúr þínum yfir í skyndimyndir (snapshots) á geymslustigi eða afritun á blokkarstigi.

Leyndu gildran: T(bataferli)

Breytan sem oftast er vanmetin er T(bataferli). Ef þú endurheimtir vikulegt fullt afrit og þarft að beita 6 daga færsluskrám til að ná RPO, verður gagnagrunnsvélin að spila hverja færslu í röð.

Að spila 500 GB af færsluskrám getur tekið klukkustundir, þar sem afkastagetan er takmörkuð af einþráða örgjörvaafköstum og IOPS geymslunnar. Til að lágmarka T(bataferli), aukið tíðni fullra eða mismunandi afrita.

Að brúa bilið: Hagnýt skref til að staðfesta RTO og RPO

Að reikna út fræðilegt RTO og RPO er aðeins fyrsta skrefið. Mikilvægt rekstrarumhverfi krefst stöðugrar staðfestingar.

Skref 1: Innleiða stöðuga skjalavistun

Til að ná RPO undir mínútu án þess að fórna afköstum samstilltrar afritunar, innleiðið stöðuga skjalavistun færsluskráa. Í stað þess að bíða eftir að skrá fyllist (sem gæti tekið klukkustundir á lágum umferðartímum), þvingið fram skiptingu skráa með reglulegu millibili.

Í SQL Server geturðu sjálfvirknivætt tíðar afritun færsluskráa:

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

Bestu starfsvenjur: Áætlið þetta verkefni á 1-5 mínútna fresti eftir RPO kröfum þínum.

Skref 2: Sjálfvirknivæða endurheimtarprófanir

Óprófað afrit er aðeins fræðilegt hugtak. Til að tryggja reiknað RTO verður þú að framkvæma sjálfvirkar endurheimtarprófanir.

Afritunarvettvangar á borð við CloudSave einfalda þetta með því að bjóða upp á sjálfvirkar, einangraðar endurheimtarprófanir. CloudSave getur sjálfkrafa ræst sandkassaumhverfi, tengt nýjasta afritið, framkvæmt fulla endurheimt gagnagrunns og keyrt sérsniðnar staðfestingarforskriftir (t.d. DBCC CHECKDB fyrir SQL Server) til að mæla nákvæmt RTO og tryggja heilleika gagna. Þetta breytir RTO úr ágiskun í sannaðan, skýrsluhæfan mælikvarða.

Skref 3: Fylgjast með og vara við SLA brotum

Vöktunarstaflinn þinn (Prometheus, Datadog, Zabbix) ætti að fylgjast virkt með mælikvörðum sem ógna RTO/RPO SLA-samningum þínum. Viðvörunarreglur ættu að vera stilltar fyrir:
* Bilun í afritunarverkefnum: Bein ógn við RPO.
* Leynd við flutning skráa: Ef flutningur tekur lengri tíma en myndunartíminn.
* Takmörkun á IOPS geymslu: Skýjaþjónustuveitur (eins og AWS EBS) takmarka IOPS ef inneignir klárast, sem mun eyðileggja RTO þitt hljóðlega í neyðartilvikum.

Að fínstilla arkitektúr afritunar gagnagrunna til að uppfylla ströng SLA

Þegar stærðfræðilegir útreikningar leiða í ljós að núverandi arkitektúr getur ekki uppfyllt SLA fyrirtækisins, verður þú að fínstilla afritunarstefnuna.

1. Nýttu afritun á blokkarstigi (Block-Level Incremental Backups)

Hefðbundin afrit gagnagrunna (rökleg afrit eins og pg_dump eða mysqldump) eru of hæg fyrir mikilvæg RTO. Notaðu líkamleg afrit á blokkarstigi. Þau afrita aðeins þá diskablokka sem hafa breyst síðan síðasta afrit var tekið, sem dregur verulega úr T(flutningur) og álagi á netið.

2. Notaðu skyndimyndir geymslu (Storage Snapshots)

Fyrir gagnagrunna sem eru mörg terabæti og krefjast RTO undir 15 mínútum, er hefðbundin skráaafritun líkamlega ómöguleg yfir staðlað net. Samþætting við SAN eða skýja-innfæddar skyndimyndir (t.d. AWS EBS Snapshots, Pure Storage) gerir kleift að ná nærri samstundis T(endurheimt). Gagnagrunnsvélin þarf þá aðeins að framkvæma bata eftir hrun á skyndimyndinni.

3. Innleiða samhliðavinnslu (Parallelism)

Gakktu úr skugga um að afritunar- og endurheimtartólin þín noti fjölþráðavinnslu. Þegar þú endurheimtir PostgreSQL gagnagrunn með pgbackrest eða SQL Server gagnagrunn, skilgreindu sérstaklega samhliða vinnsluþræði til að nýta tiltæka bandbreidd nets og disks.

# Dæmi um samhliða endurheimt í pgBackRest
pgbackrest --stanza=prod_db --process-max=8 restore

Niðurstaða

Útreikningur á RTO og RPO fyrir mikilvæga gagnagrunna er ströng æfing í kerfisverkfræði. Það krefst þess að gagnagrunnsstjórar fari út fyrir sjálfgefnar afritunarstillingar og líkani stærðfræðilega I/O geymslu, afkastagetu nets og vélfræði bataferla gagnagrunna.

Með því að setja viðmið fyrir skráarmyndunarhraða, skilja mismunandi áfanga bataferla gagnagrunna og innleiða sjálfvirkar prófanir í gegnum öfluga vettvanga eins og CloudSave, geta upplýsingatækniteymi með öryggi tryggt SLA-samninga sína um hamfarabata. Mundu: á sviði gagnagrunnsstjórnunar er von ekki stefna og óprófuð afrit eru áhætta.

Lærðu hvernig DevOps-verkfræðingar og gagnagrunnsstjórar geta nákvæmlega reiknað út, prófað og fínstillt RTO og RPO fyrir mikilvæga gagnagrunna með háþróaðri batafræði, CLI-tólum og sjálfvirkum prófunum.