PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL डेटाबेस का बैकअप और पुनर्स्थापना कैसे करें

उत्पादन परिवेश में, आपका PostgreSQL . कितना भी बड़ा या छोटा क्यों न हो डेटाबेस हो सकता है, रेगुलर बैक डेटाबेस प्रबंधन का एक अनिवार्य पहलू है। इस लेख में, आप सीखेंगे कि कैसे एक PostgreSQL डेटाबेस का बैकअप लें और उसे पुनर्स्थापित करें।

हम मानते हैं कि आपके पास पहले से ही PostgreSQL डेटाबेस सिस्टम की एक कार्यशील स्थापना है। यदि नहीं, तो PostgreSQL स्थापित करने के लिए हमारे निम्नलिखित लेख पढ़ें आपके Linux वितरण पर.

  • उबंटू 20.04 में PostgreSQL और pgAdmin4 कैसे स्थापित करें
  • CentOS 8 में PostgreSQL और pgAdmin कैसे स्थापित करें
  • RHEL 8 में PostgreSQL और pgAdmin कैसे स्थापित करें

आइए शुरू करें...

एक सिंगल PostgreSQL डेटाबेस का बैकअप लें

पोस्टग्रेएसक्यूएल pg_dump . प्रदान करता है डेटाबेस का बैकअप लेने में आपकी मदद करने के लिए उपयोगिता। यह एक प्रारूप में SQL कमांड के साथ एक डेटाबेस फ़ाइल बनाता है जिसे भविष्य में आसानी से बहाल किया जा सकता है।

बैक अप लेने के लिए, एक PostgreSQL डेटाबेस, अपने डेटाबेस सर्वर में लॉग इन करके प्रारंभ करें, फिर पोस्टग्रेज़ . पर स्विच करें उपयोगकर्ता खाता, और चलाएँ pg_dump निम्नानुसार है (tecmintdb को बदलें उस डेटाबेस के नाम के साथ जिसका आप बैकअप लेना चाहते हैं)। डिफ़ॉल्ट रूप से, आउटपुट स्वरूप एक सादा-पाठ SQL स्क्रिप्ट फ़ाइल है।

$ pg_dump tecmintdb > tecmintdb.sql

pg_dump अन्य आउटपुट स्वरूपों का भी समर्थन करता है। आप -F . का उपयोग करके आउटपुट स्वरूप निर्दिष्ट कर सकते हैं विकल्प, जहां c मतलब कस्टम प्रारूप संग्रह फ़ाइल, d मतलब निर्देशिका प्रारूप संग्रह, और t मतलब टार प्रारूप संग्रह फ़ाइल:सभी प्रारूप pg_restore . में इनपुट के लिए उपयुक्त हैं ।

उदाहरण के लिए:

$ pg_dump -F c tecmintdb > tecmintdb.dump
OR
$ pg_dump -F t tecmintdb > tecmintdb.tar

निर्देशिका आउटपुट स्वरूप में आउटपुट डंप करने के लिए, -f . का उपयोग करें फ़ाइल के बजाय लक्ष्य निर्देशिका निर्दिष्ट करने के लिए ध्वज (जिसका उपयोग आउटपुट फ़ाइल निर्दिष्ट करने के लिए किया जाता है)। निर्देशिका जो pg_dump . द्वारा बनाई जाएगी मौजूद नहीं होना चाहिए।

$ pg_dump -F d tecmintdb -f tecmintdumpdir	

सभी PostgreSQL का बैकअप लेने के लिए डेटाबेस, pg_dumpall . का उपयोग करें टूल जैसा दिखाया गया है।

$ pg_dumpall > all_pg_dbs.sql

आप psql . का उपयोग करके डंप को पुनर्स्थापित कर सकते हैं जैसा दिखाया गया है।

$ pgsql -f all_pg_dbs.sql postgres

एक PostgreSQL डेटाबेस को पुनर्स्थापित करना

एक PostgreSQL restore को पुनर्स्थापित करने के लिए डेटाबेस, आप psql . का उपयोग कर सकते हैं या pg_restore उपयोगिताओं psql pg_dump . द्वारा बनाई गई टेक्स्ट फ़ाइलों को पुनर्स्थापित करने के लिए उपयोग किया जाता है जबकि pg_restore pg_dump द्वारा बनाए गए संग्रह से PostgreSQL डेटाबेस को पुनर्स्थापित करने के लिए उपयोग किया जाता है गैर-सादा-पाठ स्वरूपों में से एक में (कस्टम, टार, या निर्देशिका)।

सादा पाठ फ़ाइल डंप को पुनर्स्थापित करने का एक उदाहरण यहां दिया गया है:

$ psql tecmintdb < tecmintdb.sql

जैसा कि ऊपर बताया गया है, कस्टम-प्रारूप डंप pgsql . के लिए कोई स्क्रिप्ट नहीं है , इसलिए इसे pg_restore . के साथ पुनर्स्थापित किया जाना चाहिए जैसा दिखाया गया है।

$ pg_restore -d tecmintdb tecmintdb.dump
OR
$ pg_restore -d tecmintdb tecmintdb.tar
OR
$ pg_restore -d tecmintdb tecmintdumpdir	

बड़े PostgreSQL डेटाबेस का बैकअप लें

यदि आप जिस डेटाबेस का बैकअप ले रहे हैं वह बड़ा है और आप काफी छोटी आउटपुट फ़ाइल बनाना चाहते हैं, तो आप एक संपीड़ित डंप चला सकते हैं जहाँ आपको pg_dump के आउटपुट को फ़िल्टर करना होगा। gzip . जैसे संपीड़न उपकरण के माध्यम से या आपका कोई पसंदीदा:

$ pg_dump tecmintdb | gzip > tecmintdb.gz

यदि डेटाबेस बहुत बड़ा है, तो आप number_of_jobs . को डंप करके समानांतर में डंप कर सकते हैं टेबल एक साथ -j . का उपयोग कर रहे हैं ध्वज, जैसा दिखाया गया है।

$ pg_dump -F d -j 5 -f tecmintdumpdir

यह ध्यान रखना महत्वपूर्ण है कि समानांतर डंप विकल्प डंप के समय को कम करता है, लेकिन दूसरी ओर, यह डेटाबेस सर्वर पर लोड को भी बढ़ाता है।

दूरस्थ PostgreSQL डेटाबेस का बैकअप लें

pg_dump एक नियमित PostgreSQL क्लाइंट टूल है, यह दूरस्थ डेटाबेस सर्वर पर संचालन का समर्थन करता है। दूरस्थ डेटाबेस सर्वर को निर्दिष्ट करने के लिए pg_dump संपर्क करना चाहिए, कमांड-लाइन विकल्पों का उपयोग करें -h दूरस्थ होस्ट और -p . निर्दिष्ट करने के लिए उस दूरस्थ पोर्ट को निर्दिष्ट करता है जिस पर डेटाबेस सर्वर सुन रहा है। इसके अलावा, -U . का उपयोग करें कनेक्ट करने के लिए डेटाबेस भूमिका नाम निर्दिष्ट करने के लिए ध्वज।

10.10.20.10 . को बदलना याद रखें और 5432 और tecmintdb अपने दूरस्थ होस्ट आईपी पते या होस्टनाम, डेटाबेस पोर्ट और डेटाबेस नाम के साथ क्रमशः।

$ pg_dump -U tecmint -h 10.10.20.10 -p 5432 tecmintdb > tecmintdb.sql

सुनिश्चित करें कि दूरस्थ रूप से कनेक्ट करने वाले उपयोगकर्ता के पास डेटाबेस तक पहुंचने के लिए आवश्यक विशेषाधिकार हैं, और डेटाबेस सर्वर पर उपयुक्त डेटाबेस प्रमाणीकरण विधि कॉन्फ़िगर की गई है, अन्यथा, आपको निम्न स्क्रीनशॉट में दिखाए गए त्रुटि की तरह एक त्रुटि मिलेगी।

डेटाबेस को सीधे एक सर्वर से दूसरे सर्वर पर डंप करना भी संभव है, pg_dump का उपयोग करें और psql उपयोगिताओं के रूप में दिखाया गया है।

$ pg_dump -U tecmint -h 10.10.20.10 tecmintdb | pqsl -U tecmint -h 10.10.20.30 tecmintdb

क्रॉन जॉब का उपयोग करके ऑटो बैकअप PostgreSQL डेटाबेस

आप cron . का उपयोग करके नियमित अंतराल पर बैकअप कर सकते हैं नौकरियां। क्रोन सर्वर पर चलने के लिए विभिन्न प्रकार के कार्यों को शेड्यूल करने के लिए नौकरियां आमतौर पर उपयोग किए जाने वाले साधन हैं।

PostgreSQL . को स्वचालित करने के लिए आप क्रॉन जॉब को कॉन्फ़िगर कर सकते हैं डेटाबेस बैकअप इस प्रकार है। ध्यान दें कि आपको निम्नलिखित कमांड को PostgreSQL सुपरयूज़र के रूप में चलाने की आवश्यकता है:

$ mkdir -p /srv/backups/databases

अगला, एक नया क्रॉन जॉब जोड़ने के लिए क्रॉस्टैब को संपादित करने के लिए निम्न कमांड चलाएँ।

$ crontab -e

निम्न पंक्ति को क्रॉस्टैब के अंत में कॉपी और पेस्ट करें। आप ऊपर बताए गए किसी भी डंप प्रारूप का उपयोग कर सकते हैं।

0 0 * * *  pg_dump  -U postgres tecmintdb > /srv/backups/postgres/tecmintdb.sql

फ़ाइल सहेजें और बाहर निकलें।

क्रॉन सेवा स्वचालित रूप से इस नई नौकरी को पुनरारंभ किए बिना चलाना शुरू कर देगी। और यह क्रॉन जॉब हर दिन आधी रात को चलेगा, यह बैकअप टास्क का एक न्यूनतम समाधान है।

क्रॉन जॉब्स को शेड्यूल करने के तरीके के बारे में अधिक जानकारी के लिए, देखें:लिनक्स पर क्रॉन जॉब्स कैसे बनाएं और प्रबंधित करें

अभी के लिए बस इतना ही! डेटा के बैकअप को अपने डेटाबेस प्रबंधन रूटीन का हिस्सा बनाना एक अच्छा विचार है। किसी भी प्रश्न या टिप्पणी के लिए हमसे संपर्क करने के लिए, नीचे दिए गए फीडबैक फॉर्म का उपयोग करें। अधिक जानकारी के लिए, pg_dump और pg_restore संदर्भ पृष्ठ देखें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres-XL 9.6 . में नया क्या है?

  2. postgresql COUNT(DISTINCT...) बहुत धीमा

  3. स्पष्ट और निहित जोड़ का मिश्रण विफल रहता है तालिका के लिए एक प्रविष्टि है ... लेकिन इसे क्वेरी के इस भाग से संदर्भित नहीं किया जा सकता है

  4. क्या सबक्वायरी में ऑर्डर संरक्षित होने की गारंटी है?

  5. मैं नए PostgreSQL JSON डेटाटाइप के अंदर फ़ील्ड को कैसे संशोधित करूं?