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

PostgreSQL के लिए अपग्रेड प्रक्रिया का स्वचालित परीक्षण

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

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

डेटाबेस अपग्रेड का प्रकार

उन्नयन दो प्रकार के होते हैं:लघु उन्नयन और प्रमुख उन्नयन।

मामूली अपग्रेड

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

आप ClusterControl का उपयोग करके इस प्रकार का अपग्रेड कर सकते हैं। इसके लिए, ClusterControl पर जाएँ -> अपना PostgreSQL क्लस्टर चुनें -> मैनेज करें -> अपग्रेड करें।

प्रत्येक चयनित नोड पर, अपग्रेड प्रक्रिया होगी:

  • स्टॉप नोड

  • नोड अपग्रेड करें

  • स्टार्ट नोड

एक PostgreSQL टोपोलॉजी में मास्टर नोड को अपग्रेड नहीं किया जाएगा। मास्टर को अपग्रेड करने के लिए, पहले नए मास्टर बनने के लिए दूसरे नोड को बढ़ावा दिया जाना चाहिए।

प्रमुख अपग्रेड

प्रमुख अपग्रेड के लिए, इन-प्लेस अपग्रेड की अनुशंसा नहीं की जाती है, क्योंकि उत्पादन परिवेश के लिए कुछ गलत होने का जोखिम बहुत अधिक होता है। इसके बजाय, अपग्रेड करने के लिए अलग-अलग तरीके हैं।

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

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

एक परीक्षण वातावरण परिनियोजित करना

इसके लिए, आपको शुरुआत से ही सब कुछ बनाने की ज़रूरत नहीं है। इसके बजाय, आप इसे मैन्युअल या स्वचालित तरीके से करने के लिए ClusterControl का उपयोग कर सकते हैं।

स्टैंडअलोन होस्ट पर बैकअप पुनर्स्थापित करें

बैकअप अनुभाग में, एक बैकअप चुनें और आपको एक अलग नोड में बैकअप को पुनर्स्थापित करने के लिए "रिस्टोर एंड वेरिफाई ऑन स्टैंडअलोन होस्ट" विकल्प दिखाई देगा।

यहां आप यह निर्दिष्ट कर सकते हैं कि क्या आप चाहते हैं कि ClusterControl नए में सॉफ़्टवेयर स्थापित करे नोड, और फ़ायरवॉल या AppArmor/SELinux (OS के आधार पर) को अक्षम करें। इसके लिए, आपको एक समर्पित होस्ट (या VM) की आवश्यकता है जो क्लस्टर का हिस्सा नहीं है।

आप नोड को चालू और चालू रख सकते हैं, या ClusterControl डेटाबेस को बंद कर सकता है अगले पुनर्स्थापना कार्य तक सेवा। जब यह समाप्त हो जाता है, तो आप बैकअप सूची में एक टिक के साथ चिह्नित/पुनर्स्थापित/सत्यापित बैकअप देखेंगे।

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

स्वचालित क्लस्टर नियंत्रण बैकअप सत्यापन

इस कार्य को स्वचालित करने के लिए, ClusterControl पर जाएं -> अपना PostgreSQL क्लस्टर चुनें -> बैकअप -> बैकअप बनाएं, और अनुसूचित बैकअप विकल्प चुनें। स्वचालित बैकअप सत्यापित करें सुविधा केवल अनुसूचित बैकअप के लिए उपलब्ध है।

दूसरे चरण में, सुनिश्चित करें कि आपने बैकअप सत्यापित करें विकल्प को सक्षम किया है, और आवश्यक जानकारी को पूरा करें।

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

बैकअप से क्लस्टर बनाएं

एक परीक्षण वातावरण बनाने का दूसरा तरीका है अपने प्राथमिक क्लस्टर के बैकअप से एक नया क्लस्टर बनाना। इसके लिए ClusterControl पर जाएं -> अपना PostgreSQL क्लस्टर चुनें -> बैकअप। वहां, सूची से पुनर्स्थापित करने के लिए बैकअप चुनें, और पुनर्स्थापना -> बैकअप से क्लस्टर बनाएं चुनें।

यह विकल्प चयनित बैकअप से एक नया PostgreSQL क्लस्टर बनाएगा।

आपको ओएस और डेटाबेस क्रेडेंशियल्स और जानकारी को परिनियोजित करने के लिए जोड़ने की आवश्यकता है नया क्लस्टर। जब यह कार्य समाप्त हो जाएगा, तो आप नए क्लस्टर को ClusterControl UI में देखेंगे।

क्लस्टर-टू-क्लस्टर प्रतिकृति

ClusterControl 1.7.4 के बाद से क्लस्टर-टू-क्लस्टर प्रतिकृति नामक एक सुविधा है। यह आपको दो स्वायत्त समूहों के बीच प्रतिकृति चलाने की अनुमति देता है।

क्लस्टर-टू-क्लस्टर प्रतिकृति बनाना

ClusterControl पर जाएं -> अपना PostgreSQL क्लस्टर चुनें -> क्लस्टर क्रियाएं -> स्लेव क्लस्टर बनाएं।

स्लेव क्लस्टर मौजूदा प्राथमिक क्लस्टर से डेटा स्ट्रीम करके बनाया जाएगा।

आपको अपने स्लेव क्लस्टर के लिए SSH क्रेडेंशियल और पोर्ट, एक नाम निर्दिष्ट करना होगा, और यदि आप चाहते हैं कि ClusterControl आपके लिए संबंधित सॉफ़्टवेयर और कॉन्फ़िगरेशन स्थापित करे।

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

इस चरण में, आपको सर्वर को नए स्लेव क्लस्टर में जोड़ना होगा . इस कार्य के लिए, आप डेटाबेस नोड का IP पता या होस्टनाम दोनों दर्ज कर सकते हैं।

आप ClusterControl गतिविधि मॉनीटर में कार्य की स्थिति की निगरानी कर सकते हैं। कार्य समाप्त होने के बाद, आप क्लस्टर को मुख्य क्लस्टर नियंत्रण स्क्रीन में देख सकते हैं।

स्वतः पुनर्प्राप्ति और विफलता

स्वतः पुनर्प्राप्ति सुविधा सक्षम होने पर, विफलता के मामले में, ClusterControl सबसे उन्नत स्टैंडबाय नोड को प्राथमिक में बढ़ावा देगा और साथ ही आपको समस्या के बारे में सूचित करेगा। यह नए प्राथमिक सर्वर से दोहराने के लिए बाकी स्टैंडबाय नोड्स पर भी विफल रहता है।

यदि टोपोलॉजी में लोड बैलेंसर हैं, तो ClusterControl उन्हें टोपोलॉजी परिवर्तनों को लागू करने के लिए पुन:कॉन्फ़िगर करेगा।

यदि आवश्यक हो तो आप मैन्युअल रूप से एक विफलता भी चला सकते हैं। ClusterControl पर जाएँ -> अपना PostgreSQL क्लस्टर चुनें -> नोड्स -> प्रचारित किए जाने वाले नोड का चयन करें -> नोड क्रियाएँ -> स्लेव को बढ़ावा दें।

इस तरह, अगर अपग्रेड के दौरान कुछ गलत हो जाता है, तो आप इसे जल्द से जल्द ठीक करने के लिए ClusterControl का उपयोग कर सकते हैं।

ClusterControl CLI के साथ चीजों को स्वचालित करना

ClusterControl CLI, जिसे s9s के रूप में भी जाना जाता है, ClusterControl संस्करण 1.4.1 में क्लस्टर कंट्रोल सिस्टम का उपयोग करके डेटाबेस क्लस्टर्स को इंटरैक्ट करने, नियंत्रित करने और प्रबंधित करने के लिए एक कमांड-लाइन टूल है। ClusterControl CLI क्लस्टर ऑटोमेशन के लिए एक द्वार खोलता है जहाँ आप इसे मौजूदा परिनियोजन ऑटोमेशन टूल जैसे Ansible, Puppet, Chef, आदि के साथ आसानी से एकीकृत कर सकते हैं। आइए अब इस टूल के कुछ उदाहरण देखें।

अपग्रेड करें

$ s9s cluster --cluster-id=9 \
--check-pkg-upgrades \
--log
$ s9s cluster --cluster-id=9 \
--available-upgrades \
--nodes=10.10.10.122 \
--log \
--print-json
$ s9s cluster --cluster-id=9 \
--upgrade-cluster \
--nodes=10.10.10.122 \
--log

बैकअप सत्यापित करें

$ s9s backup --verify \
--backup-id=2 \
--test-server=10.10.10.124 \
--cluster-id=9 \
--log

क्लस्टर-टू-क्लस्टर प्रतिकृति

$ s9s cluster --create \
--cluster-name=PostgreSQL-c2c \
--cluster-type=postgresql \
--provider-version=13 \
--nodes=10.10.10.125 \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--db-admin=admin \
--db-admin-passwd=********* \
--vendor=postgres \
--remote-cluster-id=9 \
--log

स्लेव नोड को बढ़ावा दें

$ s9s cluster --promote-slave \
--cluster-id=9 \
--nodes='10.10.10.122' \
--log

निष्कर्ष

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

ClusterControl आपको ClusterControl UI या CLI से मामूली अपग्रेड करने की अनुमति देता है, या अपग्रेड कार्य को आसान और सुरक्षित बनाने के लिए परीक्षण वातावरण भी तैनात करता है। आप इसे विभिन्न ऑटोमेशन टूल जैसे Ansible, Puppet, आदि के साथ भी एकीकृत कर सकते हैं।


  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. पिछले 10 दिनों से तारीख के साथ रिकॉर्ड कैसे सूचीबद्ध करें?

  3. वेबिनार :पोस्टग्रेएसक्यूएल 11 में नई सुविधाएँ [फॉलो अप]

  4. PostgreSQL और JDBC के साथ ClassNotFoundException

  5. मैं हेरोकू पर 5 एमबी पोस्टग्रेएसक्यूएल में कितने रिकॉर्ड स्टोर कर सकता हूं?