Postgresql सर्वर प्रारंभ नहीं होता है. PostgreSql सेवा प्रारंभ नहीं होती है

pg_ctl init [ -s ] [ -D डेटादिर] [ -ओ initdb-विकल्प ]

pg_ctl प्रारंभ [ -w ] [ -t सेकंड] [ -एस ] [ -डी डेटादिर] [ -एल फ़ाइल नाम] [ -ओ पैरामीटर] [ -पी पथ] [ -सी ]

pg_ctl स्टॉप [-डब्ल्यू] [-टी सेकंड] [ -एस ] [ -डी डेटादिर] [ -एम एस | च | मैं ]

pg_ctl पुनरारंभ करें [ -w ] [ -t सेकंड] [ -एस ] [ -डी डेटादिर] [ -सी ] [ -एम एस | च | मैं ] [ -ओ पैरामीटर ]

pg_ctl पुनः लोड करें [-एस] [-डी डेटादिर ]

pg_ctl स्थिति [-D डेटादिर ]

pg_ctl प्रचार [ -s ] [ -D डेटादिर ]

pg_ctl मार डालो सिग्नल_नाम प्रक्रिया_आईडी

pg_ctl रजिस्टर [-एन सेवानाम] [ -यू उपयोक्तानाम] [ -पी पासवर्ड] [ -डी डेटादिर] [ -एस ए | डी ] [ -डब्ल्यू ] [ -टी सेकंड] [ -इसलिए पैरामीटर ]

pg_ctl अपंजीकृत [-एन सेवानाम ]

सर्वर स्टार्ट मोड में प्रारंभ होता है. प्रक्रिया पृष्ठभूमि में चलती है और मानक इनपुट /dev/null (या विंडोज़ पर nul) से जुड़ा होता है। डिफ़ॉल्ट रूप से, यूनिक्स जैसी प्रणालियों पर, सर्वर आउटपुट और त्रुटियाँ मानक आउटपुट (त्रुटि नहीं) डिवाइस pg_ctl पर लिखी जाती हैं। pg_ctl के आउटपुट को किसी फ़ाइल या प्रक्रिया पर रीडायरेक्ट किया जाना चाहिए, जैसे लॉग रोटेशन एप्लिकेशन रोटेटलॉग्स; अन्यथा, पोस्टग्रेज़ नियंत्रण टर्मिनल (पृष्ठभूमि में) पर आउटपुट लिखेगा और शेल प्रक्रिया समूह में रहेगा। विंडोज़ पर, सर्वर आउटपुट और त्रुटियाँ डिफ़ॉल्ट रूप से टर्मिनल पर पुनर्निर्देशित की जाती हैं। आप इस व्यवहार को बदल सकते हैं और -l स्विच जोड़कर सर्वर आउटपुट को फ़ाइल में निर्देशित कर सकते हैं। हम -l स्विच का उपयोग करने या आउटपुट को पुनर्निर्देशित करने की सलाह देते हैं।

सर्वर को रोकने के लिए stop का उपयोग करें। आप -m ध्वज द्वारा निर्दिष्ट तीन मोड में रुक सकते हैं। डिफ़ॉल्ट मोड "स्मार्ट" है, जो सभी सक्रिय क्लाइंट कनेक्शन और रिमोट बैकअप प्रक्रियाओं के पूरा होने की प्रतीक्षा करता है। यदि सर्वर हॉट स्टैंडबाय मोड में चल रहा है, तो सभी क्लाइंट सत्र पूरे होते ही पुनर्प्राप्ति और स्ट्रीमिंग प्रतिकृति बंद हो जाएगी। "फास्ट" मोड क्लाइंट सत्रों के बंद होने की प्रतीक्षा नहीं करता है और दूरस्थ बैकअप प्रक्रियाओं को बाधित करता है। सभी सक्रिय लेनदेन वापस ले लिए जाते हैं और ग्राहकों को डिस्कनेक्ट करने के लिए मजबूर किया जाता है, जिसके बाद सर्वर बंद हो जाता है। "तत्काल" मोड तुरंत सभी प्रक्रियाओं को बाधित करता है और सर्वर को बंद कर देता है, जिससे अगली शुरुआत में विफलता के बाद पुनर्प्राप्त करने की आवश्यकता होती है।

सर्वर को रोकने और फिर शुरू करने के लिए पुनरारंभ का उपयोग किया जाता है। इस मामले में, पोस्टग्रेज कमांड के झंडे उपलब्ध हैं। यदि सर्वर शुरू करते समय कमांड लाइन पर डेटा स्टोरेज डायरेक्टरी का संबंधित पथ निर्दिष्ट किया गया था, तो पुनरारंभ काम नहीं कर सकता है।

कॉन्फ़िगरेशन (postgresql.conf, pg_hba.conf, आदि) को फिर से पढ़ने के लिए, पुनः लोड का उपयोग किया जाता है, और पोस्टग्रेज प्रक्रिया SIGHUP सिस्टम सिग्नल प्राप्त करती है। यह आपको सर्वर को पूरी तरह से पुनरारंभ किए बिना परिवर्तन लागू करने की अनुमति देता है।

क्लस्टर की स्थिति जांचने के लिए स्टेटस का उपयोग किया जाता है। यदि क्लस्टर चल रहा है, तो प्रक्रिया की पीआईडी ​​प्रदर्शित की जाएगी, साथ ही प्रारंभ करते समय उपयोग किए गए तर्कों के साथ एक कमांड भी प्रदर्शित किया जाएगा। यदि क्लस्टर बंद हो जाता है, तो प्रक्रिया निकास स्थिति 3 लौटा देगी। यदि डेटा भंडारण निर्देशिका निर्दिष्ट नहीं है, तो प्रक्रिया निकास स्थिति 4 लौटा देगी।

स्टैंडबाय सर्वर को प्राथमिक मोड में स्विच करने के लिए, प्रमोट का उपयोग करें। इस स्थिति में, सर्वर पुनर्प्राप्ति मोड में काम करना बंद कर देता है और रीड-राइट मोड में काम करना शुरू कर देता है।

किसी प्रक्रिया को सिग्नल भेजने के लिए किल का उपयोग किया जाता है। यह Microsoft Windows वातावरण में विशेष रूप से उपयोगी है जिसमें स्नैप-इन में किल कमांड नहीं है। उपलब्ध संकेतों की सूची के लिए --help देखें।

Microsoft Windows के अंतर्गत सिस्टम सेवा के रूप में पंजीकरण करने के लिए, रजिस्टर का उपयोग किया जाता है। -एस ध्वज सेवा स्टार्टअप मोड को या तो "ऑटो" (ओएस स्टार्टअप पर) या "डिमांड" (अनुरोध पर) सेट करता है।

Microsoft Windows में किसी पंजीकृत सेवा को हटाने के लिए, अपंजीकृत का उपयोग किया जाता है।

विकल्प

सी
--कोर-फ़ाइल

उन प्लेटफ़ॉर्म पर जहां यह समर्थित है, क्रैश होने पर सर्वर मेमोरी स्नैपशॉट कैप्चर करने का प्रयास करेगा। इससे निदान और रोकथाम करना संभव हो जाता है संभावित समस्याएँभविष्य में. -डी डेटादिर
--pgdata डेटादिर

क्लस्टर कॉन्फ़िगरेशन फ़ाइलों का स्थान निर्दिष्ट करता है। यदि निर्दिष्ट नहीं है, तो PGDATA पर्यावरण चर का मान उपयोग किया जाता है। -एल फ़ाइल नाम
--लकड़ी का लट्ठा फ़ाइल नाम

आउटपुट लॉग डेटा फ़ाइलनाम. यदि फ़ाइल पहले से मौजूद नहीं है तो फ़ाइल बनाई जाती है। इस स्थिति में, umask 077 पर सेट है, जो अन्य उपयोगकर्ताओं को इस फ़ाइल तक पहुंचने से रोकता है। -एम तरीका
--तरीका तरीका

क्लस्टर स्टॉप मोड सेट करता है। तरीकामानों को स्वीकार करता है स्मार्ट , तेज़ , या तत्काल , या प्रत्येक उपलब्ध मान का पहला अक्षर, जैसे कि s । यदि ध्वज हटा दिया जाए तो स्मार्ट का प्रयोग किया जाता है। -ओ पैरामीटर

उन झंडों को निर्दिष्ट करता है जिन्हें पोस्टग्रेज को भेजा जाएगा।

मान को एकल या के साथ फ़्रेम किया जाना चाहिए दोहरे उद्धरण चिह्नसमूह की अखंडता सुनिश्चित करने के लिए. -ओ initdb-विकल्प

उन झंडों को निर्दिष्ट करता है जिन्हें initdb को भेजा जाएगा।

समूह की अखंडता सुनिश्चित करने के लिए मान को एकल या दोहरे उद्धरण चिह्नों से घिरा होना चाहिए। -पी पथ

पोस्टग्रेज़ एप्लिकेशन का स्थान निर्दिष्ट करता है। डिफ़ॉल्ट रूप से, उसी पथ का उपयोग किया जाता है जहां pg_ctl स्थित है, या, यदि यह विफल रहता है, तो इंस्टॉलेशन पथ लिया जाता है। गैर-मानक स्थितियों को छोड़कर, अक्सर इस पैरामीटर का उपयोग करने की कोई आवश्यकता नहीं होती है।

init initdb के समान पैरामीटर स्वीकार करता है। -एस
--चुपचाप

सूचनात्मक संदेशों के बिना, केवल त्रुटियाँ प्रदर्शित करें। -टी
--समयबाह्य

सर्वर के प्रारंभ या बंद होने की प्रतीक्षा करने का अधिकतम समय (सेकंड में)। डिफ़ॉल्ट साठ सेकण्ड है। -वी
--संस्करण

pg_ctl का संस्करण प्रिंट करता है और निष्पादन रोक देता है। डब्ल्यू

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

सर्वर के प्रारंभ या बंद होने की प्रतीक्षा करने पर ध्यान न दें. यह व्यवहार स्टार्टअप और पुनरारंभ मोड के लिए डिफ़ॉल्ट है। -?
--मदद

pg_ctl कमांड के लिए सहायता प्रिंट करें और निष्पादन रोकें।

विंडोज़-विशिष्ट विकल्प

एन सेवानाम

रजिस्टर करने के लिए सिस्टम सेवा का नाम. इसका उपयोग एक सिस्टम और डिस्प्ले वैल्यू के रूप में किया जाता है। -पी पासवर्ड

सेवा प्रारंभ करने वाले उपयोगकर्ता का पासवर्ड. -एस स्टार्टअप प्रकार

सिस्टम सेवा स्टार्टअप प्रकार. मान ले सकते हैं: ऑटो, या मांग, या प्रत्येक दिए गए मान के नाम के पहले अक्षर द्वारा दर्शाया जा सकता है। डिफ़ॉल्ट ऑटो है. यू उपयोक्तानाम

वह उपयोगकर्ता नाम जिसके अंतर्गत सेवा लॉन्च की जाएगी. डोमेन उपयोगकर्ताओं के लिए, आपको DOMAIN\उपयोगकर्ता नाम नोटेशन का उपयोग करना होगा।

मैं विंडोज 7 पर पोस्टग्रेज 9.2.4 को एक सेवा के रूप में चलाने का प्रयास कर रहा हूं। पोस्टग्रेज स्थापित करने के बाद सेवा ठीक से काम कर रही है। हालाँकि, पोस्टग्रेज़ को किसी अन्य प्रोग्राम के सर्वर के रूप में स्थापित करने के बाद, सेवा ने काम करना बंद कर दिया। जब मैं अब सेवा शुरू करने का प्रयास करता हूं तो मुझे एक संदेश मिलता है:

"सेवा पोस्टग्रेस्क्ल-x64-9.2 - स्थानीय कंप्यूटर पर पोस्टग्रेएसक्यूएल सर्वर 9.2 कंप्यूटर शुरू हुआ और फिर बंद हो गया। कुछ सेवाएँ स्वचालित रूप से बंद हो जाती हैं यदि वे अन्य सेवाओं या कार्यक्रमों द्वारा उपयोग में नहीं हैं।"

जब मैं एक प्रोग्राम चलाने का प्रयास करता हूं जो डेटाबेस सर्वर का उपयोग करता है, तो मुझे यह त्रुटि मिलती है:

"लॉग इन करने या प्रोडक्शन डेटाबेस बनाने का प्रयास करते समय एक समस्या उत्पन्न हुई। विवरण: सर्वर से कनेक्ट नहीं हो सका; हो सकता है कि रिमोट कनेक्टर से कनेक्ट नहीं हो पाया हो। एप्लिकेशन को अब बंद हो जाना चाहिए"

इसी प्रोग्राम को खोलते समय मुझे भी एक बार इस त्रुटि का सामना करना पड़ा:

"लॉग इन करने या उत्पादन डेटाबेस बनाने का प्रयास करते समय एक समस्या उत्पन्न हुई। विवरण: घातक: pg_hba.conf लोड करने में विफल। एप्लिकेशन को अब बंद हो जाना चाहिए।"

मैंने स्थानीय प्रणाली के रूप में पंजीकृत एक सेवा शुरू करने का प्रयास किया खातासाथ ही मेरे अपने खाते (पोस्टग्रैज प्रॉपर्टीज प्रॉपर्टीज में) से कोई फायदा नहीं हुआ। मैंने कंप्यूटर को पुनरारंभ करने का भी प्रयास किया। इंटरनेट पर कई समस्याओं के बाद, मुझे पता चला कि pg_log फ़ाइल की जाँच करना अच्छा है। यहाँ अंतिम pg_log प्रविष्टि की सामग्री है:

2013-05-29 14:59:45 एमडीटी लॉग: डेटाबेस सिस्टम बाधित हो गया था; अंतिम बार 2013-05-29 14:58:01 एमडीटी 2013-05-29 14:59:45 एमडीटी लॉग पर पता चला: डेटाबेस सिस्टम ठीक से बंद नहीं हुआ था; स्वचालित पुनर्प्राप्ति प्रगति पर है 2013-05-29 14:59:45 एमडीटी लॉग: 0/175बीबी98 पर शून्य लंबाई के साथ रिकॉर्ड 2013-05-29 14:59:45 एमडीटी लॉग: दोबारा करने की आवश्यकता नहीं है 2013-05-29 14:59 :45 एमडीटी लॉग: डेटाबेस सिस्टम कनेक्शन स्वीकार करने के लिए तैयार है 2013-05-29 14:59:45 एमडीटी लॉग: ऑटोवैक्यूम लॉन्चर शुरू हुआ 2013-05-29 15:07:00 एमडीटी लॉग: स्थानीय कनेक्शन इस बिल्ड 2013 द्वारा समर्थित नहीं हैं -05-29 15:07:00 एमडीटी संदर्भ: कॉन्फ़िगरेशन फ़ाइल की पंक्ति 1 "C:/PostgreSQL/data/pg_hba.conf" 2013-05-29 15:07:00 MDT घातक: pg_hba.conf लोड नहीं हो सका 2013- 05-29 15:07:00 एमडीटी लॉग: स्थानीय कनेक्शन इस बिल्ड द्वारा समर्थित नहीं हैं 2013-05-29 15:07:00 एमडीटी संदर्भ: कॉन्फ़िगरेशन फ़ाइल की पंक्ति 1 "C:/PostgreSQL/data/pg_hba.conf" 2013 -05-29 15:07:00 एमडीटी घातक: pg_hba.conf लोड नहीं हो सका 2013-05-29 15:09:03 एमडीटी लॉग: तेजी से शटडाउन अनुरोध प्राप्त हुआ 2013-05-29 15:09:03 एमडीटी लॉग: किसी को निरस्त करना सक्रिय लेनदेन 2013-05-29 15:09:03 एमडीटी लॉग: ऑटोवैक्यूम लॉन्चर बंद हो रहा है 2013-05-29 15:09:03 एमडीटी लॉग: बंद हो रहा है 2013-05-29 15:09:03 एमडीटी लॉग: डेटाबेस सिस्टम है शट डाउन

ऐसा प्रतीत होता है कि pg_hba.conf फ़ाइल में कुछ समस्याएँ हैं, जो इस प्रकार दिखती हैं:

लोकल सभी ट्रस्ट होस्ट सभी 127.0.0.1 255.255.255.255 ट्रस्ट होस्ट सभी 0.0.0.0 0.0.0.0 ट्रस्ट

इंटरनेट पर कई सुझावों के अनुसार, मैंने शीर्ष पंक्ति को कई अलग-अलग विकल्पों में बदलने की कोशिश की (सभी होस्ट सभी ट्रस्ट/होस्ट सभी 127.0.0.1/32 ट्रस्ट/होस्ट सभी 192.168.0.100/24 ​​​​ट्रस्ट, आदि)। यह मेरे लिए समझ में आया क्योंकि लॉग फ़ाइल में कहा गया था कि स्थानीय कनेक्शन पोस्टग्रेज द्वारा समर्थित नहीं हैं और इस लाइन की ओर भी इशारा किया गया है। हालाँकि, मेरे किसी भी परिवर्तन का कोई प्रभाव नहीं पड़ा। मैंने प्रत्येक परिवर्तन के बाद अपने कंप्यूटर को पुनरारंभ करने का प्रयास किया, लेकिन कुछ भी नहीं बदला।

जब मैंने उदाहरणों की तलाश की कि pg_hba.conf फ़ाइल आम तौर पर कैसी दिखती है, तो उदाहरण मेरी फ़ाइल से थोड़े अलग दिखे। मैंने देखा कि PostgreSQL प्रोग्राम फ़ाइल में, pg_hba.conf के अलावा, एक फ़ाइल 20130529-150444-old-pg_hba.conf भी थी, जो मुझे ऑनलाइन मिले उदाहरणों की तरह दिखती थी। इस फ़ाइल में इन अंतिम कुछ पंक्तियों से पहले टिप्पणियों की कई पंक्तियाँ हैं:

# प्रकार डेटाबेस उपयोगकर्ता पता विधि # आईपीवी4 स्थानीय कनेक्शन: सभी 127.0.0.1/32 एमडी5 को होस्ट करें # आईपीवी6 स्थानीय कनेक्शन: सभी को होस्ट करें::1/128 एमडी5 # # प्रतिकृति विशेषाधिकार वाले उपयोगकर्ता द्वारा लोकलहोस्ट से प्रतिकृति कनेक्शन की अनुमति दें। #होस्ट प्रतिकृति पोस्टग्रेज 127.0.0.1/32 एमडी5 #होस्ट प्रतिकृति पोस्टग्रेज::1/128 एमडी5

मैं उम्मीद कर रहा था कि यह मूल pg_hba.conf फ़ाइल थी, और अगर मैंने नई फ़ाइल को पुराने की सामग्री से बदल दिया, तो पोस्टग्रेज़ फिर से काम करना शुरू कर देगा। ऐसी कोई किस्मत नहीं होती. मैं उम्मीद कर रहा था कि pg_log फ़ाइल में अधिक त्रुटि फ़ाइलें लॉग की जाएंगी, यह देखने के लिए कि क्या पहले रिपोर्ट की गई त्रुटि दूर हो गई थी या कुछ बदल गया था, लेकिन कोई और फ़ाइल लॉग नहीं की गई थी।

मैंने कई दिनों तक एक ऑनलाइन सेवा की खोज की और मुझे कुछ भी काम नहीं मिला। इस बारे में खेद है लंबा प्रश्न, लेकिन मैं संपूर्ण होना चाहता था और सभी प्रासंगिक जानकारी शामिल करना चाहता था। अगर कोई इस मुद्दे पर कुछ प्रकाश डाल सके या सुझाव दे सके तो मैं इसकी सराहना करूंगा।

यह संदेश मुख्य रूप से मेरे लिए व्यक्तिगत रूप से और हमारी सहायता टीम के लिए है, क्योंकि... नीचे वर्णित समस्या के समान समस्या बार-बार घटित होती है और आपको इसे हल करने के लिए बुनियादी चरणों को याद रखने की आवश्यकता है।

तो, कहानी इस तथ्य से शुरू होती है कि 30 दिसंबर को 11-30 बजे मुझे एक संदेश के साथ एक कॉल आया कि हमारे ग्राहकों में से एक ने हमारा सिस्टम शुरू नहीं किया क्योंकि यह डेटाबेस से कनेक्ट नहीं हो सका (हम DBMS के रूप में PostgreSql संस्करण 8.1 का उपयोग करते हैं) ) . लोग इसे यह कहकर समझाते हैं कि एक घंटे पहले लाइट चली गई और कंप्यूटर गलत तरीके से बंद हो गया, और इसे चालू करने के बाद, सब कुछ काम करना बंद कर दिया :)

हमारे सिस्टम के अच्छे उपयोगकर्ता जानते हैं कि स्टार्ट बटन कहाँ है और जानते हैं कि सिस्टम में दो घड़ियाँ नहीं हैं, "एक संख्याओं के साथ और दूसरी रेत के साथ।" इसलिए, केवल एक चीज जो मैं फोन पर करने में सक्षम था वह डीबीएमएस सेवा को मैन्युअल रूप से शुरू करने का प्रयास करना था, लेकिन नतीजा यह हुआ कि सेवा शुरू नहीं हुई। मुझे दूरस्थ रूप से कनेक्ट करने में सक्षम होने के लिए इंटरनेट को उस कंप्यूटर पर अग्रेषित करना पड़ा (उन कंप्यूटरों पर जहां हमारा इंटरनेट सिस्टम स्थापित है)।

से जुड़ने के बाद दूरस्थ कंप्यूटरमैंने सेवा शुरू करने का प्रयास किया और निम्न संदेश प्राप्त हुआ: "स्थानीय कंप्यूटर" पर "पोस्टग्रेस्क्ल डेटाबेस सर्वर 8.1 सेवा" शुरू हुई और फिर बंद हो गई। कुछ सेवाएँ स्वचालित रूप से बंद हो जाती हैं यदि उनके पास करने के लिए कुछ नहीं है, जैसे कि प्रदर्शन लॉग और अलर्ट सेवा। हम्म...

समस्या यह है कि उस समय यह एकमात्र जानकारी उपलब्ध थी... PostgreSql लॉग खाली हैं, उनमें कोई प्रविष्टियाँ नहीं हैं, और सिस्टम लॉग भी खाली हैं।

सेवाओं को डिबग करना कोई सरल प्रक्रिया नहीं है, इसलिए कई डेवलपर कुंजियों का उपयोग करके एक सामान्य कंसोल एप्लिकेशन की तरह सेवा एप्लिकेशन लॉन्च करने के लिए तंत्र प्रदान करते हैं कमांड लाइन. और PostgreSql इस संबंध में कोई अपवाद नहीं है; चलाने के लिए आपको निम्नलिखित कमांड का उपयोग करने की आवश्यकता है (संकेत: यह कमांड केवल सिस्टम के गैर-प्रशासनिक उपयोगकर्ता से ही चलाया जा सकता है, हालाँकि, यदि आप इसके बारे में भूल जाते हैं, तो PostgreSql आपको बहुत जल्दी इसकी याद दिलाएगा):

पोस्टग्रेस -डी " "

हम इसे चलाते हैं और त्रुटि संदेश देखते हैं। मेरे मामले में, संदेश कुछ इस तरह लग रहा था:

घातक - लॉक फ़ाइल "पोस्टमास्टर.पिड" में फर्जी डेटा

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

इस संदेश का नैतिक यह है कि यदि डेटाबेस विफल हो गया है, या सिस्टम में कुछ अन्य समस्याएं आ गई हैं, तो डीबीएमएस (या संपूर्ण सिस्टम) को पुनः स्थापित करने और सभी डेटा खोने से पहले, आपको कम से कम यह पता लगाने का प्रयास करना चाहिए कि क्या है समस्या यह है कि शायद इस बात की पूरी संभावना है कि आप अपना प्रदर्शन पहले जैसा नहीं कर पाएंगे कट्टरपंथी तरीकों से.

Z.Y. सभी को नव वर्ष की शुभकामनाएँ और शुभकामनाएँ कि आपके सिस्टम स्थिर और विश्वसनीय हों और आपकी नींद खराब न करें, लेकिन अगर कुछ समस्याएँ उत्पन्न भी हुईं, तो इस स्थिति से निपटने के लिए आपके पास हमेशा विकल्प तैयार थे।

यह संदेश मुख्य रूप से मेरे लिए व्यक्तिगत रूप से और हमारी सहायता टीम के लिए है, क्योंकि... नीचे वर्णित समस्या के समान समस्या बार-बार घटित होती है और आपको इसे हल करने के लिए बुनियादी चरणों को याद रखने की आवश्यकता है।

तो, कहानी इस तथ्य से शुरू होती है कि 30 दिसंबर को 11-30 बजे मुझे एक संदेश के साथ एक कॉल आया कि हमारे ग्राहकों में से एक ने हमारा सिस्टम शुरू नहीं किया क्योंकि यह डेटाबेस से कनेक्ट नहीं हो सका (हम DBMS के रूप में PostgreSql संस्करण 8.1 का उपयोग करते हैं) ) . लोग इसे यह कहकर समझाते हैं कि एक घंटे पहले लाइट चली गई और कंप्यूटर गलत तरीके से बंद हो गया, और इसे चालू करने के बाद, सब कुछ काम करना बंद कर दिया :)

हमारे सिस्टम के अच्छे उपयोगकर्ता जानते हैं कि स्टार्ट बटन कहाँ है और जानते हैं कि सिस्टम में दो घड़ियाँ नहीं हैं, "एक संख्याओं के साथ और दूसरी रेत के साथ।" इसलिए, केवल एक चीज जो मैं फोन पर करने में सक्षम था वह डीबीएमएस सेवा को मैन्युअल रूप से शुरू करने का प्रयास करना था, लेकिन नतीजा यह हुआ कि सेवा शुरू नहीं हुई। मुझे दूरस्थ रूप से कनेक्ट करने में सक्षम होने के लिए इंटरनेट को उस कंप्यूटर पर अग्रेषित करना पड़ा (उन कंप्यूटरों पर जहां हमारा इंटरनेट सिस्टम स्थापित है)।

दूरस्थ कंप्यूटर से कनेक्ट करने के बाद, मैंने सेवा शुरू करने का प्रयास किया और निम्न संदेश प्राप्त हुआ: "स्थानीय कंप्यूटर" पर "पोस्टग्रेस्क्ल डेटाबेस सर्वर 8.1 सेवा" शुरू हुई और फिर बंद हो गई। कुछ सेवाएँ स्वचालित रूप से बंद हो जाती हैं यदि उनके पास करने के लिए कुछ नहीं है, जैसे कि प्रदर्शन लॉग और अलर्ट सेवा। हम्म...

समस्या यह है कि उस समय यह एकमात्र जानकारी उपलब्ध थी... PostgreSql लॉग खाली हैं, उनमें कोई प्रविष्टियाँ नहीं हैं, और सिस्टम लॉग भी खाली हैं।

सेवाओं को डिबग करना कोई सरल प्रक्रिया नहीं है, इसलिए कई डेवलपर कमांड लाइन स्विच का उपयोग करके एक सामान्य कंसोल एप्लिकेशन की तरह सेवा एप्लिकेशन लॉन्च करने के लिए तंत्र प्रदान करते हैं। और PostgreSql इस संबंध में कोई अपवाद नहीं है; चलाने के लिए आपको निम्नलिखित कमांड का उपयोग करने की आवश्यकता है (संकेत: यह कमांड केवल सिस्टम के गैर-प्रशासनिक उपयोगकर्ता से ही चलाया जा सकता है, हालाँकि, यदि आप इसके बारे में भूल जाते हैं, तो PostgreSql आपको बहुत जल्दी इसकी याद दिलाएगा):

पोस्टग्रेस -डी " "

हम इसे चलाते हैं और त्रुटि संदेश देखते हैं। मेरे मामले में, संदेश कुछ इस तरह लग रहा था:

घातक - लॉक फ़ाइल "पोस्टमास्टर.पिड" में फर्जी डेटा

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

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

Z.Y. सभी को नव वर्ष की शुभकामनाएँ और शुभकामनाएँ कि आपके सिस्टम स्थिर और विश्वसनीय हों और आपकी नींद खराब न करें, लेकिन अगर कुछ समस्याएँ उत्पन्न भी हुईं, तो इस स्थिति से निपटने के लिए आपके पास हमेशा विकल्प तैयार थे।