2013-04-02 8 views
8

जब मैं अपने डेटाबेस के बड़े डेटाबेस (लगभग 32Go कस्टम प्रारूप में) को पुनर्स्थापित करने का प्रयास करता हूं तो मुझे थोड़ा समस्या मिलती है (इस नोड में मेरे उत्पादन की तुलना में कम रैम, सीपीयू है ... सर्वर)।PostgreSQL - बहुत बड़े डेटाबेस को पुनर्स्थापित कैसे करें

मेरे डेटाबेस डंप एक कमांड के समान के साथ उत्पन्न कर रहे हैं:

pg_restore -F custom -j 5 -d myDB /backup/myDB-20130331.pg91 

लेकिन यहाँ, हर बार बहाल आदेश विफल रहा:

pg_dump -F custom -b myDB -Z 9 > /backup/myDB-`date +%y%m%d`.pg91 

और जब मैं इसे बहाल, मैं निम्न आदेश का इस्तेमाल किया एक त्रुटि के साथ:

pg_restore: [archiver (db)] error returned by PQputCopyData: server closed the connection unexpectedly 
This probably means the server terminated abnormally 
    before or while processing the request. 
pg_restore: [archiver] worker process failed: exit code 1 
pg_restore: [archiver (db)] error returned by PQputCopyData: server closed the connection unexpectedly 
This probably means the server terminated abnormally 
    before or while processing the request. 
pg_restore: [archiver (db)] error returned by PQputCopyData: server closed the connection unexpectedly 
This probably means the server terminated abnormally 
    before or while processing the request. 
pg_restore: [archiver (db)] error returned by PQputCopyData: server closed the connection unexpectedly 
This probably means the server terminated abnormally 
    before or while processing the request. 

और जब मैं अपने पोस्टग्रेस्क्ल लॉग की जांच करता हूं, तो मैं इसे पढ़ सकता हूं:

HINT: In a moment you should be able to reconnect to the database and repeat your command. 
    LOG: all server processes terminated; reinitializing 
    LOG: database system was interrupted; last known up at 2013-04-02 11:41:48 UTC 
    LOG: database system was not properly shut down; automatic recovery in progress 
    LOG: redo starts at 86/26F302B0 
    LOG: unexpected pageaddr 85/E3F52000 in log file 134, segment 38, offset 16064512 
    LOG: redo done at 86/26F51FC0 
    LOG: last completed transaction was at log time 2013-04-02 11:50:47.663599+00 
    LOG: database system is ready to accept connections 
    LOG: autovacuum launcher started 

यह काफी अजीब बात है, मेरे पोस्टग्रेस्क्ल सर्वर केवल मेरे पुनर्स्थापन के कारण अकेले "पुनः प्रारंभ" है। मैं नौकरियों की संख्या को कम करने की कोशिश करता हूं (-j 5 विकल्प) लेकिन फिर भी वही समस्या है। हालांकि बेहतर चश्मा वाले नोड पर, मुझे इस डेटाबेस को पुनर्स्थापित करने में कोई समस्या नहीं है। मुझे यकीन नहीं है लेकिन शायद मेरे सूचकांक के अपडेट (उनमें से एक वास्तव में बहुत बड़ा है) इस मुद्दे को समझने के लिए एक सुराग हो सकता है?

तो मेरे पास कुछ प्रश्न हैं: क्या वास्तव में बड़े डेटाबेस को पुनर्स्थापित करने का एक बेहतर तरीका है? क्या मुझे अपने pg_restore कमांड में कुछ याद आती है? मेरे डेवेल सर्वर की सेटिंग्स बहुत कम हो सकती है?

किसी भी सुराग की सराहना की जाएगी। अग्रिम धन्यवाद।

env: PostgreSQL 9.1

+0

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

+0

हाय @ क्रेग्रिंजर, क्या आप मुझे यह समझने के लिए लॉग वर्कोज़ बनाने के लिए सुझाव देते हैं कि क्या हो रहा है? ठीक है, मैं इसे करने की कोशिश करूंगा और अधिक जानकारी देखने की उम्मीद करूंगा – Labynocle

+0

आप फिर से 5 से 2 तक की नौकरियों की संख्या को भी कम कर सकते हैं। इसमें अधिक समय लगता है, लेकिन आपके विकास नोड पर कम मांग हो सकती है। – thisfeller

उत्तर

11

बड़ा इस तरह का काम करने के लिए (डेबियन संकुल के माध्यम से स्थापित), यह बहाली की प्रक्रिया के दौरान (अपने postgresql.conf में off करने के लिए सेट यह द्वारा) autovacuum निष्क्रिय करने के लिए सिफारिश की है ।

ऐसा लगता है कि यह अंततः मेरे लिए काम करता है।

+1

काम करेगा या नहीं, यह मेरे लिए काम करता है - क्या आप एक स्रोत (या अधिक जानकारी) प्रदान कर सकते हैं कि इसे 'ऑटोवैक्यूम' को अक्षम करने की सिफारिश क्यों की जाती है, या यह क्या है विशेष रूप से ऐसा करना डेटाबेस को क्रैश करेगा? धन्यवाद! – christianbundy

+0

'' वैक्यूम'' प्रक्रिया आपके सिस्टम के प्रदर्शन को खराब कर सकती है (आंकड़े उत्पन्न करें, I/O ट्रैफ़िक बढ़ाएं ...) ताकि इस तरह की समस्या से बचने के लिए इसे अक्षम करना दिलचस्प हो। हालांकि, सांख्यिकीय अपतटीय रखने के लिए '' वैक्यूम 'महत्वपूर्ण है लेकिन डंप के दौरान आवश्यक नहीं है। 'Autovaccum'' डिमन को सक्षम या सक्षम करने के लिए इसे मैन्युअल रूप से लॉन्च करना न भूलें। – Labynocle

+0

नहीं, मेरे लिए काम नहीं करता है। मैं यह कोशिश करूंगा: http://serverfault.com/a/570079 –

संबंधित मुद्दे