समय-बिंदु पुनर्प्राप्ति
WAL के साथ किसी भी क्षण की स्थिति पुनर्स्थापित करें।
समय-बिंदु पुनर्प्राप्ति, CoddyKit पर SQL Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
समय-बिंदु पुनर्प्राप्ति क्या है
समय-बिंदु पुनर्प्राप्ति (PITR) आपको डेटाबेस को अतीत के किसी भी विशिष्ट क्षण तक पुनर्स्थापित करने देती है, न कि केवल अंतिम बैकअप क्षणचित्र के समय तक।
यह इसलिए संभव है क्योंकि PostgreSQL हर बदलाव को लगातार एक ऐसी धारा में लिखता है जिसे अग्रिम-लेखन लॉग (WAL) कहा जाता है। आधार बैकअप के ऊपर WAL प्रविष्टियों को फिर चलाकर आप ठीक उस स्थिति तक पहुंच सकते हैं जहां आपको पहुंचना है।
अग्रिम-लेखन लॉग (WAL)
प्रत्येक INSERT, UPDATE, DELETE और DDL कथन वास्तविक डेटा फ़ाइलों को छूने से पहले WAL में लिखा जाता है। इससे सर्वर के बीच में क्रैश हो जाने पर भी स्थायित्व सुनिश्चित होता है।
PITR के लिए संग्रहित WAL खंड समय-यंत्र के टेप जैसे होते हैं। आधार बैकअप प्रारंभिक बिंदु है; WAL उसके बाद हुई हर घटना को जोड़ता है।
-- Check current WAL write location
SELECT pg_current_wal_lsn() AS current_lsn,
pg_walfile_name(pg_current_wal_lsn()) AS current_wal_file;WAL संग्रहण सक्षम करना
PITR संभव होने से पहले postgresql.conf में WAL संग्रहण चालू करना आवश्यक है। मुख्य पैरामीटर wal_level, archive_mode और archive_command हैं।
संग्रह आदेश प्रत्येक पूर्ण हो चुके WAL खंड को किसी सुरक्षित स्थान, जैसे स्थानीय निर्देशिका, NFS माउंट या क्लाउड स्टोरेज बकेट में कॉपी करता है।
-- View current WAL and archive settings
SELECT name, setting, unit
FROM pg_settings
WHERE name IN (
'wal_level',
'archive_mode',
'archive_command',
'archive_status'
)
ORDER BY name;आधार बैकअप लेना
आधार बैकअप सर्वर के चलते रहने के दौरान ली गई पूरी डेटा निर्देशिका की एक सुसंगत प्रति होता है। PostgreSQL इस प्रक्रिया के समन्वय के लिए pg_basebackup उपयोगिता और निम्न-स्तरीय एसक्यूएल फ़ंक्शन उपलब्ध कराता है।
बैकअप प्रारंभ समय से आगे दर्ज किए गए संग्रहित WAL खंडों के साथ मिलकर यही वे सभी चीज़ें हैं जिनकी आपको PITR के लिए आवश्यकता होती है।
-- Check the latest base backup information
SELECT backup_start,
backup_end,
pg_size_pretty(backup_total) AS total_size
FROM pg_stat_basebackup;पुनर्प्राप्ति का लक्ष्य समय निर्धारित करना
आपदा आने पर पहला कदम उस सटीक समय-मुहर की पहचान करना है जिस तक आप पुनर्स्थापित करना चाहते हैं। एक सामान्य तरीका यह है कि हानिकारक घटना से ठीक पहले का समय खोजा जाए, जैसे आकस्मिक बड़े पैमाने पर हुआ DELETE।
लेनदेन-लॉग तालिकाओं या अनुप्रयोग अभिलेखों में अक्सर यह समय-मुहर मौजूद होती है। जब track_commit_timestamp चालू होता है, तब WAL स्वयं कमिट की समय-मुहर दर्ज करता है।
-- Find the commit timestamp of recent transactions (requires track_commit_timestamp=on)
SELECT xid,
pg_xact_commit_timestamp(xid::xid) AS committed_at
FROM pg_stat_activity
WHERE state = 'idle'
LIMIT 10;recovery.conf / पुनर्प्राप्ति पैरामीटर
पुनर्प्राप्ति का व्यवहार postgresql.conf (PostgreSQL 12+) में रखे गए पैरामीटरों या पुरानी recovery.conf फ़ाइल द्वारा नियंत्रित होता है। सबसे महत्वपूर्ण पैरामीटर ये हैं:
restore_command— संग्रहित WAL खंड कैसे प्राप्त करने हैंrecovery_target_time— रुकने की सटीक समय-मुहरrecovery_target_action— लक्ष्य तक पहुंचने पर क्या करना है (promote,pause,shutdown)
-- Inspect recovery settings that are currently active
SELECT name, setting
FROM pg_settings
WHERE name IN (
'restore_command',
'recovery_target_time',
'recovery_target_action',
'recovery_target_inclusive'
)
ORDER BY name;पुनर्प्राप्ति लक्ष्यों के अन्य प्रकार
समय ही पुनर्प्राप्ति लक्ष्य निर्धारित करने का एकमात्र तरीका नहीं है। PostgreSQL चार प्रकार के लक्ष्यों का समर्थन करता है:
recovery_target_time— टाइमस्टैम्प स्ट्रिंगrecovery_target_xid— एक विशिष्ट लेन-देन IDrecovery_target_lsn— WAL अनुक्रम संख्याrecovery_target_name—pg_create_restore_point()से बनाया गया नामित पुनर्स्थापना बिंदु
-- Create a named restore point before a risky migration
SELECT pg_create_restore_point('before_migration_2024_07_01') AS restore_lsn;आपदा का अनुकरण
परीक्षण परिवेश में PITR का अभ्यास करने के लिए, वर्तमान समय दर्ज करने के बाद जानबूझकर डेटा को दूषित करें या हटा दें। इससे आप सत्यापित कर सकते हैं कि पुनर्प्राप्ति सही क्षण पर पहुँचती है और हटाई गई पंक्तियाँ वापस आ जाती हैं।
-- Record the 'safe' timestamp, then simulate an accident
SELECT now() AS safe_point;
-- (In a test DB only!) accidentally delete important rows
DELETE FROM orders WHERE created_at < '2024-01-01';
-- Confirm the damage
SELECT COUNT(*) AS remaining_orders FROM orders;पुनर्प्राप्ति करना
पुनर्प्राप्ति में तीन चरण होते हैं:
- चल रहे PostgreSQL इंस्टेंस को रोकें।
- मूल बैकअप को डेटा निर्देशिका में पुनर्स्थापित करें।
- पुनर्प्राप्ति पैरामीटर कॉन्फ़िगर करें और PostgreSQL को पुनर्प्राप्ति मोड में शुरू करें — यह लक्ष्य समय तक WAL को फिर से चलाता है, फिर सामान्य पढ़ने-लिखने वाले सर्वर के रूप में सक्रिय हो जाता है।
सर्वर लॉग में लागू की जा रही प्रत्येक WAL फ़ाइल दिखाई देती है, जिससे प्रगति पर नज़र रखना आसान हो जाता है।
-- After recovery completes, confirm the cluster is no longer in recovery
SELECT pg_is_in_recovery() AS in_recovery,
pg_last_xact_replay_timestamp() AS last_replayed_txn;पुनर्प्राप्ति का सत्यापन
सर्वर के सक्रिय होने के बाद, सत्यापित करें कि डेटा अपेक्षित स्थिति में है। पंक्ति-संख्याओं, नवीनतम पंक्तियों के टाइमस्टैम्प और व्यवसाय के लिए महत्वपूर्ण मानों की जाँच करें।
अनुप्रयोगों का ट्रैफ़िक फिर से शुरू करने से पहले ये सत्यापन क्वेरी चलाना उचित है, ताकि आवश्यकता पड़ने पर आप पुनर्प्राप्ति को आगे बढ़ा सकें या लक्ष्य समय समायोजित कर सकें।
-- Verify row counts and the latest transaction timestamp after recovery
SELECT 'orders' AS tbl, COUNT(*) AS rows FROM orders
UNION ALL
SELECT 'order_items' AS tbl, COUNT(*) AS rows FROM order_items
UNION ALL
SELECT 'customers' AS tbl, COUNT(*) AS rows FROM customers
ORDER BY tbl;PITR की सर्वोत्तम प्रक्रियाएँ
विश्वसनीय PITR व्यवस्था के लिए केवल संग्रहण चालू करना पर्याप्त नहीं है। मुख्य उपायों में शामिल हैं:
- पुनर्स्थापनाओं का नियमित परीक्षण करें — जिस बैकअप का परीक्षण नहीं किया गया है, वह बैकअप नहीं है।
- WAL संग्रह-विलंब पर नज़र रखें — संग्रहित WAL में अंतराल होने पर पूर्ण पुनर्प्राप्ति असंभव हो जाती है।
- पर्याप्त WAL इतिहास बनाए रखें — सेगमेंट कम-से-कम आपके सबसे पुराने मान्य मूल बैकअप जितने पुराने समय तक रखें।
- अलग संग्रहण स्थान का उपयोग करें — यदि प्राथमिक डिस्क विफल हो जाती है, तो उसी डिस्क पर संग्रहित WAL भी नष्ट हो जाता है।
-- Check for any WAL archiving failures
SELECT archived_count,
failed_count,
last_archived_wal,
last_archived_time,
last_failed_wal,
last_failed_time
FROM pg_stat_archiver;त्वरित जाँच
समय-बिंदु पुनर्प्राप्ति की अपनी समझ जाँचें।
पुनरावलोकन: समय-बिंदु पुनर्प्राप्ति
इस पाठ में आपने सीखा कि PostgreSQL का राइट-अहेड लॉग किसी भी पिछले क्षण तक पुनर्प्राप्ति को सक्षम बनाता है:
- WAL संग्रहण मूल बैकअप के बाद होने वाले प्रत्येक परिवर्तन को दर्ज करता है।
- पुनर्प्राप्ति लक्ष्य टाइमस्टैम्प, लेन-देन ID, LSN या नामित पुनर्स्थापना बिंदु हो सकते हैं।
- पुनर्प्राप्ति प्रक्रिया मूल बैकअप को पुनर्स्थापित करती है, संग्रहित WAL को फिर से चलाती है और लक्ष्य तक पहुँचने पर सर्वर को सक्रिय करती है।
- सत्यापन ट्रैफ़िक फिर से शुरू करने से पहले डेटा की अखंडता की पुष्टि करता है।
- सर्वोत्तम प्रक्रियाओं में नियमित पुनर्स्थापना परीक्षण, संग्रहण निगरानी और अलग स्थान पर WAL संग्रहण शामिल हैं।
PITR मानव-जनित त्रुटि और डेटा-दूषण के विरुद्ध आपकी सुरक्षा-जाली है — इसे अच्छी तरह सीखकर आप आपदा-पुनर्प्राप्ति में दक्ष हो जाते हैं।
एआई शिक्षक के साथ SQL सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 46
- पाठ
- 183
अक्सर पूछे जाने वाले प्रश्न
क्या “समय-बिंदु पुनर्प्राप्ति” पाठ निःशुल्क है?
हाँ—“समय-बिंदु पुनर्प्राप्ति” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“समय-बिंदु पुनर्प्राप्ति” में मैं क्या सीखूँगा?
WAL के साथ किसी भी क्षण की स्थिति पुनर्स्थापित करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या SQL Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“समय-बिंदु पुनर्प्राप्ति” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस SQL Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर SQL Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- तार्किक बनाम भौतिक बैकअप
- समय-बिंदु पुनर्प्राप्ति
- अपनी पुनर्स्थापनाओं का परीक्षण करना
- आपदा पुनर्प्राप्ति की योजना