तार्किक बनाम भौतिक बैकअप
pg_dump और बेस बैकअप।
तार्किक बनाम भौतिक बैकअप, CoddyKit पर SQL Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
डेटाबेस बैकअप क्या है
बैकअप आपके डेटाबेस डेटा की एक प्रति है, जिसका उपयोग डेटा की हानि, खराबी या आपदा के बाद प्रणाली को पुनर्स्थापित करने के लिए किया जा सकता है। विश्वसनीय बैकअप के बिना, हार्डवेयर की एकल विफलता या आकस्मिक DELETE महीनों या वर्षों का डेटा हमेशा के लिए नष्ट कर सकता है।
PostgreSQL बैकअप रणनीतियों की दो व्यापक श्रेणियां प्रदान करता है: तार्किक बैकअप और भौतिक बैकअप। दोनों की अलग-अलग विशेषताएं, उपयोग के मामले और लाभ-हानियां हैं, जिन्हें प्रत्येक DBA को समझना चाहिए।
तार्किक बैकअप की व्याख्या
तार्किक बैकअप डेटाबेस को मानव-पठनीय एसक्यूएल कथनों के रूप में निर्यात करता है — CREATE TABLE, INSERT, COPY और ऐसे ही अन्य आदेशों के रूप में। PostgreSQL में इसके लिए सबसे सामान्य उपयोगिता pg_dump है।
आउटपुट सादा एसक्यूएल होने के कारण तार्किक बैकअप स्थानांतरणीय होता है: आप इसे PostgreSQL के किसी अन्य संस्करण, किसी अन्य ऑपरेटिंग सिस्टम या चुनिंदा व्यक्तिगत तालिकाओं अथवा स्कीमाओं में पुनर्स्थापित कर सकते हैं। इसकी कमी यह है कि बड़े डेटाबेस का डंप और पुनर्स्थापन धीमा हो सकता है।
तार्किक बैकअप के लिए पीजी-डंप का उपयोग
पीजी-डंप उपयोगिता एसक्यूएल के भीतर नहीं, बल्कि कमांड पंक्ति से चलाई जाती है। यह चल रहे PostgreSQL सर्वर से जुड़कर चुने गए डेटाबेस को निर्यात करती है। आप आउटपुट सादा एसक्यूएल, कस्टम संपीड़ित प्रारूप या निर्देशिका प्रारूप में प्राप्त कर सकते हैं।
नीचे दिया गया एसक्यूएल यह अनुकरण करता है कि तार्किक बैकअप में क्या-क्या सुरक्षित रहता है — किसी तालिका की संरचना और डेटा, जिन्हें दोबारा बनाए जा सकने वाले कथनों के रूप में रखा जाता है।
-- Simulating what pg_dump produces for a table
-- (These statements are written by pg_dump into the backup file)
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer TEXT NOT NULL,
amount NUMERIC(10,2),
created_at TIMESTAMPTZ DEFAULT now()
);
INSERT INTO orders (customer, amount, created_at) VALUES
('Alice', 149.99, '2024-01-15 09:30:00+00'),
('Bob', 89.50, '2024-01-16 14:00:00+00'),
('Carol', 210.00, '2024-01-17 11:15:00+00');पीजी-डंप के आउटपुट प्रारूप
पीजी-डंप चार आउटपुट प्रारूपों का समर्थन करता है, और प्रत्येक अलग पुनर्स्थापन कार्यप्रवाह के लिए उपयुक्त है:
- सादा — सादी एसक्यूएल स्क्रिप्ट, जिसे किसी भी पाठ संपादक में पढ़ा जा सकता है।
- कस्टम — संपीड़ित बाइनरी प्रारूप; सबसे अधिक लचीला और समानांतर पुनर्स्थापन का समर्थन करने वाला।
- निर्देशिका — प्रत्येक तालिका के लिए एक फ़ाइल, समानांतर डंप और पुनर्स्थापन का समर्थन करती है।
- टार — निर्देशिका प्रारूप का टार संग्रह।
बड़े डेटाबेस के लिए कस्टम प्रारूप की अनुशंसा की जाती है, क्योंकि pg_restore -j N कार्यकर्ताओं का उपयोग करके वस्तुओं को समानांतर रूप से पुनर्स्थापित कर सकता है।
-- Checking which databases exist before choosing what to back up
SELECT datname,
pg_size_pretty(pg_database_size(datname)) AS size
FROM pg_database
WHERE datname NOT IN ('template0', 'template1')
ORDER BY pg_database_size(datname) DESC;तार्किक बैकअप पुनर्स्थापित करना
सादे-एसक्यूएल वाले तार्किक बैकअप को psql से पुनर्स्थापित किया जाता है। कस्टम-प्रारूप वाले बैकअप के लिए pg_restore आवश्यक होता है। दोनों उपयोगिताएं तालिकाओं, अनुक्रमणिकाओं, बाधाओं और डेटा को दोबारा बनाने के लिए एसक्यूएल कथनों को फिर चलाती हैं।
तार्किक बैकअप में एसक्यूएल शामिल होने के कारण आप उन्हें पुनर्स्थापित करने से पहले संपादित कर सकते हैं — उदाहरण के लिए, केवल एक तालिका पुनर्स्थापित करने या स्कीमा का नाम बदलने के लिए। यह लचीलापन तार्किक तरीके के सबसे बड़े लाभों में से एक है।
-- After restoring a backup, verify row counts match expectations
SELECT
schemaname,
relname AS table_name,
n_live_tup AS estimated_rows
FROM pg_stat_user_tables
ORDER BY n_live_tup DESC;भौतिक बैकअप की व्याख्या
भौतिक बैकअप (जिसे आधार बैकअप भी कहा जाता है) PostgreSQL द्वारा डिस्क पर उपयोग की जाने वाली कच्ची डेटा फ़ाइलों की प्रतिलिपि बनाता है — पृष्ठों, WAL (अग्रिम-लेखन लॉग) खंडों और विन्यास फ़ाइलों की। इसका परिणाम किसी समय-बिंदु पर पूरे क्लस्टर का बाइनरी क्षणचित्र होता है।
बड़े डेटाबेस के लिए भौतिक बैकअप आम तौर पर बहुत तेज़ी से पुनर्स्थापित होते हैं, क्योंकि एसक्यूएल को दोबारा चलाने की आवश्यकता नहीं होती; PostgreSQL बस फ़ाइलों को उनके स्थान पर वापस रखता है और सुसंगत स्थिति तक पहुंचने के लिए WAL को फिर चलाता है।
पीजी-बेसबैकअप: भौतिक बैकअप लेना
pg_basebackup भौतिक बैकअप के लिए PostgreSQL की मानक उपयोगिता है। यह प्रतिकृति कनेक्शन के माध्यम से चल रहे प्राथमिक सर्वर से डेटा निर्देशिका को स्ट्रीम करती है। आपको प्रतिकृति के विशेषाधिकार वाला उपयोगकर्ता और wal_level को replica या उससे उच्च पर सेट करना आवश्यक है।
आधार बैकअप लेने का प्रयास करने से पहले आप डेटाबेस के भीतर प्रतिकृति विन्यास की जांच करके यह सुनिश्चित कर सकते हैं कि सर्वर सही ढंग से कॉन्फ़िगर किया गया है।
-- Verify WAL level and replication settings before a physical backup
SELECT name, setting, unit
FROM pg_settings
WHERE name IN (
'wal_level',
'max_wal_senders',
'archive_mode',
'archive_command'
)
ORDER BY name;WAL संग्रहण और समय-बिंदु पुनर्प्राप्ति
आधार बैकअप समय के किसी एक क्षण को सुरक्षित करता है। उस बैकअप के बाद किसी भी मनचाहे समय-बिंदु तक पुनर्प्राप्त होने के लिए PostgreSQL संग्रहित WAL खंडों को फिर चलाता है — इसे समय-बिंदु पुनर्प्राप्ति (PITR) कहा जाता है।
जब archive_mode = on और archive_command कॉन्फ़िगर किए जाते हैं, PostgreSQL पूरे हो चुके WAL खंडों को किसी संग्रह स्थान पर कॉपी करता है। पुनर्प्राप्ति के दौरान restore_command उन खंडों को वापस लाता है, ताकि सर्वर उन्हें इच्छित लक्ष्य समय तक फिर चला सके।
-- Inspect current WAL position and archive status
SELECT
pg_current_wal_lsn() AS current_lsn,
pg_walfile_name(pg_current_wal_lsn()) AS current_wal_file,
archived_count,
failed_count,
last_archived_wal,
last_archived_time
FROM pg_stat_archiver;तार्किक बनाम भौतिक बैकअप की तुलना
तार्किक और भौतिक बैकअप के बीच चुनाव आपकी आवश्यकताओं पर निर्भर करता है:
- तार्किक (पीजी-डंप): संस्करणों के बीच स्थानांतरणीय, आंशिक पुनर्स्थापन का समर्थन करने वाला और मानव-पठनीय, लेकिन बड़े डेटाबेस के लिए धीमा तथा उप-लेनदेन स्तर की सूक्ष्मता से रहित।
- भौतिक (पीजी-बेसबैकअप + WAL): बड़े क्लस्टर के लिए तेज़ पुनर्स्थापन, PITR का समर्थन, संस्करण-विशिष्ट (इसे उसी मुख्य संस्करण में पुनर्स्थापित करना आवश्यक है) और पूरे क्लस्टर को पुनर्स्थापित करता है — आप एकल तालिका को पुनर्स्थापित नहीं कर सकते।
उत्पादन परिवेश आम तौर पर दोनों का उपयोग करते हैं: हर रात भौतिक आधार बैकअप और निरंतर WAL संग्रहण, साथ ही स्थानांतरणीयता और लक्षित पुनर्स्थापन के लिए समय-समय पर तार्किक डंप।
बैकअप की अखंडता सत्यापित करना
जिस बैकअप की कभी जांच नहीं हुई, वह बैकअप नहीं है — वह केवल आशा है। बैकअप को हमेशा किसी परीक्षण परिवेश में पुनर्स्थापित करके और डेटा का सत्यापन करके मान्य करें।
तार्किक बैकअप के लिए अखंडता की एक त्वरित जांच पंक्तियों की संख्या गिनना और चेकसम की तुलना करना है। भौतिक बैकअप के लिए PostgreSQL 14+ में pg_verifybackup उपलब्ध है, जो pg_basebackup द्वारा लिखी गई मैनिफ़ेस्ट फ़ाइल की जांच करता है।
-- After a test restore, compare row counts across critical tables
SELECT
relname AS table_name,
n_live_tup AS live_rows,
pg_size_pretty(pg_total_relation_size(relid)) AS total_size
FROM pg_stat_user_tables
WHERE schemaname = 'public'
ORDER BY n_live_tup DESC
LIMIT 20;बैकअप की निगरानी और समय-निर्धारण
बैकअप लेना जितना महत्वपूर्ण है, उतना ही उन्हें स्वचालित करना और उनकी निगरानी करना भी महत्वपूर्ण है। यह दर्ज रखें कि बैकअप पिछली बार कब चला, उसे कितना समय लगा और वह सफल हुआ या नहीं। PostgreSQL इस उद्देश्य के लिए उपयोगी मेटाडेटा उपलब्ध कराता है।
भौतिक बैकअप के लिए pg_stat_archiver अंतिम सफल संग्रहण और किसी भी विफलता को दिखाता है। तार्किक बैकअप के लिए pg_dump को ऐसी स्क्रिप्ट में चलाएं जो प्रारंभ समय, समाप्ति समय, फ़ाइल आकार और निकास कोड को किसी निगरानी तालिका या चेतावनी प्रणाली में दर्ज करे।
-- Create a simple backup log table to track logical backup runs
CREATE TABLE IF NOT EXISTS backup_log (
id SERIAL PRIMARY KEY,
backup_type TEXT NOT NULL CHECK (backup_type IN ('logical', 'physical')),
started_at TIMESTAMPTZ NOT NULL DEFAULT now(),
finished_at TIMESTAMPTZ,
size_bytes BIGINT,
status TEXT NOT NULL DEFAULT 'running',
notes TEXT
);
-- Record the start of a logical backup job
INSERT INTO backup_log (backup_type, status)
VALUES ('logical', 'running')
RETURNING id, started_at;तार्किक बनाम भौतिक: त्वरित जांच
PostgreSQL में तार्किक और भौतिक बैकअप रणनीतियों की अपनी समझ परखें।
पाठ का पुनरावलोकन: तार्किक बनाम भौतिक बैकअप
इस पाठ में आपने PostgreSQL की दो मूलभूत बैकअप रणनीतियों का अध्ययन किया:
- तार्किक बैकअप डेटाबेस को एसक्यूएल कथनों के रूप में निर्यात करने के लिए
pg_dumpका उपयोग करते हैं। ये स्थानांतरणीय, मानव-पठनीय और आंशिक पुनर्स्थापन का समर्थन करने वाले होते हैं, लेकिन बहुत बड़े डेटाबेस के लिए धीमे हो सकते हैं। - भौतिक बैकअप कच्ची डेटा फ़ाइलों की प्रतिलिपि बनाने के लिए
pg_basebackupका उपयोग करते हैं। WAL संग्रहण के साथ मिलकर ये तेज़ पुनर्स्थापन और समय-बिंदु पुनर्प्राप्ति सक्षम करते हैं, हालांकि ये संस्करण-विशिष्ट होते हैं और हमेशा पूरे क्लस्टर को पुनर्स्थापित करते हैं। - उत्पादन प्रणालियां आम तौर पर दोनों रणनीतियों को मिलाती हैं: तेज़ और सूक्ष्म पुनर्प्राप्ति के लिए WAL संग्रहण वाले भौतिक आधार बैकअप, और स्थानांतरणीयता के लिए समय-समय पर तार्किक डंप।
- अपने पुनर्स्थापनों की हमेशा जांच करें। बिना जांचा गया बैकअप वास्तविक आपदा की स्थिति में विश्वसनीय नहीं माना जा सकता।
किसी भी PostgreSQL परिनियोजन के लिए सुदृढ़ आपदा-पुनर्प्राप्ति योजना तैयार करने में इन दोनों तरीकों को समझना आवश्यक है।
एआई शिक्षक के साथ SQL सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 46
- पाठ
- 183
अक्सर पूछे जाने वाले प्रश्न
क्या “तार्किक बनाम भौतिक बैकअप” पाठ निःशुल्क है?
हाँ—“तार्किक बनाम भौतिक बैकअप” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“तार्किक बनाम भौतिक बैकअप” में मैं क्या सीखूँगा?
pg_dump और बेस बैकअप। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या SQL Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“तार्किक बनाम भौतिक बैकअप” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस SQL Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर SQL Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- तार्किक बनाम भौतिक बैकअप
- समय-बिंदु पुनर्प्राप्ति
- अपनी पुनर्स्थापनाओं का परीक्षण करना
- आपदा पुनर्प्राप्ति की योजना