प्रतिलिपि के लिए परिचय फैलाने वाले सूचकांक

2.8.2 से एक नई प्रमुख विशेषता उपलब्ध है - फैलाने वाले सूचकांकों के लिए प्रतिलिपि।

प्रतिलिपि Galera पुस्तकालय पर आधारित है (जिसका उपयोग Percona के mysql फोर्क और MariaDB द्वारा भी किया जाता है)। हमने विचार किया कि इसे जमीन से बनाने के बजाय एक सिद्ध और प्रदर्शित समाधान का उपयोग करना बेहतर होगा जो बहुत अधिक समय लेता।

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

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

<img src="manticore-replication-optimized.webp" alt="img">

प्रतिलिपि सेटअप

आवश्यकताएँ:

    • एक API listen पोर्ट को एक विशेष इंटरफ़ेस (0.0.0.0 नहीं) पर खोला जाना चाहिए।

      • प्रतिलिपि के लिए उपयोग किए जाने वाले विशेष इंटरफ़ेस पर खोले गए पोर्टों की एक श्रृंखला। प्रति क्लस्टर कम से कम 2 पोर्ट का उपयोग करने की सिफारिश की गई है।

      • नोड को कॉन्फ़िगर करने के लिए आदेश निष्पादित करने के लिए एक खुला SphinxQL पोर्ट।

      • data_dir को searchd कॉन्फ़िगरेशन में सेट किया जाना चाहिए। यह अस्थायी प्रतिलिपि डेटा के लिए आवश्यक है।

वैकल्पिक:

  • server_id - प्रति नोड एक अद्वितीय संख्या, UUID बीज के लिए उपयोग की जाती है, यदि मौजूद नहीं है तो डेमन MAC पता के आधार पर एक जनरेट करेगा।

searchd कॉन्फ़िगरेशन इस तरह दिखनी चाहिए:

searchd {
listen = 9306:mysql41
listen = my_ip1:9312
listen = my_ip1:9350-9459:replication
...
data_dir = /var/lib/manticore/data_dir
server_id = 1
...
}

पहले नोड पर हम SphinxQL का उपयोग करके कनेक्ट करते हैं और क्लस्टर बनाते हैं:

mysql> CREATE CLUSTER test;

इसके वैकल्पिक आप नए क्लस्टर से जुड़ने जा रहे नोड्स को भी निर्दिष्ट कर सकते हैं। IP के अलावा, हमें API पोर्ट भी निर्दिष्ट करने की आवश्यकता है।

mysql> CREATE CLUSTER test  'my_ip1:9312,my_ip2:9312,my_ip3:9312' as nodes;

परिभाषित किए गए नोड्स की सूची का उपयोग क्लस्टर पुनःआरंभ करने की स्थिति में किया जाता है। यदि नोड्स को निर्माण के समय परिभाषित नहीं किया गया है या और अधिक नोड्स जोड़े जाते हैं, तो सभी सक्रिय नोड्स की सूची को अपडेट करने के लिए ALTER CLUSTER cluster_name UPDATE nodes का कमांड चलाना होगा, अन्यथा पुनःआरंभ की स्थिति में सूची में नहीं होने वाले नोड्स को मैन्युअल रूप से क्लस्टर में वापस जोड़ा जाना चाहिए।

अगला हम अन्य नोड्स से कनेक्ट करते हैं और उन्हें मौजूदा नोड (इसके IP और API पोर्ट का उपयोग करके) के साथ जोड़कर क्लस्टर में शामिल करते हैं:

mysql> JOIN CLUSTER test AT 'my_ip1:9312';

इस पल तक, हमने एक क्लस्टर परिभाषित किया है और अगला कदम किसी सूचकांक (या अधिक) को इसमें जोड़ना है। यह किसी भी नोड से किया जा सकता है:

mysql> ALTER CLUSTER test ADD pq1;

नए संग्रहीत प्रश्नों को सूचकांक pq1 में जोड़ने के लिए, हमारे सामान्य INSERT प्रश्न में एक छोटा बदलाव आवश्यक है: सूचकांक नाम को क्लस्टर नाम के साथ उपसर्ग करना आवश्यक है:

mysql> INSERT INTO test:pq1 VALUES('samsung');

क्लस्टर उपसर्ग केवल लेखन बयानों (INSERT, REPLACE,DELETE TRUNCATE) के लिए आवश्यक है। पढ़ने के बयानों (CALL PQ, SELECT और DESCRIBE) को सामान्य सूचकांक नाम का उपयोग करने की अनुमति है।

अगला क्या है?

प्रतिलिपि विकल्पों के बारे में अधिक जानकारी के लिए दस्तावेज़ की जांच करें।

हमारे ऑनलाइन पाठ्यक्रमों में आप एक प्रतिलिपि के लिए परिचय पाठ्यक्रम के साथ-साथ एक सरल पुनर्प्राप्ति विफलता पाठ्यक्रम भी पा सकते हैं।

इस लेख को लिखने के समय वास्तविक समय के सूचकांकों के लिए प्रतिलिपि विकासाधीन है।

मैंटीकोर सर्च इंस्टॉल करें

मैंटीकोर सर्च इंस्टॉल करें