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

MySQL प्रतिकृति का उपयोग करके भू-वितरित डेटाबेस क्लस्टर की स्थापना

असफलता का एकल बिंदु (एसपीओएफ)  एक सामान्य कारण है कि क्यों संगठन अपने डेटाबेस वातावरण की उपस्थिति को भौगोलिक रूप से किसी अन्य स्थान पर वितरित करने की दिशा में काम कर रहे हैं। यह डिजास्टर रिकवरी और बिजनेस निरंतरता रणनीतिक योजनाओं का हिस्सा है।

आपदा पुनर्प्राप्ति (DR) योजना तकनीकी प्रक्रियाओं को शामिल करती है जो प्राकृतिक आपदाओं, दुर्घटनाओं (जैसे मानवीय त्रुटि), या घटनाओं (जैसे आपराधिक कृत्य) जैसे अप्रत्याशित मुद्दों की तैयारी को कवर करती है।

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

इस ब्लॉग में, हम दिखाएंगे कि आप MySQL प्रतिकृति का उपयोग करके ऐसा कैसे कर सकते हैं। हम कवर करेंगे कि आप अपने डेटा को MySQL क्लस्टर के वर्तमान भूगोल से दूर एक अलग देश में स्थित किसी अन्य डेटाबेस नोड में कैसे कॉपी कर सकते हैं। इस उदाहरण के लिए, हमारा लक्षित क्षेत्र us-east पर आधारित है, जबकि मेरा ऑन-प्रिमाइसेस फिलीपींस में स्थित एशिया में है।

मुझे भू-स्थान डेटाबेस क्लस्टर की आवश्यकता क्यों है?

यहां तक ​​​​कि शीर्ष सार्वजनिक क्लाउड प्रदाता, Amazon AWS का दावा है कि वे डाउनटाइम या अनपेक्षित आउटेज से पीड़ित हैं (जैसे कि 2017 में हुआ था)। मान लें कि आप अपने ऑन-प्रिमाइसेस के अलावा AWS को अपने द्वितीयक डेटासेंटर के रूप में उपयोग कर रहे हैं। आपके पास इसके अंतर्निहित हार्डवेयर या उन आंतरिक नेटवर्क तक कोई आंतरिक पहुंच नहीं हो सकती है जो आपके कंप्यूट नोड्स का प्रबंधन कर रहे हैं। ये पूरी तरह से प्रबंधित सेवाएं हैं जिनके लिए आपने भुगतान किया है, लेकिन आप इस तथ्य से बच नहीं सकते कि यह किसी भी समय आउटेज से पीड़ित हो सकता है। यदि ऐसी भौगोलिक स्थिति में रुकावट आती है तो आपके पास एक लंबा डाउनटाइम हो सकता है।

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

इन पहचाने गए परिदृश्यों के साथ, संगठन अलग-अलग क्लाउड प्रदाताओं के लिए अपने बुनियादी ढांचे का विस्तार करना शुरू करते हैं और अधिक उच्च अपटाइम (यदि संभव हो तो 99.99999999999 पर), कम आरपीओ, और कोई एसपीओएफ रखने के लिए अलग-अलग भू-स्थानों पर नोड्स लगाते हैं।

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

वांछित वास्तुकला सेटअप

इस ब्लॉग में, वांछित सेटअप सरल है और आजकल बहुत सामान्य कार्यान्वयन है। इस ब्लॉग के लिए वांछित वास्तु सेटअप पर नीचे देखें:

इस ब्लॉग में, मैं जनता के रूप में Google Cloud Platform (GCP) को चुनता हूं क्लाउड प्रदाता, और अपने स्थानीय नेटवर्क को अपने ऑन-प्रिमाइसेस डेटाबेस परिवेश के रूप में उपयोग कर रहा हूं।

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

सर्वश्रेष्ठ और सबसे कुशल तरीका

MySQL/Percona/MariaDB डेटाबेस वातावरण के लिए, सबसे अच्छा और कुशल तरीका है कि आप अपने डेटाबेस की बैकअप प्रतिलिपि लें, इसे तैनात या तत्काल करने के लिए लक्ष्य नोड को भेजें। इस दृष्टिकोण का उपयोग करने के विभिन्न तरीके हैं या तो आप mysqldump, mydumper, rsync का उपयोग कर सकते हैं, या Percona XtraBackup/Mariabackup का उपयोग कर सकते हैं और अपने लक्ष्य नोड पर जाने वाले डेटा को स्ट्रीम कर सकते हैं।

mysqldump का उपयोग करना

mysqldump आपके पूरे डेटाबेस का एक तार्किक बैकअप बनाता है या आप चुनिंदा डेटाबेस, टेबल, या यहां तक ​​कि विशिष्ट रिकॉर्ड की सूची चुन सकते हैं जिन्हें आप डंप करना चाहते थे।

एक साधारण कमांड जिसका उपयोग आप पूर्ण बैकअप लेने के लिए कर सकते हैं, हो सकता है,

$ mysqldump --single-transaction --all-databases --triggers --routines --events --master-data | mysql -h <target-host-db-node -u<user> -p<password> -vvv --show-warnings

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

$ mysqldump --single-transaction --all-databases --triggers --routines --events --master-data | gzip > mydata.db

$ scp mydata.db <target-host>:/some/path

फिर mysqldump को लक्ष्य डेटाबेस नोड पर इस तरह चलाएँ,

zcat mydata.db | mysql

mysqldump का उपयोग करके तार्किक बैकअप का उपयोग करने के साथ नकारात्मक पक्ष यह है कि यह धीमा है और डिस्क स्थान की खपत करता है। यह एक एकल धागे का भी उपयोग करता है ताकि आप इसे समानांतर में नहीं चला सकें। वैकल्पिक रूप से, आप mydumper का उपयोग कर सकते हैं, खासकर जब आपका डेटा बहुत बड़ा हो। mydumper को समानांतर में चलाया जा सकता है लेकिन यह mysqldump की तुलना में उतना लचीला नहीं है।

xtrabackup का उपयोग करना

xtrabackup एक भौतिक बैकअप है जहां आप लक्ष्य नोड को स्ट्रीम या बाइनरी भेज सकते हैं। यह बहुत ही कुशल है और इसका उपयोग ज्यादातर नेटवर्क पर बैकअप स्ट्रीमिंग करते समय किया जाता है, खासकर जब लक्ष्य नोड अलग भूगोल या अलग क्षेत्र का हो। ClusterControl xtrabackup का उपयोग करता है जब एक नए दास को प्रोविज़न या इंस्टेंट किया जाता है, भले ही वह कहाँ स्थित हो, जब तक कि कार्रवाई से पहले एक्सेस और अनुमति सेट की गई हो।

यदि आप इसे मैन्युअल रूप से चलाने के लिए xtrabackup का उपयोग कर रहे हैं, तो आप इस प्रकार कमांड चला सकते हैं,

## लक्ष्य नोड

$  socat -u tcp-listen:9999,reuseaddr stdout 2>/tmp/netcat.log | xbstream -x -C /var/lib/mysql

## स्रोत नोड

$ innobackupex --defaults-file=/etc/my.cnf --stream=xbstream --socket=/var/lib/mysql/mysql.sock  --host=localhost --tmpdir=/tmp /tmp | socat -u stdio TCP:192.168.10.70:9999

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

स्रोत नोड पर, यह innobackupex perl स्क्रिप्ट निष्पादित करता है जो पृष्ठभूमि में xtrabackup को आमंत्रित करता है और नेटवर्क पर भेजे जाने वाले डेटा को स्ट्रीम करने के लिए xbstream का उपयोग करता है। Socat कमांड पोर्ट 9999 को खोलता है और अपना डेटा वांछित होस्ट को भेजता है, जो इस उदाहरण में 192.168.10.70 है। फिर भी, सुनिश्चित करें कि इस आदेश का उपयोग करते समय आपके पास socat और xbstream स्थापित है। सोसैट का उपयोग करने का वैकल्पिक तरीका एनसी है, लेकिन सोसाइट एनसी की तुलना में अधिक उन्नत सुविधाएँ प्रदान करता है जैसे कि सीरियलाइज़ेशन जैसे कई क्लाइंट पोर्ट पर सुन सकते हैं।

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

दक्षता, अवलोकन, और गति

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

नोड को GCP तक विस्तारित करना

अपने भू-स्थान डेटाबेस क्लस्टर को सेटअप करने के लिए, अपने क्लस्टर का विस्तार करने और अपने क्लस्टर की एक स्नैपशॉट प्रतिलिपि बनाने के लिए, आप एक नया दास जोड़ सकते हैं। जैसा कि पहले उल्लेख किया गया है, ClusterControl xtrabackup (MariaDB 10.2 आगे के लिए mariabackup) का उपयोग करेगा और आपके क्लस्टर के भीतर एक नया नोड तैनात करेगा। इससे पहले कि आप अपने GCP कंप्यूट नोड्स को अपने लक्ष्य नोड्स के रूप में पंजीकृत कर सकें, आपको पहले उपयुक्त सिस्टम उपयोगकर्ता को उसी सिस्टम उपयोगकर्ता के समान सेटअप करना होगा, जिसे आपने ClusterControl में पंजीकृत किया था। आप इसे अपने /etc/cmon.d/cmon_X.cnf में सत्यापित कर सकते हैं, जहां X क्लस्टर_आईडी है। उदाहरण के लिए, नीचे देखें:

# grep 'ssh_user' /etc/cmon.d/cmon_27.cnf 

ssh_user=maximus

maximus (इस उदाहरण में) आपके GCP कंप्यूट नोड्स में मौजूद होना चाहिए। आपके GCP नोड्स के उपयोगकर्ता के पास sudo या सुपर व्यवस्थापकीय विशेषाधिकार होने चाहिए। इसे पासवर्ड रहित एसएसएच एक्सेस के साथ भी सेटअप किया जाना चाहिए। सिस्टम उपयोगकर्ता और इसके आवश्यक विशेषाधिकारों के बारे में कृपया हमारे दस्तावेज़ीकरण को अधिक पढ़ें।

आइए नीचे सर्वरों की एक उदाहरण सूची है (जीसीपी कंसोल से:कंप्यूट इंजन डैशबोर्ड):

उपरोक्त स्क्रीनशॉट में, हमारा लक्ष्य क्षेत्र यूएस-ईस्ट पर आधारित है क्षेत्र। जैसा कि पहले उल्लेख किया गया है, मेरा स्थानीय नेटवर्क ओपनवीपीएन का उपयोग करके जीसीपी (इसके विपरीत) से गुजरने वाली एक सुरक्षित परत पर स्थापित है। इसलिए जीसीपी से मेरे स्थानीय नेटवर्क पर जाने वाले संचार को भी वीपीएन टनल पर समझाया गया है।

GCP में स्लेव नोड जोड़ें

नीचे दिए गए स्क्रीनशॉट से पता चलता है कि आप यह कैसे कर सकते हैं। नीचे दिए गए चित्र देखें:

जैसा कि दूसरे स्क्रीनशॉट में देखा गया है, हम नोड 10.142.0.12 को लक्षित कर रहे हैं और इसका सोर्स मास्टर 192.168.70.10 है। ClusterControl फायरवॉल, सुरक्षा मॉड्यूल, पैकेज, कॉन्फ़िगरेशन और सेटअप को निर्धारित करने के लिए पर्याप्त स्मार्ट है जिसे करने की आवश्यकता है। कार्य गतिविधि लॉग का एक उदाहरण नीचे देखें:

बहुत आसान काम है, है ना?

GCP MySQL क्लस्टर को पूरा करें

हमें GCP क्लस्टर में दो और नोड्स जोड़ने की जरूरत है ताकि एक बैलेंस टोपोलॉजी हो सके जैसा कि हमारे पास स्थानीय नेटवर्क में था। दूसरे और तीसरे नोड के लिए, सुनिश्चित करें कि मास्टर आपके GCP नोड की ओर इशारा कर रहा हो। इस उदाहरण में, मास्टर 10.142.0.12 है। इसे कैसे करें, नीचे देखें,

जैसा कि ऊपर स्क्रीनशॉट में देखा गया है, मैंने 10.142.0.12 (दास) का चयन किया है ) जो पहला नोड है जिसे हमने क्लस्टर में जोड़ा है। पूरा परिणाम इस प्रकार दिखता है,

जियो-लोकेशन डेटाबेस क्लस्टर का आपका अंतिम सेटअप

अंतिम स्क्रीनशॉट से, हो सकता है कि इस प्रकार की टोपोलॉजी आपके लिए आदर्श सेटअप न हो। अधिकतर, यह एक मल्टी-मास्टर सेटअप होना चाहिए, जहाँ आपका DR क्लस्टर स्टैंडबाय क्लस्टर के रूप में कार्य करता है, जहाँ आपका ऑन-प्रिमाइसेस प्राथमिक सक्रिय क्लस्टर के रूप में कार्य करता है। ऐसा करने के लिए, यह ClusterControl में काफी सरल है। इस लक्ष्य को प्राप्त करने के लिए निम्न स्क्रीनशॉट देखें।

आप बस अपने वर्तमान मास्टर को उस लक्ष्य मास्टर तक खींच सकते हैं जिसे होना चाहिए प्राथमिक-स्टैंडबाय लेखक के रूप में सेटअप करें, यदि आपका ऑन-प्रिमाइसेस नुकसान में है। इस उदाहरण में, हम टारगेटिंग होस्ट 10.142.0.12 (GCP कंप्यूट नोड) को ड्रैग करते हैं। अंतिम परिणाम नीचे दिखाया गया है:

तब यह वांछित परिणाम प्राप्त करता है। MySQL प्रतिकृति का उपयोग करके अपने भू-स्थान डेटाबेस क्लस्टर को विकसित करने के लिए आसान और बहुत तेज़।

निष्कर्ष

जियो-लोकेशन डेटाबेस क्लस्टर होना कोई नई बात नहीं है। एसपीओएफ से परहेज करने वाली कंपनियों और संगठनों के लिए यह एक वांछित सेटअप रहा है जो लचीलापन और कम आरपीओ चाहते हैं।

इस सेटअप के लिए मुख्य टेकअवे सुरक्षा, अतिरेक और लचीलापन हैं। इसमें यह भी शामिल है कि आप अपने नए क्लस्टर को एक अलग भौगोलिक क्षेत्र में कैसे तैनात कर सकते हैं। जबकि ClusterControl इसकी पेशकश कर सकता है, उम्मीद है कि हम इस पर जल्द ही और सुधार कर सकते हैं जहाँ आप एक बैकअप से कुशलता से बना सकते हैं और ClusterControl में अपना नया अलग क्लस्टर बना सकते हैं, इसलिए बने रहें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL गैलेरा क्लस्टर 4.0 में नया क्या है?

  2. सेंटोस/आरएचईएल 7 और डेबियन सिस्टम पर मारियाडीबी 5.5 को मारियाडीबी 10.1 में अपग्रेड कैसे करें

  3. एडब्ल्यूएस पर एक MySQL गैलेरा क्लस्टर को तैनात करने का आसान तरीका

  4. मारियाडीबी में मुद्रा के रूप में एक संख्या प्रारूपित करें

  5. मारियाडीबी में नंबरों को कैसे प्रारूपित करें