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

PostgreSQL 9.0 बैकअप और रिकवरी

PostgreSQL में, बैकअप और रिकवरी अन्य डेटाबेस की तुलना में बहुत उपयोगकर्ता के अनुकूल हैं। उनमें से कई इसके लिए सहमत नहीं होंगे, ठीक है, बहस में नहीं पड़ते। बैकअप के लिए, PostgreSQL वृद्धिशील बैकअप का समर्थन नहीं करता है, हालांकि इस लक्ष्य को प्राप्त करने के लिए बहुत ही सुसंगत बैकअप उपकरण और ओएस स्तर के कामकाज हैं।

पोस्टग्रेएसक्यूएल बैकअप और रिकवरी पर मेरी सचित्र प्रस्तुति एक पूर्ण वैचारिक विचार देती है। आरेख में देखकर आप यह पता लगा सकते हैं कि कौन से बैकअप को पुनर्स्थापित करने या पुनर्प्राप्त करने के लिए उपयोग किया जा सकता है।

तार्किक बैकअप

तार्किक बैकअप के लिए pg_dump,pg_restore और pg_dumpall उपयोगिताओं का उपयोग किया जाता है। pg_dump और pg_restore डेटाबेस स्तर, स्कीमा स्तर और तालिका स्तर के लिए बैकअप लेने में मदद करेंगे। Pg_dumpall का उपयोग क्लस्टर स्तर के डंप के लिए किया जाता है।

तीन प्रारूप pg_dump, प्लेन SQL फॉर्मेट, कस्टम फॉर्मेट और टार फॉर्मेट के साथ समर्थित हैं। कस्टम और टैर प्रारूप डंप pg_restore उपयोगिता के साथ संगत हैं जबकि सादा SQL प्रारूप डंप बहाली के लिए psql उपयोगिता के साथ संगत हैं।

नीचे प्रत्येक बैकअप स्तर और संबंधित पुनर्स्थापना आदेशों के उदाहरण दिए गए हैं।

नोट:.bash_profile(Windows में पर्यावरण चर)

में PGDATABASE, PGUSER, PGPASSWORD और PGPORT के लिए डिफ़ॉल्ट सेट करें।

सादा SQL प्रारूप डंप और पुनर्स्थापित करें

$ pg_dump -U username -Fp dbname  >  filename
or
$ pg_dump -U username dbname -f filename
or
$ pg_dump -Fp -U username dbname -f filename

For restoring use psql command

$ psql -U username -f filename dbname
or
postgres=# i SQL-file-name //in psql terminal with i option

कस्टम प्रारूप

$ pg_dump -Fc dbname -f filename
$ pg_restore -Fc -U username -d dbname filename.dmp

टार प्रारूप

$ pg_dump -Ft dbname -f filename
$ pg_restore -U username -d dbname filename
or
$ cat tar-file.tar | psql -U username dbname

नोट:संबंधित विकल्पों को जोड़कर स्कीमा स्तर और टेबल्स स्तर डंप उसी तरह से किया जा सकता है।

क्लस्टर लेवल डंप:

$pg_dumpall -p portnumber > filename

For restoring use psql command

$ psql -f filename

डंप लेने और कार्यप्रणाली को बहाल करने का सबसे अच्छा तरीका है। विशेष रूप से, साइमन रिग्स और हन्नू क्रोसिंग - "पोस्टग्रेएसक्यूएल 9 एडमिनिस्ट्रेशन कुकबुक - 2010" पुस्तक www.2ndQuadrant.com द्वारा प्रकाशित पोस्टग्रेएसक्यूएल बैकअप और रिकवरी के साथ शुरू करने का एक अच्छा तरीका है।

भौतिक बैकअप (फाइल सिस्टम बैकअप)

कोल्ड बैकअप:

कोल्ड बैकअप में, पोस्टग्रेज इंस्टेंस डाउन होने पर /डेटा निर्देशिका का यह एक साधारण फ़ाइल सिस्टम बैकअप है, इसका मतलब है, एक स्व-संगत डेटा निर्देशिका बैकअप प्राप्त करने के लिए, डेटाबेस सर्वर को कॉपी करने से पहले बंद कर दिया जाना चाहिए। PostgreSQL सॉफ्टलिंक के माध्यम से pg_xlog और pg_tblspce को अलग-अलग माउंट पॉइंट में रखने की सुविधा देता है। सॉफ्ट लिंक के डेटा सहित /डेटा निर्देशिका की प्रतिलिपि बनाते समय, नीचे दिए गए आदेश का उपयोग करें।

tar czf backup.tar.gz $PGDATA
or
cp -r $PGDATA /backup/
or
rsync -a $PGDATA /wherever/data

हॉट बैकअप (ऑनलाइन बैकअप):

हॉट बैकअप में, क्लस्टर अप एंड रनिंग होगा और डेटाबेस आर्काइव लॉग मोड में होना चाहिए। हॉट बैकअप प्रक्रिया (pg_start_backup (), pg_stop_backup ()) को शुरू करने और रोकने के बारे में दो सिस्टम फ़ंक्शन इंस्टेंस को सूचित करेंगे। ऑनलाइन बैकअप के साथ आगे बढ़ने से पहले, डेटाबेस आर्काइव लॉग मोड पर चर्चा करते हैं जो ऑनलाइन बैकअप के लिए अनिवार्य है।

WAL संग्रह को सक्षम करना:

मेरे आने वाले पोस्ट PITR / Tunning WAL आदि के बारे में संक्षिप्त जानकारी देंगे, वर्तमान में हम WAL आर्काइविंग में देखते हैं। PostgreSQL डेटाबेस सिस्टम में, वास्तविक डेटाबेस डिस्क पर राइट-फॉरवर्ड लॉग (WAL) नामक एक अतिरिक्त फ़ाइल में 'लिखता है'। इसमें डेटाबेस सिस्टम में किए गए राइट्स का रिकॉर्ड होता है। क्रैश होने की स्थिति में, डेटाबेस को इन रिकॉर्ड्स से रिपेयर/पुनर्प्राप्त किया जा सकता है।

आम तौर पर, नियमित अंतराल पर राइट-फ़ॉरवर्ड लॉग लॉग (जिन्हें चेकपॉइंट कहा जाता है) डेटाबेस से मेल खाते हैं और फिर हटा दिए जाते हैं क्योंकि अब इसकी आवश्यकता नहीं है। आप WAL को बैकअप के रूप में भी उपयोग कर सकते हैं, क्योंकि डेटाबेस में किए गए सभी लेखन का रिकॉर्ड होता है।

वाल संग्रह की अवधारणा:

राइट-फ़ॉरवर्ड लॉग प्रत्येक 16 एमबी बड़े से बना होता है, जिसे सेगमेंट कहा जाता है। WALs pg_xlog निर्देशिका के अंतर्गत रहते हैं और यह 'डेटा निर्देशिका' की उपनिर्देशिका है। पोस्टग्रेएसक्यूएल इंस्टेंस द्वारा फ़ाइल नामों को संख्यात्मक रूप से आरोही क्रम में नामित किया जाएगा। WAL के आधार पर बैकअप करने के लिए, किसी को एक मूल बैकअप की आवश्यकता होती है, जो कि डेटा निर्देशिका का पूर्ण बैकअप और आधार बैकअप और वर्तमान तिथि के बीच WAL सेगमेंट होता है।

WAL खंडों के संग्रह को कॉन्फ़िगर करना दो कॉन्फ़िगरेशन पैरामीटर के संग्रह_कमांड और संग्रह_मोड को postgresql.conf में सेट करके चुना जा सकता है। क्लस्टर को आर्काइव-लॉग मोड में बनाने के लिए RESTART की आवश्यकता होती है।

archive_mode= on/off (boolean parameter)
archive_command = 'cp –i %p / Archive/Location/ f% '

नोट: % p फ़ाइल को फ़ाइल नाम और % f . के रूप में उपयोग किए गए पथ के साथ कॉपी करने के लिए गंतव्य फ़ाइल के लिए निर्देशिका प्रविष्टि के बिना।

संग्रहकर्ता प्रक्रिया के बारे में अधिक जानकारी के लिए पोस्ट पोस्टग्रेएसक्यूएल 9.0 मेमोरी और प्रोसेस देखें।

ऑनलाइन बैकअप:

ऑनलाइन बैकअप लेने के लिए:

Step 1 : Issue pg_start_backup('lable') in the psql terminal
postgres=# select pg_start_backup('fb');
Step 2 : OS level copy the $PGDATA directory to any Backup Location
$ cp -r $PGDATA /anylocation
Step 3 : Issue pg_stop_backup() in psql terminal.
postgres=# select pg_stop_backup();

नोट: यह आवश्यक नहीं है कि ये दोनों कार्य एक ही डेटाबेस कनेक्शन में चलें। बैकअप मोड वैश्विक और स्थायी है।

PostgreSQL में, ऑनलाइन बैकअप के प्रारंभ और रोक समय को संग्रहीत करने के लिए कोई कैटलॉग नहीं है। हालाँकि, जब ऑनलाइन बैकअप प्रक्रिया में होता है, तो कुछ फाइलें बनाई और हटा दी जाती हैं।

pg_start_backup('लेबल') और pg_stop_backup ऑनलाइन बैकअप करने के लिए दो सिस्टम फ़ंक्शन हैं। Pg_start_backup ('लेबल') के साथ $PGDATA निर्देशिका के तहत एक फ़ाइल बैकअप_लेबल बनाया जाता है और $PGDATA/pg_xlog के तहत बनाई गई फ़ाइल 'wal-segment-number.backup' फ़ाइल pg_stop_backup() के साथ बनाई जाती है। बैकअप_लेबल वाल सेगमेंट का प्रारंभ समय और चेकपॉइंट स्थान देगा, यह पोस्टग्रेएसक्यूएल इंस्टेंस को भी सूचित करेगा कि क्लस्टर बैकअप-मोड में है। $PGDATA/pg_xlog निर्देशिका के अंतर्गत 'wal-segment-number.backup' फ़ाइल प्रारंभ और रुकने का समय, WAL खंड संख्या के साथ चेकपॉइंट स्थान का वर्णन करती है।

नोट:pg_stop_backup() के बाद, PostgreSQL उदाहरण द्वारा बैकअप_लेबल फ़ाइल हटा दी जाती है।

अपनी टिप्पणियाँ, सुझाव अवश्य दें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. फ़ंक्शन से लौटाए गए रिकॉर्ड में कॉलम जुड़े हुए हैं

  2. पोस्टग्रेज ने बेतरतीब ढंग से काम करना बंद कर दिया (रेल, PGSQL.5432)

  3. PostgreSQL फ़ंक्शन / संग्रहीत कार्यविधि CURRENT_TIMESTAMP नहीं बदलता है

  4. PostgreSQL में कैशिंग

  5. कैसे current_timestamp () PostgreSQL में काम करता है