कैसे एक काम करने के लिए और PostgreSQL DB बैकअप और परीक्षण पूरा करें


45

मैं उम्मीद कर रहा था कि मैं इस तरह से एक स्पष्ट उत्तर प्राप्त कर सकता हूं कि कैसे आप एमएस SQL ​​सर्वर के साथ प्राप्त करेंगे, और फिर अनाथ उपयोगकर्ताओं की देखभाल करने के लिए एक पूर्ण पोस्टग्रेज बैकअप लेना सुनिश्चित करें।

मैंने जो भी पढ़ा है, और यह गलत हो सकता है, एक अच्छा पोस्टग्रेक्यूएल ब्लॉग खोजना चुनौतीपूर्ण रहा है, इसलिए कृपया मुझे कुछ करने के लिए स्वतंत्र महसूस करें, मुझे यह पता लगाने की आवश्यकता है कि यह ऐप कैसे काम करता है ताकि मुझे अपने बैकअप और स्लोनी पर भरोसा हो सके प्रतिकृति। मैं एक डेवलपर एक बैकअप मैं के माध्यम से PgadminIII से ले लिया बहाल किया था custom, directoryहै, और tarप्रारूप जबकि चयन OIDरों लेकिन उन्होंने कहा कि उनमें से दो लोड नहीं किया है, tarकिया था लेकिन यह केवल निर्देशिका, नहीं डेटा था। मैं अब वास्तव में उलझन में हूँ।

  1. मैं PGAdminIII का उपयोग कर रहा हूं, इसका एक pg_dumpऔर pg_dumpallविकल्प है। मैं सब कुछ वापस करना चाहता हूं जो मुझे इस डेटाबेस को पुनर्स्थापित करने के लिए परीक्षण करने की आवश्यकता है और सत्यापित करें कि हां, हमारे लिए आवश्यक सभी डेटा और हमारा बैकअप अच्छा है। आखिरकार मैं एक ऑटो-रिस्टोर स्क्रिप्ट लिखना चाहता हूं लेकिन एक दिन में।

pg_dumpallजाहिरा तौर पर एक है -globalsविकल्प है कि बैकअप सब कुछ चाहिए था, लेकिन के लिए मदद pg_dumpallएक शो -g, --globals-only dump only global objects, no databasesहै, न कि --globalsविकल्प।

मैंने सोचा था pg_dumpallकि कम से कम विदेशी कुंजी बैकअप होगा, लेकिन यह भी एक 'विकल्प' लगता है। प्रलेखन के अनुसार , यहां तक ​​कि pg_dumpallमुझे -oविदेशी कुंजी का बैकअप लेने के लिए एक विकल्प का उपयोग करने की आवश्यकता है , मैं वास्तव में कल्पना नहीं कर सकता कि मैं विदेशी कुंजी का बैकअप कैसे लेना चाहता हूं और यह डिफ़ॉल्ट विकल्पों के रूप में अधिक समझ में आएगा।

  1. मैं अनाथ उपयोगकर्ताओं की देखभाल कैसे करूंगा और मेरे पास सब कुछ मान्य होगा? मैं वास्तव में किसी अन्य सर्वर पर अपनी बैकअप फ़ाइल को पुनर्स्थापित करना चाहता हूं और सभी कार्यों को सत्यापित करता हूं। अगर किसी के पास कोई सुझाव है कि पोस्टग्रेक्यूएल में वास्तविक बैकअप कैसे लें और पुनर्स्थापित करें, तो मैं बहुत आभारी हूं।

मेरे पास एक PostgreSQL सर्वर था, लेकिन मैं अभी भी थाह नहीं कर सकता कि ऐप OIDडिफ़ॉल्ट रूप से बैकअप क्यों नहीं करेगा ! ऐसा लगता है कि 99.9% समय आप चाहते हैं।

अद्यतन 1:

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

संपादित करें: मेरे प्रश्न को संपादित करके इस प्रश्न की विशिष्टता दिखाने के लिए साइट द्वारा पूछा जा रहा है। यह प्रश्न इस मुद्दे को उठाता है और बैकअप में ओआईडी पर स्पष्टता प्राप्त करता है, ग्लोबल्स और गैर ग्लोबल्स के बीच अंतर, साथ ही बैकअप को सुनिश्चित करने के लिए बैकअप को सुनिश्चित करने के लिए सिफारिशों को ठीक करने के लिए पुनर्स्थापना सिफारिशों का परीक्षण करता है। उत्तरों के कारण मैं बैकअप करने में सक्षम था, ग्लोबल्स / ओइड्स का पता लगाता हूं, और क्रोन नौकरियों का उपयोग करके पोस्टग्रेज पर रात में एक परीक्षण बहाल प्रक्रिया शुरू की। सहायता के लिए धन्यवाद!


जवाबों:


58

आप पूरे PostgreSQL क्लस्टर को pg_dumpall से डंप कर सकते हैं। बात यह है कि सभी डेटाबेस और एक भी क्लस्टर के लिए सभी वैश्विक। सर्वर पर कमांड लाइन से, मैं ऐसा कुछ करूँगा। (पोर्ट 5433 पर मेरा सुनना, डिफॉल्ट पोर्ट पर नहीं।) आपको --clean विकल्प की आवश्यकता हो सकती है या नहीं भी।

$ pg_dumpall -U postgres -h localhost -p 5433 --clean --file=dump.sql

इसमें ग्लोबल्स शामिल हैं - उपयोगकर्ताओं और समूहों, तालिकाओं और इसी तरह की जानकारी।

अगर मैं किसी एकल डेटाबेस का बैकअप लेने जा रहा हूं और इसे एक स्क्रैच सर्वर में ले जाऊंगा, तो मैं डेटाबेस को pg_dump के साथ डंप कर दूंगा, और ग्लोबल्स को या तो डंप कर दूंगा

  • pg_dumpall --globals-only, या
  • pg_dumpall --roles-only (यदि आपको केवल भूमिकाएं चाहिए)

इस तरह।

$ pg_dump -U postgres -h localhost -p 5433 --clean --file=sandbox.sql sandbox
$ pg_dumpall -U postgres -h localhost -p 5433 --clean --globals-only --file=globals.sql

आउटपुट केवल पाठ फ़ाइलें हैं।

जब आप इन फ़ाइलों को किसी भिन्न सर्वर पर ले जाते हैं, तो पहले ग्लोबल्स लोड करें, फिर डेटाबेस डंप करें।

$ psql -U postgres -h localhost -p 5433 < globals.sql
$ psql -U postgres -h localhost -p 5433 < sandbox.sql

मैंने सोचा था कि pg_dumpall कम से कम विदेशी कुंजी का बैकअप लेगा, लेकिन यहां तक ​​कि यह एक 'विकल्प' प्रतीत होता है। के अनुसार: http://www.postgresql.org/docs/9.1/static/app-pg-dumpall.html यहां तक ​​कि pg_dumpall के साथ मुझे विदेशी कुंजियों के बैकअप के लिए एक -o विकल्प का उपयोग करने की आवश्यकता है

नहीं, वह संदर्भ कहता है, "इस विकल्प का उपयोग करें यदि आपका आवेदन किसी तरह से OID कॉलम का संदर्भ देता है (उदाहरण के लिए, एक विदेशी कुंजी दबाव में)। अन्यथा, इस विकल्प का उपयोग नहीं किया जाना चाहिए।" (जोर दिया।) मुझे लगता है कि यह संभावना नहीं है कि आपका आवेदन ओआईडी कॉलम का संदर्भ देता है। आपको "बैकअप विदेशी कुंजियों" के लिए इस विकल्प का उपयोग करने की आवश्यकता नहीं है। (अपने संपादक या फ़ाइल दर्शक में डंप फ़ाइल पढ़ें)


3
क्या उस डेटाबेस का नाम गायब नहीं है जहां से सैंडबॉक्स। एसक्यूएल आयात किया जा रहा है? psql -U postgres -h localhost -p 5433 sandbox < sandbox.sql
सेबके

यह देखता है कि pg_dumpall, 9.5 संस्करण, NULLउपयोग करते समय मूल्यों के साथ सही ढंग से काम नहीं करता है COPY। मुझे इस तरह की कई त्रुटियां मिलती हैं: psql:/tmp/dumpall.sql:4133559: invalid command \N psql:/tmp/dumpall.sql:4133560: invalid command \.जब 10 का उपयोग करके पोस्टग्रैस 10 पर वापस आयात किया जा रहा हैpsql -f /tmp/dumpall.sql
piotrekkr
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.