रेप्लिकेशंस डेटाबेस नोड्स के बीच स्थिरता सुनिश्चित करने के लिए कई सर्वरों में ट्रांजेक्शनल डेटा का साझाकरण है। एक मास्टर इन्सर्ट या अपडेट लेगा, और उन्हें अपने डेटा सेट पर लागू करेगा, जबकि दास अपने डेटा को मास्टर डेटा सेट में किए गए परिवर्तनों के अनुसार बदल देगा। मास्टर को आमतौर पर प्राथमिक के रूप में संदर्भित किया जाता है और यह आगे लिखें लॉग (वाल) में किए गए परिवर्तनों को रिकॉर्ड करता है। दूसरी ओर, दासों को सेकेंडरी के रूप में संदर्भित किया जाता है और वे अपने डेटा को REDO लॉग से दोहराते हैं - इस मामले में WAL।
PostgreSQL में कम से कम 3 प्रतिकृति दृष्टिकोण हैं:
बिल्टिन प्रतिकृति या स्ट्रीमिंग प्रतिकृति।
इस दृष्टिकोण में, डेटा को प्राथमिक नोड से द्वितीयक नोड में दोहराया जाता है। हालाँकि, यह कई असफलताओं के साथ आता है जो हैं:
- एक नया माध्यमिक शुरू करने में कठिनाइयाँ। इसके लिए आवश्यक होगा कि आप पूरे राज्य को दोहराएं, जो संसाधन गहन हो सकता है।
- अंतर्निहित निगरानी और विफलता का अभाव। बाद की विफलता के मामले में एक माध्यमिक को प्राथमिक में पदोन्नत किया जाना है। अक्सर इस प्रचार के परिणामस्वरूप प्राथमिक की अनुपस्थिति के दौरान डेटा असंगति हो सकती है।
वाल से पुनर्निर्माण
यह दृष्टिकोण किसी तरह स्ट्रीमिंग प्रतिकृति दृष्टिकोण को नियोजित करता है क्योंकि प्राथमिक द्वारा बनाए गए बैकअप से सेकेंडरी का पुनर्निर्माण किया जाता है। प्राथमिक प्रत्येक 60 सेकंड के लिए वृद्धिशील बैकअप के अलावा प्रत्येक दिन के बाद एक पूर्ण डेटाबेस बैकअप लेता है। इस दृष्टिकोण के साथ लाभ यह है कि कोई भी अतिरिक्त भार प्राथमिक के अधीन नहीं होता है जब तक कि माध्यमिक प्राथमिक के काफी करीब नहीं होते हैं जैसे कि वे इसे पकड़ने के लिए आगे लिखें लॉग (वाल) को स्ट्रीम करना शुरू कर देते हैं। इस दृष्टिकोण के साथ, आप अपने PostgreSQL डेटाबेस के प्रदर्शन को प्रभावित किए बिना प्रतिकृतियां जोड़ या हटा सकते हैं।
पोस्टग्रेएसक्यूएल (डिस्क मिररिंग) के लिए वॉल्यूम स्तर प्रतिकृति
यह एक सामान्य दृष्टिकोण है जो न केवल PostgreSQL पर लागू होता है, बल्कि सभी संबंधपरक डेटाबेस पर भी लागू होता है। हम डिस्ट्रिब्यूटेड रेप्लिकेटेड ब्लॉक डिवाइस (DRBD) का उपयोग करेंगे, जो Linux के लिए एक डिस्ट्रिब्यूटेड रेप्लिकेटेड स्टोरेज सिस्टम है। यह एक सर्वर के स्टोरेज में संग्रहीत सामग्री को दूसरे में मिरर करके संचालित करने के लिए है। संरचना का एक सरल उदाहरण नीचे दिखाया गया है।
DRBD को डिस्क डिवाइस से एक अमूर्त के रूप में माना जा सकता है जो PostgreSQL डेटाबेस को होस्ट करता है, लेकिन ऑपरेटिंग सिस्टम को यह कभी नहीं पता होगा कि इसका डेटा किसी अन्य सर्वर में भी स्थित है। इस दृष्टिकोण का उपयोग करके, आप न केवल डेटा साझा कर सकते हैं बल्कि फ़ाइल सिस्टम को 1 से अधिक सर्वरों पर भी साझा कर सकते हैं। इसलिए DRBD को लिखित सभी सर्वरों के बीच वितरित किया जाता है जिससे प्रत्येक सर्वर एक स्थानीय भौतिक हार्ड डिस्क (ब्लॉक डिवाइस) को जानकारी लिखेगा। जब प्राइमरी पर राइट ऑपरेशन लागू किया जाता है, तो उसके बाद इसे DRBD में रिकॉर्ड किया जाता है और फिर सेकेंडरी DRBD सर्वर को वितरित किया जाता है। दूसरी ओर, यदि माध्यमिक डीआरबीडी के माध्यम से लेखन संचालन प्राप्त करता है, तो उन्हें स्थानीय भौतिक डिवाइस पर लिखा जाता है। विफलता समर्थन के मामले में, DRBD डेटा की उच्च उपलब्धता प्रदान करता है क्योंकि सूचना प्राथमिक और कई माध्यमिक नोड्स के बीच साझा की जाती है जो ब्लॉक स्तर पर समकालिक रूप से पंक्तिबद्ध होती हैं।
DRBD कॉन्फ़िगरेशन के लिए एक अतिरिक्त संसाधन की आवश्यकता होगी जिसे हार्टबीट के रूप में जाना जाता है, जिसकी चर्चा हम एक अन्य लेख में करेंगे, ताकि स्वचालित विफलता के लिए समर्थन को बढ़ाया जा सके। पैकेज मूल रूप से कई सर्वरों पर इंटरफ़ेस का प्रबंधन करता है और विफलता की स्थिति में स्वचालित रूप से द्वितीयक सर्वरों में से एक को प्राथमिक में कॉन्फ़िगर करता है।
DRBD की स्थापना और कॉन्फ़िगरेशन
DRBD को स्थापित करने में पसंदीदा तरीका प्री-बिल्ड बाइनरी इंस्टॉलेशन पैकेज का उपयोग करना है। सुनिश्चित करें कि संकुल का कर्नेल संस्करण आपके सक्रिय वर्तमान कर्नेल से मेल खाता है।
प्राथमिक या द्वितीयक सभी नोड्स के लिए कॉन्फ़िगरेशन फ़ाइलें समान होनी चाहिए। इसके अलावा, यदि आपके लिए अपने कर्नेल संस्करण को अपग्रेड करना आवश्यक है, तो सुनिश्चित करें कि संबंधित कर्नेल-मॉड्यूल-डीआरडीबी आपके नए कर्नेल संस्करण के लिए उपलब्ध है।
प्राथमिक नोड के लिए DRBD सेटअप
यह पहला कदम है जहां आपको एक डीआरबीडी ब्लॉक डिवाइस और एक फाइल सिस्टम बनाने की आवश्यकता होगी जिसके साथ आप अपना डेटा स्टोर कर सकते हैं। विन्यास फाइल /etc/drbd.conf पर मिल सकती है। फ़ाइल DRBD कॉन्फ़िगरेशन के लिए कई मापदंडों को परिभाषित करती है जिसमें शामिल हैं:ब्लॉक आकार, DRBD उपकरणों की सुरक्षा जानकारी परिभाषा जिसे आप बनाना चाहते हैं और अपडेट की आवृत्ति। कॉन्फ़िगरेशन को वैश्विक होने या किसी निश्चित संसाधन से बंधे होने के लिए विवश किया जा सकता है। इसमें शामिल कदम हैं:
-
सिंक्रोनाइज़ेशन की दर जो उस दर को परिभाषित करती है जिस पर डिस्क प्रतिस्थापन, विफलता या प्रारंभिक सेटअप के बाद डिवाइस पृष्ठभूमि में सिंक्रोनाइज़ होते हैं। इसे सिंकर ब्लॉक में दर पैरामीटर को संपादित करके सेट किया जा सकता है:
syncer{ rate 15M }
-
यह सुनिश्चित करने के लिए प्रमाणीकरण सेटअप कि केवल समान साझा रहस्य वाले होस्ट DRBD नोड समूह में शामिल होने में सक्षम हैं। पासवर्ड एक हैश एक्सचेंज तंत्र है जो DRBD में समर्थित है।
cram-hmac-alg “sha1” shared-secret “hash-password-string”
-
होस्ट जानकारी को कॉन्फ़िगर करना। नोड जानकारी जैसे कि होस्ट प्रत्येक नोड की drbd.conf फ़ाइल में पाया जा सकता है। कॉन्फ़िगर किए जाने वाले कुछ पैरामीटर हैं:
- पता:DRBD डिवाइस रखने वाले होस्ट का IP पता और पोर्ट नंबर।
- डिवाइस:DRBD द्वारा बनाए गए लॉजिकल ब्लॉक डिवाइस का पथ।
- डिस्क:यह डेटा को स्टोर करने वाले ब्लॉक डिवाइस को संदर्भित करता है।
- मेटा-डिस्क:यह DRBD डिवाइस के मेटाडेटा को स्टोर करता है। इसका साइज 128MB तक हो सकता है। आप इसे आंतरिक डिस्क के रूप में सेट कर सकते हैं ताकि DRBD इस जानकारी को डिस्क के अंतिम भाग में संग्रहीत करने के लिए भौतिक ब्लॉक डिवाइस का उपयोग करे।
प्राथमिक के लिए एक सरल विन्यास:
on drbd-one { device /dev/drbd0; disk /dev/sdd1; address 192.168.103.40:8080; meta-disk internal; }
कॉन्फिगरेशन को सेकेंडरी के साथ दोहराया जाना चाहिए, जिसमें आईपी एड्रेस उसके कॉरेस्पोंडेंट होस्ट से मेल खाता हो।
on drbd-two { device /dev/drbd0; disk /dev/sdd1; address 192.168.103.41:8080; meta-disk internal; }
-
इस आदेश का उपयोग करने वाले उपकरणों के लिए मेटाडेटा बनाना:
प्राथमिक नोड शुरू करने से पहले यह प्रक्रिया अनिवार्य है।$ drbdadm create-md all
- DRBD को इस कमांड से शुरू करें:
यह DRBD को DRBD परिभाषित उपकरणों को शुरू करने, आरंभ करने और बनाने में सक्षम बनाता है।$ /etc/init.d/drbd start
- नए डिवाइस को प्राथमिक के रूप में चिह्नित करें और इस कमांड का उपयोग करके डिवाइस को इनिशियलाइज़ करें:
DRBD द्वारा बनाए गए मानक ब्लॉक डिवाइस को प्रयोग करने योग्य बनाने के लिए ब्लॉक डिवाइस पर एक फाइल सिस्टम बनाएं।$ drbdadm -- --overwrite-data-of-peer primary all
- फ़ाइल सिस्टम को माउंट करके प्राथमिक को उपयोग के लिए तैयार करें। यह कमांड इसे आपके लिए तैयार करेगा:
$ mkdir /mnt/drbd $ mount /dev/drbd0 /mnt/drbd $ echo “DRBD Device” > /mnt/drbd/example_file
द्वितीयक नोड के लिए DRBD सेटअप
द्वितीयक नोड पर फ़ाइल सिस्टम बनाने के अलावा आप ऊपर दिए गए समान चरणों का उपयोग कर सकते हैं क्योंकि सूचना स्वचालित रूप से प्राथमिक नोड से स्थानांतरित हो जाती है।
-
प्राथमिक नोड से द्वितीयक नोड में /etc/drbd.conf फ़ाइल की प्रतिलिपि बनाएँ। इस फ़ाइल में आवश्यक जानकारी और कॉन्फ़िगरेशन है।
-
अंतर्निहित डिस्क डिवाइस पर कमांड का उपयोग करके DRBD मेटाडेटा बनाएं:
$ drbdadm create-md all
-
DRBD को कमांड से शुरू करें:
DRBD प्राथमिक नोड से द्वितीयक नोड में डेटा की प्रतिलिपि बनाना शुरू कर देगा, और समय स्थानांतरित किए जाने वाले डेटा के आकार पर निर्भर करता है। यदि आप /proc/drbd फ़ाइल देखते हैं तो आप प्रगति देख सकते हैं।$ /etc/init.d/drbd start
$ cat /proc/drbd version: 8.0.0 (api:80/proto:80) SVN Revision: 2947 build by [email protected], 2018-08-24 16:43:05 0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r--- ns:252284 nr:0 dw:0 dr:257280 al:0 bm:15 lo:0 pe:7 ua:157 ap:0 [==>.................] sync'ed: 12.3% (1845088/2097152)K finish: 0:06:06 speed: 4,972 (4,580) K/sec resync: used:1/31 hits:15901 misses:16 starving:0 dirty:0 changed:16 act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
-
विशिष्ट अंतराल पर वॉच कमांड का उपयोग करके सिंक्रोनाइज़ेशन की निगरानी करें
$ watch -n 10 ‘cat /proc/drbd‘
DRBD इंस्टालेशन मैनेजमेंट
DRBD डिवाइस की स्थिति पर नज़र रखने के लिए हम /proc/drbd का उपयोग करते हैं।
आप कमांड का उपयोग करके सभी स्थानीय उपकरणों की स्थिति को प्राथमिक के रूप में सेट कर सकते हैं
$ drbdadm primary all
प्राथमिक उपकरण को द्वितीयक बनाएं
$ drbdadm secondary all
DRBD नोड्स को डिस्कनेक्ट करने के लिए
$ drbdadm disconnect all
DRBD नोड्स को फिर से कनेक्ट करें
$ drbd connect all
आज श्वेतपत्र डाउनलोड करें क्लस्टरकंट्रोल के साथ पोस्टग्रेएसक्यूएल प्रबंधन और स्वचालन इस बारे में जानें कि पोस्टग्रेएसक्यूएल को तैनात करने, मॉनिटर करने, प्रबंधित करने और स्केल करने के लिए आपको क्या जानना चाहिए। श्वेतपत्र डाउनलोड करें DRBD के लिए PostgreSQL को कॉन्फ़िगर करना
इसमें एक उपकरण का चयन करना शामिल है जिसके लिए PostgreSQL डेटा संग्रहीत करेगा। एक नई स्थापना के लिए, आप पूरी तरह से DRBD डिवाइस पर PostgreSQL को स्थापित करने का चयन कर सकते हैं या नई फाइल सिस्टम पर स्थित होने के लिए एक डेटा निर्देशिका और प्राथमिक नोड में होना चाहिए। ऐसा इसलिए है क्योंकि प्राथमिक नोड केवल एक DRBD डिवाइस फ़ाइल सिस्टम को पढ़ने/लिखने के रूप में माउंट करने की अनुमति है। Postgres डेटा फ़ाइलें अक्सर /var/lib/pgsql में संग्रहीत की जाती हैं जबकि कॉन्फ़िगरेशन फ़ाइलें /etc/sysconfig/pgsql में संग्रहीत की जाती हैं।
नए DRBD डिवाइस का उपयोग करने के लिए PostgreSQL सेट करना
-
यदि आपके पास कोई PostgreSQL चल रहा है, तो उन्हें इस आदेश से रोकें:
$ /etc/init.d/postgresql -9.0
-
कमांड का उपयोग करके DRBD डिवाइस को कॉन्फ़िगरेशन फ़ाइलों के साथ अपडेट करें:
$ mkdir /mnt/drbd/pgsql/sysconfig $ cp /etc/sysconfig/pgsql/* /mnt/drbd/pgsql/sysconfig
-
DRBD को PostgreSQL डेटा निर्देशिका और सिस्टम फ़ाइलों का उपयोग करके अपडेट करें:
$ cp -pR /var/lib/pgsql /mnt/drbd/pgsql/data
-
कमांड का उपयोग करके /etc/sysconfig/pgsql से DRBD डिवाइस फ़ाइल सिस्टम पर नई कॉन्फ़िगरेशन निर्देशिका के लिए एक प्रतीकात्मक लिंक बनाएँ:
$ ln -s /mnt/drbd/pgsql/sysconfig /etc/sysconfig/pgsql
-
निकालें /var/lib/pgsql निर्देशिका, अनमाउंट /mnt/drbd/pgsql और drbd डिवाइस को /var/lib/pgsql पर माउंट करें।
-
PostgreSQL को कमांड से शुरू करें:
$ /etc/init.d/postgresql -9.0 start
कॉन्फ़िगर किए गए डिवाइस के तहत PostgreSQL डेटा अब आपके DRBD डिवाइस पर चल रहे फ़ाइल सिस्टम पर मौजूद होना चाहिए। डेटाबेस की सामग्री को सेकेंडरी DRBD नोड में भी कॉपी किया जाता है लेकिन इसे एक्सेस नहीं किया जा सकता क्योंकि सेकेंडरी नोड में काम करने वाला DRBD डिवाइस अनुपस्थित हो सकता है।
DRBD दृष्टिकोण के साथ महत्वपूर्ण विशेषताएं
- ट्यूनिंग पैरामीटर अत्यधिक अनुकूलन योग्य हैं।
- मौजूदा परिनियोजन को बिना किसी डेटा हानि के DRBD के साथ आसानी से कॉन्फ़िगर किया जा सकता है।
- पढ़ने के अनुरोध समान रूप से संतुलित हैं
- साझा-गुप्त प्रमाणीकरण कॉन्फ़िगरेशन और उसके डेटा को सुरक्षित करता है।