بۆ ئەندازیارانی DevOps، بەڕێوەبەرانی بنکەدراوە (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 مێگابایت لە چرکەیەکدا داتای WAL دروست دەکەیت لە کاتی لوتکەی کارکردندا، RPO-ی 15 خولەکی پێویستی بە گواستنەوەی 45 گێگابایت داتای لۆگ هەیە بۆ کۆگای یەدەگەکەت. تۆڕ و ئامانجەکانی کۆگاکردنت دەبێت پاڵپشتی خێرایی نووسینی بەردەوام بکەن کە لە 50 مێگابایت لە چرکەیەکدا زیاتر بێت بۆ پاراستنی ئەم RPO-یە.
کاریگەری دووبارەکردنەوەی هاوکات (Synchronous) بەرامبەر بە ناهاوکات (Asynchronous)
زۆرێک لە بەڕێوەبەرانی بنکەدراوە پشت بە دووبارەکردنەوەی بەردەستبوونی بەرز (HA) دەبەستن بۆ بەدیهێنانی RPO. بەڵام، دووبارەکردنەوە یەدەگ نییە. خشتەیەکی سڕاوە (DROP TABLE users;) دەستبەجێ دووبارە دەبێتەوە.
کاتێک دووبارەکردنەوە بۆ گەڕاندنەوەی کارەسات (DR) بەکاردەهێنیت، شێوازی دووبارەکردنەوەکە ڕاستەوخۆ کاریگەری لەسەر RPO هەیە:
* دووبارەکردنەوەی هاوکات (Synchronous Replication): گەرەنتی RPO-ی سفر دەکات (RPO=0). بنکەدراوەی سەرەکی مامەڵەیەک پەسەند ناکات تاوەکو بنکەدراوەی لاوەکی وەرگرتنی پشتڕاست نەکاتەوە. قوربانییەکە زیادبوونی دواکەوتنە لەسەر کرداری نووسینی سەرەکی.
* دووبارەکردنەوەی ناهاوکات (Asynchronous Replication): دواکەوتنی دووبارەکردنەوە دروست دەکات. 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)
- T(infra) – دابینکردنی ژێرخان: کاتی ئامادەکردنی کۆمپیوتەر و کۆگای جێگرەوە. (دەتوانێت نزیکەی سفر بێت لەگەڵ شوێنی DR کە پێشوەختە ئامادەکراوە یان بۆرییەکانی ژێرخان وەک کۆد).
- T(transfer) – گواستنەوەی داتا: کاتی گواستنەوەی باری یەدەگ لە کۆگاکەوە بۆ سێرڤەری بنکەدراوە.
- T(restore) – گەڕاندنەوەی فیزیکی: کاتی نووسینی فایلەکانی داتا بۆ سەر دیسکی ئامانج.
- 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 تێرابایت بێت، و تاقیکردنەوەکانی fio-ی تۆ زۆرترین خێرایی نووسینی بەردەوامی 500 مێگابایت لە چرکەیەکدا نیشان بدەن، ئەوا کەمترین T(restore)-ی تۆ نزیکەی 2.8 کاتژمێرە. ئەگەر SLA-ی بازرگانییەکەت داوای RTO-ی 1 کاتژمێری دەکات، گەڕاندنەوەی ستریمینگی ئاسایی شکست دەهێنێت. دەبێت ستراتیژی خۆت بگۆڕیت بۆ وێنەی ساتەوەختی (snapshots) ئاستی کۆگا یان دووبارەکردنەوەی ئاستی بلۆک.
تەڵەی شاراوە: T(recovery)
ئەو گۆڕاوەی کە زۆرترین جار بە کەم سەیر دەکرێت T(recovery)-یە. ئەگەر یەدەگێکی تەواوی هەفتانە بگەڕێنیتەوە و پێویستت بە جێبەجێکردنی 6 ڕۆژ لۆگی مامەڵە بێت بۆ گەیشتن بە RPO-کەت، بزوێنەری بنکەدراوە دەبێت بەدوای یەکدا هەموو مامەڵەیەک لێبداتەوە.
لێدانەوەی 500 گێگابایت لۆگی مامەڵە دەکرێت کاتژمێرێکی پێ بچێت، کە بە توندی بەهۆی کارایی CPU-ی تاک-تێرید و IOPS-ی کۆگاکردنەوە بەربەستی بۆ دروست دەبێت. بۆ کەمکردنەوەی T(recovery)، فرێکوێنسی یەدەگە تەواو یان جیاوازەکانت زیاد بکە.
پرد لێدان بۆ بۆشاییەکە: هەنگاوە کردەییەکان بۆ پشتڕاستکردنەوەی RTO و RPO
ژماردنی RTO و RPO-ی تیۆری تەنها یەکەم هەنگاوە. ژینگەی گرنگ پێویستی بە پشتڕاستکردنەوەی بەردەوام هەیە.
هەنگاوی 1: جێبەجێکردنی ئەرشیفکردنی بەردەوام
بۆ بەدەستهێنانی RPO-ی کەمتر لە خولەکێک بەبێ زیانی کارایی دووبارەکردنەوەی هاوکات، ئەرشیفکردنی لۆگی بەردەوام جێبەجێ بکە. لەبری ئەوەی چاوەڕێ بکەیت فایلێکی لۆگ پڕ ببێت (کە ڕەنگە کاتژمێرێکی پێ بچێت لە کاتی کەمبوونی هاتووچۆدا)، گۆڕینی لۆگ لە ماوەی دیاریکراودا ناچار بکە.
لە SQL Server، دەتوانیت یەدەگی لۆگی مامەڵەکان بە ئۆتۆماتیکی بکەیت:
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 SLA-کانت دەکەن. یاساکانی ئاگادارکردنەوە دەبێت بۆ ئەم حاڵەتانە ڕێکبخرێن:
* شکستی کاری یەدەگ: هەڕەشەی ڕاستەوخۆ بۆ سەر RPO.
* دواکەوتنی ناردنی لۆگ: ئەگەر گواستنەوەی لۆگ زیاتر لە ماوەی دروستکردنەکەی پێ بچێت.
* سنووردارکردنی IOPS-ی کۆگاکردن: دابینکەرانی هەور (وەک AWS EBS) IOPS سنووردار دەکەن ئەگەر کرێدیتی بڕست تەواو بێت، کە ئەمە بە بێدەنگی RTO-کەت لە کاتی فریاگوزاری ڕاستەقینەدا لەناودەبات.
باشترکردنی تەلارسازی یەدەگی بنکەدراوە بۆ گەیشتن بە SLA-یە توندەکان
کاتێک ژماردنە بیرکارییەکان دەری دەخەن کە تەلارسازی ئێستای تۆ ناتوانێت SLA-یە بازرگانییەکان بەدی بهێنێت، دەبێت ستراتیژی یەدەگەکەت باشتر بکەیت.
1. سوودوەرگرتن لە یەدەگی زیادەی ئاستی بلۆک
دەمپەکانی بنکەدراوەی ئاسایی (یەدەگی لۆژیکی وەک pg_dump یان mysqldump) زۆر خاویان بۆ RTO-ی گرنگ. یەدەگی فیزیکی و ئاستی بلۆک بەکاربهێنە. یەدەگی زیادەی ئاستی بلۆک تەنها ئەو بلۆکانەی دیسک کۆپی دەکات کە لە دوایین یەدەگەوە گۆڕاون، ئەمەش بە توندی T(transfer) و باری زیادەی تۆڕ کەمدەکاتەوە.
2. بەکارهێنانی وێنەی ساتەوەختی کۆگا (Storage Snapshots)
بۆ بنکەدراوەی فرە-تێرابایتی کە پێویستیان بە RTO-ی کەمتر لە 15 خولەک هەیە، کۆپیکردنی فایلی ئاسایی بە شێوەی فیزیکی لەسەر تۆڕە ئاساییەکان مەحاڵە. تێکەڵکردن لەگەڵ SAN یان وێنەی ساتەوەختی کۆگای هەوری (وەک AWS EBS Snapshots, Pure Storage) ڕێگە بە T(restore)-ی نزیک بە دەستبەجێ دەدات. بزوێنەری بنکەدراوە تەنها پێویستە گەڕاندنەوەی پێکدادان لەسەر وێنە ساتەوەختییەکە ئەنجام بدات.
3. جێبەجێکردنی هاوتەریبی (Parallelism)
دڵنیابە کە ئامرازەکانی یەدەگ و گەڕاندنەوەت فرە-تێرید بەکاردەهێنن. کاتێک بنکەدراوەیەکی PostgreSQL بە بەکارهێنانی pgbackrest یان بنکەدراوەیەکی SQL Server دەگەڕێنیتەوە، بە ڕوونی تێریدە کارکەرە هاوتەریبەکان دیاری بکە بۆ ئەوەی توانای تۆڕ و دیسکی بەردەستت تێر بکەیت.
# Example of parallel restore in pgBackRest
pgbackrest --stanza=prod_db --process-max=8 restore
کۆتایی
ژماردنی RTO و RPO بۆ بنکەدراوە گرنگەکان ڕاهێنانێکی توندە لە ئەندازیاری سیستەمدا. پێویستە بەڕێوەبەرانی بنکەدراوە لە ڕێکخستنە بنەڕەتییەکانی یەدەگ تێپەڕن و بە شێوەیەکی بیرکاری I/O-ی کۆگاکردن، توانای تۆڕ، و میکانیکی گەڕاندنەوەی بنکەدراوەکەیان مۆدێل بکەن.
بە دیاریکردنی بنەمای ڕێژەی دروستکردنی لۆگ، تێگەیشتن لە قۆناغە جیاوازەکانی گەڕاندنەوەی بنکەدراوە، و جێبەجێکردنی تاقیکردنەوەی ئۆتۆماتیکی لە ڕێگەی پلاتفۆرمی بەهێز وەک CloudSave، تیمەکانی IT دەتوانن بە متمانەوە SLA-کانی گەڕاندنەوەی کارەساتەکانیان گەرەنتی بکەن. لەبیرت بێت: لە بواری بەڕێوەبردنی بنکەدراوەدا، هیواداری ستراتیژی نییە، و یەدەگی تاقینەکراویش بەرپرسیارێتییەکی مەترسیدارە.
فێربە چۆن ئەندازیارانی DevOps و بەڕێوەبەرانی بنکەدراوە دەتوانن بە وردی RTO و RPO بۆ بنکەدراوە گرنگەکان بژمێرن، تاقی بکەنەوە، و باشتر بکەن بە بەکارهێنانی میکانیکی گەڕاندنەوەی پێشکەوتوو، ئامرازەکانی CLI، و تاقیکردنەوەی ئۆتۆماتیکی.