सवाल PostgreSQL प्रतिकृति


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

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

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


45
2018-05-22 06:22


मूल


मुझे इसका उत्तर देने में दिलचस्पी है। एक MySQL पृष्ठभूमि से आ रहा है, पीएसक्यूएल के लिए प्रतिकृति विकल्प कम से कम कहने के लिए कृषि हैं। - Dave Cheney
हाँ, अब तक मैंने जो भी विकल्प खेला है, उसमें काफी कमी आई है। उम्मीद है कि मुझे कुछ याद आ रही है .. लेकिन मुझे नहीं लगता कि मैं हूं - f4nt
मुझे संदेह है कि कुछ और नहीं है, लेकिन मैं किसी को गलत साबित करने के लिए उत्सुक हूं - Vinko Vrsalovic
बीटीडब्ल्यू, क्या आपने pgsql-general@postgresql.org की कोशिश की है? - Vinko Vrsalovic


जवाब:


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

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

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

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

  • केवल गर्म स्टैंडबाय गुलामों को पढ़ें:

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

जो कि संयोजन में MySQL- शैली प्रतिकृति के उपयोग की आसानी को हासिल करने का लक्ष्य है, बग / समस्याएं MySQL के साथ पोस्टग्रेएसक्यूएल से विश्वसनीयता उपयोगकर्ताओं को पता है।

2008 में पोस्टग्रेएसक्यूएल कोर टीम के एक मैनिफेस्ट द्वारा यह सब निकाल दिया गया था:

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

सबसे बड़े उपयोगकर्ता आधार के साथ इस दिन के लिए पोस्टग्रेएसक्यूएल प्रतिकृति समाधान स्लोनी -1 (लिखने के लिए अधिक महंगा है, स्कीमा में बदलाव करता है), डब्ल्यूएएल शिपिंग / वाल्मग्री (गुलामों को ऑनलाइन इस्तेमाल नहीं किया जा सकता है) और स्काइप / स्काईटोल्स से पीजीक्यू / लोंडिस्ट ( एक समाप्त समाधान से अधिक उपकरण / बिल्डिंग ब्लॉक)।

मैंने लॉग शिपिंग, वाल्मग्र और स्लोनी -1 पर कुछ चीजें लिखी हैं, देखें

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


9
2018-05-29 15:47



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


और अंगूठी में एक और समाधान फेंकने के लिए: rubyrep।

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

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

5
2017-07-01 06:41





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

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


4
2018-05-27 18:02





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

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

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

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

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

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


2
2018-05-22 13:25



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


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

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

विफलता हालांकि अंतर्निहित नहीं है। आपको अपने एप्लिकेशन कनेक्शन स्ट्रिंग्स को बदलने या सॉफ्टवेयर की दूसरी परत के पीछे डीबी कनेक्शन को खराब करने की आवश्यकता होगी।

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

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


2
2018-05-27 17:53





यहां एक चर्चा देखें, शायद यह मदद कर सकती है:

http://blog.endpoint.com/2009/05/competitors-to-bucardo-version-1.html

तथा

बुकार्डो संस्करण वन के प्रतिद्वंद्वी, पृष्ठ पर नीचे पाए गए:

http://www.planetpostgresql.org/


1
2018-05-22 09:09





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

अब इसे है लिखने के लिए लॉग-हेड लॉग (वाल) शिपिंग का उपयोग कर पोस्टग्रेस के साथ अपनी खुद की प्रतिकृति रोल करना संभव है:

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

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

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

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


1
2018-05-27 10:10



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


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


1
2018-05-29 18:18