Postgresql 9.0 में प्रतिकृति

शुभ दिन। यह मानते हुए कि पोस्टग्रेजेक्यू 9 की रिलीज के बाद से एक निश्चित समय बीत चुका है, मैंने इसकी एक नई विशेषता - देशी प्रतिकृति को आजमाने का फैसला किया। जैसा कि आप जानते हैं, नया तंत्र मास्टर से दास के लिए XLOG के हस्तांतरण पर आधारित है। वसा लाभों में से एक ALTERs का सामान्य प्रसंस्करण है। दूसरे शब्दों में, 9 वें संस्करण का प्रशासक स्लोनी के बिना कर सकता है।



हम मानते हैं कि आपके द्वारा पहले से ही स्थापित किए गए पैकेज (और यदि नहीं, तो आप उन्हें यहां डेबियन / उबंटू के लिए प्राप्त कर सकते हैं ), testdb डेटाबेस बनाया गया है। मैं यह मानते हुए प्रक्रिया का वर्णन करता हूं कि आपके पास /var/lib/postgresql/9.0/ में पोस्टग्रेज डेटाबेस है, यदि यह मामला नहीं है, तो आपके लिए सही पथ का उपयोग करें।



तो, चलिए चलते हैं:

1. सुनें && pg_hba.conf को कॉन्फ़िगर करें

मान लीजिए कि गुरु का आईपी 192.168.0.1 है, और दास का 192.168.0.2 है। तब postgresql.conf में सुनने की रेखा इस तरह दिखाई देगी:

listen_addresses = '192.168.0.1'







और, विज़ार्ड में pg_hba.conf पर ऐसी प्रविष्टि होगी:

host replication postgres 192.168.0.2/32 trust







2. हम मास्टर पर सब कुछ शामिल करते हैं जो प्रतिकृति के लिए आवश्यक है

# , . hot_standby archive ().

wal_level = hot_standby



#

max_wal_senders = 2



# ? - , .

wal_keep_segments = 32



# ( , , ). , . , .

archive_mode = on

archive_command = 'cp %p /var/lib/postgresql/9.0/main/archive/%f'







अब विज़ार्ड को फिर से शुरू करने की आवश्यकता है।



3. हम मास्टर से दास को डेटाबेस भेजते हैं।

हमें कुछ ऐसा चाहिए जो नेटवर्क पर डेटा भेज सके। मैंने rsync का उपयोग किया, हालाँकि आप किसी अन्य टूल का उपयोग कर सकते हैं। हम गुलाम पर postgresql को बुझाते हैं, और फिर विज़ार्ड पर निम्नलिखित कार्य करते हैं:

$ psql -c "SELECT pg_start_backup('label', true)"

$ rsync -a /var/lib/postgresql/9.0/main/ slave:/var/lib/postgresql/9.0/main/ --exclude postmaster.pid

$ psql -c "SELECT pg_stop_backup()"









4. दास पर hot_standby चालू करें

Postgresql.conf में जोड़ें:

hot_standby = on







5. दास पर प्रतिकृति कॉन्फ़िगरेशन बनाएं।

ऐसा करने के लिए, फ़ाइल पुनर्प्राप्ति में .conf (आपको इसे बनाने की आवश्यकता है), जो कि /var/lib/postgresql/9.0/main में है, निम्नलिखित लिखें:

standby_mode = 'on'

primary_conninfo = 'host=192.168.0.1 port=5432 user=postgres'

trigger_file = '/var/lib/postgresql/9.0/main/trigger'

restore_command = 'cp /var/lib/postgresql/9.0/main/archive/%f "%p"'







अलग से, मैं ट्रिगर_फाइल के बारे में बात करूंगा। डिफ़ॉल्ट रूप से, यह नहीं होना चाहिए। यह आवश्यक है ताकि एक फकैप के मामले में आप (इस फ़ाइल को बनाकर) प्रतिकृति प्रक्रिया को रोक सकें और स्लेटी को योग्य बना सकें।



6. हो गया!

गुलाम चलाओ। अगर टीम गुलाम है

ps aux | grep receiver





कुछ ऐसा दिखा

postgres 1953 0.0 0.0 101980 4156 ? Ss 19:19 0:00 postgres: wal receiver process streaming 2/B40001D0





(पढ़ें - वॉल रिसीवर के विवरण के साथ एक पोस्टग्रेज प्रक्रिया है) - हम मान सकते हैं कि सब कुछ काम करता है।



7. निगरानी करना

अब दुखद बातों के बारे में थोड़ा - हाथी के विपरीत, देशी प्रतिकृति को पता नहीं है कि मानव-पठनीय प्रारूप में अंतराल कैसे प्रदर्शित किया जाए।

प्रतिकृति की निगरानी करने के संभावित तरीकों में से एक मास्टर / दास पर जर्नल की स्थिति में अंतर पर विचार करना है:

psql -c "SELECT pg_current_xlog_location()" -h192.168.0.1

--------------------------

0/2000000

(1 row)



psql -c "select pg_last_xlog_replay_location()" -h192.168.0.2

pg_last_xlog_replay_location

------------------------------

0/2000000

(1 row)






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

अधिक सही तरीके से, मैं टाइमस्टैम्प प्रकार के एक क्षेत्र के साथ एक प्लेट के निर्माण को देखता हूं, एक एकल रिकॉर्ड रखता हूं और एक बार प्रत्येक एन-सेकंड (उदाहरण के लिए 30) वर्तमान समय में इसके मूल्य को अपडेट करता हूं। फिर, विज़ार्ड में रिकॉर्ड से गुलाम पर एक ही प्लेट की सामग्री को घटाते हुए, हम अंतराल समय प्राप्त करते हैं।



8. अगर कोई भयानक बात हुई

एक नियम के रूप में, दो मामलों के लिए प्रतिकृति की आवश्यकता होती है: लोड संतुलन और मामले में मास्टर को कुछ होता है। इसलिए, यदि स्वामी ने इनकार कर दिया, तो आपके कार्य कुछ इस तरह होंगे:

a) गुलाम (पैराग्राफ 5 में वर्णित) पर एक ट्रिगर फ़ाइल बनाएँ। दास रिकॉर्डिंग के लिए खुल जाएगा, प्रतिकृति को रोक देगा - आप इसे ग्राहकों को स्थानांतरित कर सकते हैं।

बी) अगला, जब मास्टर की सेवा करने वाली मशीन ऑपरेशन पर लौटती है - हम प्रक्रिया को उल्टा करते हैं - मूल मास्टर से एक प्रतिकृति बनाते हैं - मास्टर पर पांचवें आइटम को निष्पादित करते हैं। जब यह ठीक हो जाए - गुलाम पर ट्रिगर फ़ाइल को हटा दें - सब कुछ सामान्य पर वापस आ जाना चाहिए।



PS यह पाठ इस विकि पृष्ठ का एक मुफ्त अनुवाद है



All Articles