PostgreSQL प्रतिकृति


45

हम लगातार कार्यालय के आसपास यह बल्लेबाजी करते हैं, और यह सवाल सामने आता रहता है। आप PostgreSQL प्रतिकृति के साथ कैसे व्यवहार करते हैं? मैं आवश्यक रूप से उन्नत समूहों के बारे में बात नहीं कर रहा हूं, बस इसे मास्टर-स्लेव, मास्टर-मल्टीस्लेव, और मास्टर-मास्टर के साथ सरल रखना है। मुझे लगता है कि MySQL के लिए इसे स्थापित करना आमतौर पर बहुत सरल है। सही नहीं होने पर फेलओवर सीधा है, खासकर कॉन्फ़िगर करना कितना आसान है। हमने स्लोनी के साथ खेला है, लेकिन यह थोड़ा बहुत हाथों पर है (स्कीमा परिवर्तन के लिए हस्तक्षेप की आवश्यकता होती है, नए डेटाबेस को हस्तक्षेप की आवश्यकता होती है, आदि)। PGPool2 बहुत अच्छा था, जब तक कि एक नोड नीचे नहीं गया और हम एक सुंदर तरीका नहीं खोज सके (सब कुछ नीचे लाने और गिर नोड को फिर से शुरू करने के अलावा) सिंक में वापस प्रतिकृति पाने के लिए। मूल रूप से यहाँ मैं क्या देख रहा हूँ:

  • आसान सेटअप (मैं मुश्किल सेटअप के लिए व्यवस्थित करूँगा, लेकिन विस्तार करना आसान है)
  • सरलीकृत असफलता
  • बस एक गिर नोड वापस लाने के लिए समय की आवश्यकता होती है (यानी mysql की तरह। सर्वर नीचे चला जाता है, आप इसे ऊपर लाते हैं, और प्रतिकृति को पकड़ने के लिए प्रतीक्षा करते हैं)
  • स्कीमा परिवर्तन प्रतिकृति को नहीं तोड़ते हैं
  • सर्वर में एक नया डेटाबेस जोड़ना सहज है (जैसे कि mysql, आप पूरे DB सर्वर को दोहरा सकते हैं, इसलिए मास्टर पर एक नया डेटाबेस बनाया जाता है, यह स्वचालित रूप से दास के लिए प्रचारित करता है)

MySQL इन सबसे अच्छी तरह से निपटता है, लेकिन मैं PostgreSQL के लिए एक निश्चित शौक रखता हूं। इसके अलावा, हमारे पास कुछ परिस्थितियां हैं जहां यह हमारा एकमात्र विकल्प है, और हम मिश्रण में प्रतिकृति जोड़ना चाहते हैं। आप वर्तमान में क्या उपयोग कर रहे हैं, और आप अपने समाधान के बारे में कैसा महसूस करते हैं? यह एक MySQL बनाम PostgreSQL पोस्ट नहीं है, मैं वादा करता हूं, क्योंकि यह वह नहीं है जिसे मैं शुरू करने की कोशिश कर रहा हूं। :)


3
मुझे इसके उत्तर में दिलचस्पी है। MySQL पृष्ठभूमि से आने वाले, PSQL के लिए प्रतिकृति विकल्प कम से कम कहने के लिए कृषि हैं।
डेव चेनी

हाँ, अब तक मेरे द्वारा खेले गए हर विकल्प में महत्वपूर्ण कमियां थीं। उम्मीद है कि मुझे कुछ स्पष्ट याद आ रहा है .. लेकिन मुझे नहीं लगता कि मैं हूँ
f4nt

मुझे शक है कि कुछ और नहीं है, लेकिन मैं किसी को गलत साबित करने के लिए उत्सुक हूं
विंको वर्सलोविच

BTW, क्या आपने pgsql-general@postgresql.org की कोशिश की है?
विंको वर्सालोविच

जवाबों:


9

संक्षिप्त उत्तर - यदि आपके ऑनलाइन पठनीय दासों की आवश्यकता है, तो PostgreSQL के लिए अभी तक ऐसा कोई समाधान नहीं है।

वर्तमान में इस क्षेत्र में दो प्रमुख विकास परियोजनाएं चल रही हैं, जो कि पोस्टग्रेसीक्यू 9.0 (स्प्रिंग / समर 2010) में शामिल हैं, अर्थात्:

  • तुल्यकालिक प्रतिकृति:

http://wiki.postgresql.org/wiki/NTT's_Development_Projects

  • केवल हॉट स्टैंडबाय दास पढ़ें:

http://wiki.postgresql.org/wiki/Hot_Standby

जो संयोजन में MySQL शैली प्रतिकृति का उपयोग करने में आसानी प्राप्त करने के उद्देश्य से कीड़े / मुद्दों MySQL प्लस विश्वसनीयता उपयोगकर्ताओं PostgreSQL से जानते हैं।

2008 में PostgreSQL कोर टीम के एक प्रकट रूप से यह सब बंद कर दिया गया था:

http://archives.postgresql.org/pgsql-hackers/2008-05/msg00913.php

PostgreSQL प्रतिकृति इस दिन के लिए सबसे बड़े उपयोगकर्ता आधार के साथ समाधान Slony-I (लिखने के लिए और अधिक महंगा है, स्कीमा में व्यापक बदलाव करता है), Wal शिपिंग / Walmgr (दास ऑनलाइन इस्तेमाल नहीं किया जा सकता) और Skype / Skytools से pgQ / lingiste ( एक समाप्त समाधान से अधिक उपकरण / बिल्डिंग ब्लॉक)।

मैंने लॉग शिपिंग पर कुछ चीजें लिखी हैं, Walmgr और Slony-I, देखें

अधिक जानकारी के लिए http://blogs.amd.co.at/mt/mt-search.cgi?blog_id=1&tag=pgrep&limit=20


6
तुल्यकालिक प्रतिकृति + हॉट स्टैंडबाय अब उपलब्ध हैं - उपलब्ध तकनीकों के अच्छे सारांश के लिए wiki.postgresql.org/wiki/… देखें
डेविड फ्रेजर

5

और रिंग में एक और समाधान फेंकने के लिए: रूबीरेप।

अपनी आवश्यकताओं की तुलना करने के लिए:

  • आसान सेटअप
    हाँ, यह वास्तव में रूबीरेप का प्राथमिक फोकस है।
  • सरलीकृत असफलता
    हाँ। वास्तव में माणिक्य मास्टर-मास्टर प्रतिकृति करता है - पर विफल होने के लिए, कोई भी कार्रवाई आवश्यक नहीं है। बस दूसरे डेटाबेस का उपयोग करना शुरू करें।
  • स्कीमा परिवर्तन प्रतिकृति को नहीं तोड़ते
    हाँ।
    गैर-प्राथमिक कुंजी परिवर्तनों के लिए प्रतिकृति को भी बंद नहीं करना है (लेकिन सुनिश्चित करें कि स्कीमा एक ही समय में दोनों तरफ परिवर्तन है)
    तालिकाओं को जोड़ने / निकालने के लिए, बस प्रतिकृति डेमॉन को पुनरारंभ करें। केवल एक तालिका के प्राथमिक कुंजी कॉलम को बदलने में थोड़ी मेहनत लगती है।
  • सर्वर में एक नया डेटाबेस जोड़ना सहज है (जैसे कि mysql, आप पूरे DB सर्वर को दोहरा सकते हैं, इसलिए मास्टर पर एक नया डेटाबेस बनाया जाता है, यह स्वचालित रूप से दास के लिए प्रचारित करता है)
    यह केवल एक सीमित तरीके से समर्थित है: आपका सर्वर सेटअप एक बार में केवल एक डेटाबेस की प्रतिकृति बनाता है। (लेकिन एक से अधिक डेटाबेस के लिए प्रतिकृति सेट करना बहुत आसान है।)

4

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

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


2

आपकी आवश्यकताओं से ऐसा लगता है कि PITR आपकी समस्या को हल करने का सबसे आसान तरीका है:

ऑन-लाइन बैकअप और पॉइंट-इन-टाइम रिकवरी (PITR)

आपने यह नहीं कहा कि आपको दास सर्वर को क्वेरी करने की आवश्यकता है, इसलिए PITR सही हो सकता है।

यह संस्करण 8.0 से PostgreSQL का मानक हिस्सा है, इसलिए शायद आपको पहले से ही इसे चलाने और चलाने के लिए आवश्यक सब कुछ है।

यदि आपको निर्देश बहुत अधिक मिलते हैं, तो SkyTools WalMgr पर एक नज़र डालें, जो हॉट-स्टैंडबाय डेटा सिंगल कमांड कार्य को बनाने / विफल करने की प्रक्रिया करेगा।

अधिक जटिल प्रतिकृति परिदृश्यों के लिए, मेरे पास Slony-1 का अच्छा अनुभव था, लेकिन PostgreSQL में कई अच्छे प्रतिकृति / HA विकल्प उपलब्ध हैं।


और वे विकल्प हैं ...?
डेव चेनी

... ब्लॉग पोस्ट में सूचीबद्ध blog.endpoint.com/2009/05/competitors-to-bucardo-version-1.html एक उत्तर में संदर्भित ...
dpavlin

2

यदि आप अतुल्यकालिक मास्टर / दास प्रतिकृति चाहते हैं तो Londiste पर विचार करें (स्काइप से स्काइटूल पैकेज का हिस्सा) wiki.postgresql.org/wiki/Londiste_Tutorial

इसे स्थापित करना आसान है, एक नया DB जोड़ना आसान है, प्रतिकृति सिर्फ "कैच अप" है।

फ़ेलओवर हालांकि अंतर्निहित नहीं है। आपको अपने एप्लिकेशन कनेक्शन स्ट्रिंग को बदलने या सॉफ़्टवेयर की एक और परत के पीछे DB कनेक्शन को बाधित करने की आवश्यकता होगी।

कुछ स्कीमा परिवर्तन आसान हैं। दूसरों को अधिक मुश्किल है। यह आपके आवेदन पर निर्भर करता है। स्काइटोलस का अगला संस्करण (वर्जन 3.0) डीडीएल को संभालने वाला है और इसमें विफलता को आसान बनाने के लिए सुविधाएं शामिल हैं।

हम Slony खोजने के लिए बहुत दर्दनाक उपयोग करने के बाद Londiste में चले गए।



1

वास्तव में आप जो भी खोज रहे हैं, उसे प्रदान करने के लिए कोई भी मुक्त / खुला स्रोत नहीं है। यदि आप ऐसा कुछ चाहते हैं जो इतना टर्न-की है, तो विभिन्न तृतीय-पक्ष वाणिज्यिक प्रतिकृति समाधान देखें।

अब, यह है रोल लिखने सिर लॉग (वाल) शिपिंग का उपयोग कर Postgres के साथ अपने स्वयं प्रतिकृति के छाँटना संभव:

http://www.postgresql.org/docs/8.3/interactive/warm-standby.html

यह मूल रूप से है, जहां आप एक द्वितीयक नोड को निरंतर रिकवरी मोड में रख सकते हैं और हर {छोटे अंतराल} में लेनदेन लॉग आयात कर सकते हैं। पोस्टग्रैज कॉन्फ़िगरेशन में "स्टब्स" होता है, जो आपको कुछ चीजें करने की अनुमति देता है जब एक पोस्ट पूरा हो जाता है जब एक वाल पूरा हो जाता है और इसलिए नहीं, और यही वह सेटअप है, जो उन "स्टब्स" का उपयोग करने पर पूर्वनिर्धारित है।

हालाँकि, यह आपको मास्टर-मास्टर और / या परिपत्र प्रतिकृति करने की अनुमति नहीं देता है।

किसी भी मामले में, यह निश्चित रूप से उन्मूलन के लिए काम करता है, लेकिन मैं इसे "आसान सेटअप," "सरल फेलओवर," "सहज" या ऐसा कुछ भी नहीं कहूंगा।


यह उत्तर PITR सुझाव का डुप्लिकेट है, क्योंकि PITR WAL :-) का उपयोग करता है
dpavlin

1

'नया डेटाबेस जोड़ने' वाली चीज़ को छोड़कर आप मैमथ रेप्लिकेटर ( https://projects.commandprompt.com/public/replicator ) आज़मा सकते हैं । यह ओपन-सोर्स है, सेटअप करने में आसान है और फेलओवर का समर्थन करता है। प्रमुख सीमाएँ एकल डेटाबेस और DDL परिवर्तनों को दोहराने में असमर्थता हैं, दोनों TODO सूची में हैं।


0

Postgres-R होनहार लग रहा था, लेकिन मुझे नहीं पता कि क्या परियोजना अभी भी जीवित है।


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