PostgreSQL 9.1 में स्वचालित विफलता


18

कैसे एक सेटअप PostgreSQL 9.1 में स्वत: विफलता के लिए दो समान सर्वर सेटअप करता है।

ओएस

Centos 5
PostgreSQL 9.1 स्रोत से संकलित किया गया
पोस्टग्रेज उपयोगकर्ता खाता दोनों मशीनों पर मौजूद है और दोनों मशीनों से कनेक्ट करने के लिए एक ssh पासवर्ड रहित कुंजी है।

मेरा वर्तमान सेटअप:

मास्टर सर्वर कॉन्फ़िगरेशन:

postgresql.conf:

listen_address = '*'
wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 16    
wal_keep_segments = 8 
archive_mode = on    
archive_command = 'cp "%p" /opt/pgsql91/archive/"%f"'  

pg_hba.conf:

 host  replication   all   10.0.66.1/32      trust
 host  replication   all   10.0.66.2/32      trust

स्टैंडबाय सर्वर

postgresql.conf और pg_hba.conf मास्टर सर्वर पर कॉन्फ़िगर किए गए के समान हैं।

recovery.conf:

 standby_mode = 'on'
 primary_conninfo = 'host=10.0.66.1'
 trigger_file = '/opt/pgsql91/data/trigger.txt'

HzRoot के लिए धन्यवाद, अब मैं समझता हूं कि सर्वर को स्टैंडबाय से मास्टर में कैसे स्विच किया जाए।

निम्न आदेशों का उपयोग करते हुए, मैं नए दास को नए मास्टर के साथ सिंक्रनाइज़ कर सकता हूं और फिर प्रतिकृति बैकअप और रनिंग प्राप्त कर सकता हूं।

नए मास्टर पर (10.0.66.2)

  1. su - पोस्टग्रेट्स
  2. स्पर्श ट्रिगर। txt / opt / pgsql91 / data / में
  3. पुनर्प्राप्ति .conf पुनर्प्राप्ति .one बन जाता है
  4. psql -c "; SELECT pg_start_backup ('बैकअप', सच)";
  5. rsync -a -v -e ssh / opt / pgsql91 / data / 10.0.66.1:/opt/pgsql91/data/ --exclude postmaster.pid
  6. psql -c "; SELECT pg_stop_backup ()";

नए दास पर (10.0.66.1)

  1. Recovery.conf बनाएँ: cp recovery.done to recovery.conf
  2. vi पुनर्प्राप्ति .conf परिवर्तन IP पता: Primary_conninfo = 'होस्ट = 10.0.66.2'
  3. postgresql शुरू करें

तो मेरे सवाल अब हैं:

  1. क्या यह भूमिकाओं को बदलने का सही तरीका है?
  2. क्या किसी ने इस प्रक्रिया को स्वचालित कर दिया है, यदि ऐसा है तो आपने क्या किया?
  3. यदि तुल्यकालिक प्रतिकृति सक्षम है, तो मैंने देखा कि नया मास्टर सर्वर कोई लेनदेन नहीं करेगा क्योंकि यह दास के जवाब देने की प्रतीक्षा कर रहा है। हालांकि कोई भी दास नहीं है क्योंकि दूसरा सर्वर, पुराना मास्टर नीचे है। क्या यह सही है या क्या मुझे नए गुलाम होने के दौरान समकालिक प्रतिकृति को अस्थायी रूप से अक्षम करने की आवश्यकता है?

1. हाँ सही 2. यह हो सकता है कि उस प्रक्रिया को स्वचालित न करना बेहतर है। 3. इसलिए आपको कम से कम 2 गुलाम और 1 मास्टर चाहिए। क्योंकि जैसा कि आपने सिंक कहा। समन्‍वयन को कम से कम 2 नोड्स पुश करने की आवश्‍यकता होती है जो समन्‍वयित करता है अगर यह सिर्फ एक मास्टर नोड है, तो आप कमिट नहीं कर पाएंगे ..
sftsz

चरण 4, 5 और 6 नए मास्टर पर आवश्यक नहीं हैं क्योंकि, ठीक है, आप के साथ शुरू करने के लिए दोहरा रहे हैं। दूसरा, क्या होगा अगर मास्टर मर गया और ऑफ़लाइन था - आप इससे कनेक्ट नहीं कर पाएंगे। चरण 4,5, और 6 आम तौर पर प्रतिकृति पूल में शामिल होने वाले एक नए दास नोड पर किए जाते हैं।
एरिक

@ जैसा कि मैंने इसके साथ खेला था, पुराने मास्टर को काम करने की स्थिति में वापस लाने के लिए 4,5,6 चरणों की आवश्यकता होती है। स्टैंडबाय को नया प्राथमिक बनाने से तुरंत नया वाल एंट्री हो जाता है, इसलिए यह अब पुराने मास्टर से 1 प्रविष्टि है। पुराने मास्टर को स्टैंडी मोड में शुरू करने से मुझ पर त्रुटियां होती हैं, इसलिए मुझे नए मास्टर के साथ सिंक करने के लिए पुराने मास्टर पर 4,5,6 चरण बनाने थे (pg_basebackup का उपयोग करके, जो नए मास्टर से पूरे xlog को स्ट्रीम कर सकता है - पोस्टग्रेज में 4,5,6 के स्थान पर चरण = = 9.1 मुझे लगता है)। क्या मैं सही हूं या मैंने कुछ गलत किया है और यह आवश्यक नहीं है?
Dalibor Filus

जवाबों:


8

की जाँच करें repmrg :

repmgr एक ओपन सोर्स टूल का एक सेट है जो DBA और सिस्टम एडमिनिस्ट्रेटर को PostgreSQL डेटाबेस के क्लस्टर को प्रबंधित करने में मदद करता है।

PostgreSQL 9 में पेश किए गए हॉट स्टैंडबाई क्षमता का लाभ उठाकर, repmgr उच्च उपलब्धता और मापनीयता आवश्यकताओं के साथ डेटाबेस की स्थापना और प्रबंधन की प्रक्रिया को बहुत सरल करता है।

repmgr प्रशासन और दैनिक प्रबंधन को सरल बनाता है, उत्पादकता बढ़ाता है और PostgreSQL क्लस्टर की कुल लागत को कम करता है:

  • प्रतिकृति प्रक्रिया की निगरानी करना; DBA को उच्च जारी करने की अनुमति देना
  • उपलब्धता संचालन जैसे स्विच-ओवर और असफल-ओवर।

यह दो काम करता है:

  1. repmgr: कमांड प्रोग्राम जो आपके क्लस्टर पर कार्य करता है और फिर बाहर निकलता है
  2. repmgrd: प्रबंधन और निगरानी डेमॉन जो क्लस्टर देखता है और दूरस्थ क्रियाओं को स्वचालित कर सकता है।

स्वचालित विफलता के लिए, repmgrd ट्रिक करता है और pgPool की तरह आपके नेटवर्क में SPOF नहीं है। हालांकि, सभी बधाइयों की निगरानी करना और विफलता के बाद उन्हें वापस लाना अभी भी महत्वपूर्ण है।

वर्जन 2.0 आरपीएम सहित रिलीज़ होने वाली है।


नमस्कार फ्रैंक, आपके उत्तर के लिए धन्यवाद। मैंने फटकार के बारे में नहीं सुना है और मैं इसे जरूर आजमाऊंगा।
क्रेग एफ्रेइन

हैलो फिर से फ्रैंक, धन्यवाद के लिए धन्यवाद, यह वही था जो मैं देख रहा था। मैं आखिरकार आज इसे आजमाने के लिए तैयार हो गया।
क्रेग इफरीन

4

अपनी पुनर्प्राप्ति में .conf फ़ाइल में आपको एक पंक्ति जोड़नी चाहिए जो पोस्टग्रेस को गुरु से दास तक विफल बताती है। आपको जोड़ना चाहिए

trigger_file = '/any/file/to/trigger'

जब आप दिए गए पथ पर इस फ़ाइल को बनाते हैं। नोड्स बदल जाएंगे। (फ़ाइल कुछ भी शामिल नहीं है यह सिर्फ एक ट्रिगर है)

आप पर अतिरिक्त जानकारी प्राप्त कर सकते हैं स्ट्रीमिंग प्रतिकृति

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


आपके उत्तर के लिए धन्यवाद। यह कुछ दिन पहले हो सकता है जब मैं इसका परीक्षण कर सकता हूं लेकिन मैं निश्चित रूप से आपके पास वापस आऊंगा।
क्रेग एफ्रेइन

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

यह बहुत बढ़िया है। PostgreSQL के प्रतिकृति कार्यान्वयन में लचीलेपन की कमी के बारे में मेरी बहुत आलोचना है, लेकिन यह विफलता को संभालने का एक शानदार, सरल तरीका है।
हारून ब्राउन

1
हालाँकि यह तब भी मास्टर की भूमिका निभाता है, जब मास्टर स्वयं चल रहा हो (इसलिए आपके पास दो स्वामी हैं)। यह स्वयं पोस्टग्रेज द्वारा स्वचालित नहीं है।
Dalibor Filus

0

क्या किसी ने इसके लिए pgpool-II का उपयोग करने पर विचार किया है?

http://pgpool.projects.postgresql.org/contrib_docs/simple_sr_setting/index.html

मैं PostgreSQL के लिए प्रतिकृति स्थापित कर रहा हूं। ऐसा लगता है कि जब पुराने मालिक वापस आते हैं तो मुश्किल हिस्सा होता है।

मैंने जो कुछ भी पढ़ा है, उससे लगता है कि यह अधिकांश को स्वचालित कर सकता है। हालाँकि मुझे यकीन नहीं है कि अगर PostgreSQL 9.1 में पहले से मौजूद प्रतिकृति सुविधाओं का लाभ उठाया जाए।


1
pgPool विफलता का एक एकल बिंदु है, जब आप नीचे जाते हैं तो आप सब कुछ ढीला कर देते हैं।
फ्रैंक हाइकेन्स

1
आपके उत्तर के लिए धन्यवाद। मैंने सेंटपोस और डेबियन दोनों पर मिश्रित परिणामों के साथ पीजीपूल II की कोशिश की है और आखिरकार हार मान ली है।
क्रेग एफ्रेइन

1
Haproxy के साथ pgpool II का उपयोग क्यों नहीं किया जाता है? एक दिल की धड़कन और अस्थायी आईपी सुनने के साथ?
15

ऐतिहासिक संदर्भ के लिए, pgpool-ii भी वर्तमान में विंडोज पर नहीं चलता है।
tommed
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.