MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

MySQL गैलेरा क्लस्टर स्ट्रीमिंग प्रतिकृति के लिए एक गाइड:भाग एक

स्ट्रीमिंग प्रतिकृति एक नई सुविधा है जिसे गैलेरा क्लस्टर के 4.0 रिलीज के साथ पेश किया गया था। गैलेरा पूरे क्लस्टर में समकालिक रूप से प्रतिकृति का उपयोग करता है, लेकिन इस रिलीज से पहले 2GB से अधिक के राइट-सेट समर्थित नहीं थे। स्ट्रीमिंग प्रतिकृति अब आपको बड़े राइट-सेट को दोहराने की अनुमति देती है, जो आपके डेटाबेस में बल्क इंसर्ट या डेटा लोड करने के लिए एकदम सही है।

पिछले ब्लॉग में हमने स्ट्रीमिंग प्रतिकृति और मारियाडीबी 10.4 के साथ बड़े लेनदेन को संभालने के बारे में लिखा था, लेकिन इस ब्लॉग को लिखने तक कोडरशिप ने अभी तक नए गैलेरा क्लस्टर का अपना संस्करण जारी नहीं किया था। हालांकि, Percona ने Percona XtraDB क्लस्टर 8.0 का अपना प्रयोगात्मक बाइनरी संस्करण जारी किया है जो निम्नलिखित विशेषताओं पर प्रकाश डालता है...

  • बड़े लेनदेन का समर्थन करने वाली स्ट्रीमिंग प्रतिकृति

  • सिंक्रनाइज़ेशन फ़ंक्शन क्रिया समन्वय की अनुमति देते हैं (wsrep_last_seen_gtid, wsrep_last_write_gtid, wsrep_sync_wait_upto_gtid)

  • अधिक बारीक और बेहतर त्रुटि लॉगिंग। लॉगिंग को नियंत्रित करने में सहायता के लिए wsrep_debug अब एक बहु-मूल्यवान चर है, और लॉगिंग संदेशों में काफी सुधार किया गया है।

  • प्रतिकृति नोड पर कुछ DML और DDL त्रुटियों को या तो अनदेखा किया जा सकता है या दबाया जा सकता है। कॉन्फ़िगर करने के लिए wsrep_ignore_apply_errors चर का उपयोग करें।

  • एकाधिक सिस्टम तालिकाएं क्लस्टर स्थिति की स्थिति के बारे में अधिक जानने में सहायता करती हैं।

  • गैलेरा 4 का wsrep इंफ्रास्ट्रक्चर गैलेरा 3 की तुलना में अधिक मजबूत है। इसमें बेहतर स्टेट हैंडलिंग, बेहतर प्रेडिक्टेबलिटी और एरर हैंडलिंग के साथ कोड का तेजी से निष्पादन होता है।

गैलेरा क्लस्टर 4.0 में नया क्या है?

नई स्ट्रीमिंग प्रतिकृति सुविधा

स्ट्रीमिंग प्रतिकृति के साथ, लेनदेन प्रसंस्करण के दौरान लेनदेन को धीरे-धीरे छोटे टुकड़ों में दोहराया जाता है (यानी वास्तविक प्रतिबद्धता से पहले, हम कई छोटे आकार के टुकड़ों को दोहराते हैं)। सभी क्लस्टर नोड्स में लेन-देन की स्थिति को संरक्षित करते हुए, प्रतिकृति टुकड़े को दास धागे में लागू किया जाता है। टुकड़े सभी नोड्स में ताले रखते हैं और बाद में विरोध नहीं किया जा सकता है।

गैलेरा सिस्टमटेबल्स 

MySQL डेटाबेस तक पहुंच वाले डेटाबेस व्यवस्थापक और क्लाइंट इन तालिकाओं को पढ़ सकते हैं, लेकिन वे उन्हें संशोधित नहीं कर सकते क्योंकि डेटाबेस स्वयं किसी भी संशोधन की आवश्यकता होगी। यदि आपके सर्वर में ये टेबल नहीं हैं, तो हो सकता है कि आपका सर्वर गैलेरा क्लस्टर के पुराने संस्करण का उपयोग कर रहा हो।

#> show tables from mysql like 'wsrep%';

+--------------------------+

| Tables_in_mysql (wsrep%) |

+--------------------------+

| wsrep_cluster            |

| wsrep_cluster_members    |

| wsrep_streaming_log      |

+--------------------------+

3 rows in set (0.12 sec)

नए सिंक्रोनाइज़ेशन फंक्शन 

यह संस्करण wsrep तुल्यकालन संचालन में उपयोग के लिए SQL कार्यों की एक श्रृंखला का परिचय देता है। आप उनका उपयोग ग्लोबल ट्रांजेक्शन आईडी प्राप्त करने के लिए कर सकते हैं जो या तो अंतिम बार लिखे गए या अंतिम बार देखे गए लेनदेन पर आधारित है। अगला लेन-देन शुरू करने से पहले, आप किसी विशिष्ट GTID को दोहराने और लागू करने के लिए प्रतीक्षा करने के लिए नोड भी सेट कर सकते हैं।

बुद्धिमान दाता चयन

गैलेरा 3.x के बाद से मौजूद कुछ कम बताई गई विशेषताओं में बुद्धिमान दाता चयन और क्लस्टर क्रैश रिकवरी शामिल हैं। ये मूल रूप से गैलेरा 4 के लिए योजनाबद्ध थे, लेकिन ग्राहकों की आवश्यकताओं के कारण बड़े पैमाने पर इसे पहले के रिलीज में बनाया गया था। जब गैलेरा 3 में डोनर नोड चयन की बात आती है, तो स्टेट स्नैपशॉट ट्रांसफर (एसएसटी) डोनर को यादृच्छिक रूप से चुना गया था। हालाँकि, गैलेरा 4 के साथ, आपको दाता चुनने की बात आती है, तो आपको एक अधिक बुद्धिमान विकल्प मिलता है, क्योंकि यह एक ऐसे दाता के पक्ष में होगा जो एक वृद्धिशील राज्य हस्तांतरण (आईएसटी) प्रदान कर सकता है, या उसी खंड में एक दाता चुन सकता है। एक डेटाबेस व्यवस्थापक के रूप में, आप इसे wsrep_sst_donor सेट करके बाध्य कर सकते हैं।

MySQL Galera Cluster Streaming Replication का उपयोग क्यों करें?

लंबे समय तक चलने वाले लेन-देन

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

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

बड़े लेन-देन

अपनी रिपोर्ट या विश्लेषण में डेटा लोड करते समय यह बहुत सहायक होता है। बड़ी मात्रा में डेटा लोड करने के लिए बल्क इंसर्ट बनाना, डिलीट करना, अपडेट करना या LOAD DATA स्टेटमेंट का उपयोग करना इस श्रेणी में गिर सकता है। हालांकि यह इस बात पर निर्भर करता है कि आप अपने डेटा को पुनर्प्राप्ति या संग्रहण के लिए कैसे प्रबंधित करते हैं। आपको इस बात का ध्यान रखना चाहिए कि स्ट्रीमिंग प्रतिकृति की अपनी सीमाएँ हैं जैसे कि प्रमाणन कुंजियाँ रिकॉर्ड लॉक से उत्पन्न होती हैं।

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

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

हॉट रिकॉर्ड/हॉट स्पॉट

हॉट रिकॉर्ड या पंक्तियाँ आपकी तालिका की वे पंक्तियाँ हैं जो लगातार अपडेट होती रहती हैं। ये डेटा आपके संपूर्ण डेटाबेस (जैसे समाचार फ़ीड, एक काउंटर जैसे विज़िट या लॉग की संख्या) का सबसे अधिक दौरा किया जा सकता है और अत्यधिक ट्रैफ़िक प्राप्त कर सकता है। स्ट्रीमिंग प्रतिकृति के साथ, आप पूरे क्लस्टर में महत्वपूर्ण अपडेट को बाध्य कर सकते हैं।

जैसा कि कोडरशिप में गैलेरा टीम ने बताया

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

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

स्ट्रीमिंग प्रतिकृति का उपयोग करते समय ध्यान देने योग्य बातें

  • प्रमाणीकरण कुंजी रिकॉर्ड लॉक से उत्पन्न होती हैं, इसलिए वे गैप लॉक या अगले कुंजी लॉक को कवर नहीं करती हैं। यदि लेन-देन गैप लॉक लेता है, तो यह संभव है कि एक लेन-देन, जिसे किसी अन्य नोड पर निष्पादित किया जाता है, एक राइट सेट लागू करेगा जो गैप लॉग का सामना करता है और स्ट्रीमिंग लेनदेन को रोक देगा।
  • स्ट्रीमिंग प्रतिकृति को सक्षम करते समय, राइट-सेट लॉग को wsrep_streaming_log तालिका में लिखा जाता है जो क्रैश होने की स्थिति में दृढ़ता को बनाए रखने के लिए mysql सिस्टम डेटाबेस में पाया जाता है, इसलिए यह तालिका पुनर्प्राप्ति पर कार्य करती है। अत्यधिक लॉगिंग और एलिवेटेड प्रतिकृति ओवरहेड के मामले में, स्ट्रीमिंग प्रतिकृति खराब लेनदेन थ्रूपुट दर का कारण बनेगी। उच्च शिखर भार तक पहुंचने पर यह एक प्रदर्शन बाधा हो सकती है। इसलिए, यह अनुशंसा की जाती है कि आप केवल सत्र-स्तर पर स्ट्रीमिंग प्रतिकृति को सक्षम करें और उसके बाद केवल उन लेनदेन के लिए जो इसके बिना सही ढंग से नहीं चलेंगे।
  • बड़े लेन-देन में कटौती के लिए स्ट्रीमिंग प्रतिकृति का उपयोग करना सबसे अच्छा उपयोग मामला है
  • टुकड़े का आकार ~10K पंक्तियों पर सेट करें
  • फ्रैगमेंट वेरिएबल सत्र चर हैं और गतिशील रूप से सेट किए जा सकते हैं
  • इंटेलिजेंट एप्लिकेशन जरूरत के आधार पर स्ट्रीमिंग प्रतिकृति को चालू/बंद कर सकता है

निष्कर्ष

पढ़ने के लिए धन्यवाद, भाग दो में हम चर्चा करेंगे कि गैलेरा क्लस्टर स्ट्रीमिंग प्रतिकृति को कैसे सक्षम किया जाए और आपके सेटअप के लिए परिणाम कैसा दिख सकता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे कम () मारियाडीबी में काम करता है

  2. MySQL और MariaDB के लिए क्षमता योजना - आयाम भंडारण आकार

  3. MySQL और MariaDB डेटाबेस बैकअप संसाधन

  4. मारियाडीबी में DAYOFYEAR () कैसे काम करता है

  5. MySQL इंडेक्स के लिए एक गाइड