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

PostgreSQL माइग्रेशन के लिए शीर्ष ओपन सोर्स टूल्स

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

इस ब्लॉग में, हम प्रत्येक विकल्प के संक्षिप्त अवलोकन के साथ PostgreSQL माइग्रेशन के लिए कुछ ओपन-सोर्स टूल का उल्लेख करेंगे।

बैकअप और माइग्रेशन टूल को पुनर्स्थापित करें

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

pgdump/pgdumpall

pg_dump एकल PostgreSQL डेटाबेस के बैकअप के लिए एक उपयोगिता है। यह लगातार बैकअप बनाता है, भले ही डेटाबेस का उपयोग समवर्ती रूप से किया जा रहा हो, क्योंकि यह अन्य उपयोगकर्ताओं को ब्लॉक नहीं करता है। एक पूरे क्लस्टर का बैकअप लेने के लिए, या क्लस्टर में सभी डेटाबेस के लिए सामान्य वैश्विक ऑब्जेक्ट्स (जैसे भूमिकाएं और टेबलस्पेस) का बैकअप लेने के लिए, आपको इसके बजाय pg_dumpall का उपयोग करना चाहिए।

डंप को स्क्रिप्ट या संग्रह फ़ाइल स्वरूपों में आउटपुट किया जा सकता है। स्क्रिप्ट डंप प्लेन-टेक्स्ट फाइलें होती हैं जिनमें SQL कमांड होते हैं जो डेटाबेस को उस स्थिति में फिर से संगठित करने के लिए आवश्यक होते हैं, जिस समय इसे सहेजा गया था। इसका उपयोग अन्य मशीनों, अन्य आर्किटेक्चर, या यहां तक ​​कि अन्य SQL डेटाबेस उत्पादों पर डेटाबेस को फिर से बनाने के लिए किया जा सकता है।

pg_basebackup

pg_basebackup का उपयोग चल रहे PostgreSQL डेटाबेस क्लस्टर का आधार बैकअप लेने के लिए किया जाता है। बैकअप अन्य डेटाबेस क्लाइंट को प्रभावित किए बिना लिया जाता है और इसका उपयोग PITR (प्वाइंट-इन-टाइम-रिकवरी) और स्ट्रीमिंग प्रतिकृति स्टैंडबाय सर्वर के शुरुआती बिंदु के रूप में दोनों के लिए किया जा सकता है। यह सुनिश्चित करते हुए डेटाबेस क्लस्टर की फ़ाइलों की एक सटीक प्रतिलिपि बनाता है कि सर्वर स्वचालित रूप से बैकअप मोड में और बाहर रखा गया है। बैकअप हमेशा पूरे डेटाबेस क्लस्टर का लिया जाता है; अलग-अलग डेटाबेस या डेटाबेस ऑब्जेक्ट का बैकअप लेना संभव नहीं है।

pgBackRest

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

पीजीबैकरेस्ट की कुछ सबसे महत्वपूर्ण विशेषताएं हैं:

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

PostgreSQL माइग्रेशन टूल

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

pg_गिरगिट

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

मुख्य विशेषताएं हैं:

  • एकाधिक MySQL स्कीमा से पढ़ें और उन्हें एक लक्ष्य PostgreSQL डेटाबेस में पुनर्स्थापित करें
  • एक MySQL स्लेव के रूप में कार्य करने के लिए PostgreSQL सेटअप करें
  • मूल DDL समर्थन (बनाएं/छोड़ें/तालिका बदलें, प्राथमिक कुंजी छोड़ें/छोड़ें, नाम बदलें)
  • त्रुटियां उत्पन्न करने वाली तालिकाएं स्वचालित रूप से प्रतिकृति से बाहर हो जाती हैं
  • सिंगल टेबल या सिंगल स्कीमा रीफ़्रेश करने की संभावना
  • माइग्रेशन समर्थन के लिए MySQL से रेप्लिका को अलग करें
  • डेटा प्रकार ओवरराइड
  • डेमोनाइज्ड init_replica प्रक्रिया
  • दो अलग उप-प्रक्रियाओं के साथ डेमॉनाइज़्ड प्रतिकृति प्रक्रिया, एक पढ़ने के लिए और एक फिर से चलाने के लिए

pgloader

pgloader विभिन्न स्रोतों से डेटा को PostgreSQL में लोड करता है। यह फ्लाई पर पढ़े गए डेटा को बदल सकता है और लोडिंग से पहले और बाद में कच्चे एसक्यूएल को जमा कर सकता है। यह सर्वर में डेटा को स्ट्रीम करने के लिए COPY PostgreSQL प्रोटोकॉल का उपयोग करता है और रिजेक्ट.डैट और रिजेक्ट.लॉग फाइलों की एक जोड़ी भरकर त्रुटियों का प्रबंधन करता है।

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

मुख्य विशेषताएं हैं:

  • कई स्रोत प्रारूप समर्थित हैं, जैसे CSV, db3, और IBM IXF फ़ाइलें
  • ऑन द फ्लाई डेटा ट्रांसफ़ॉर्मेशन
  • पूरे क्षेत्र के अनुमान
  • संपीड़ित फ़ाइलों (ज़िप, टार, और gzip) से पढ़ना
  • HTTP(S) समर्थन
  • लक्ष्य स्कीमा खोज
  • त्रुटि पर अगले विकल्प रोकें/फिर से शुरू करें
  • एसक्यूएल कमांड को प्री/पोस्ट करें
  • एक-कमांड माइग्रेशन
  • स्कीमा खोज
  • उपयोगकर्ता द्वारा परिभाषित कास्टिंग नियम
  • आंशिक माइग्रेशन जिसमें टेबल शामिल हैं/छोड़कर
  • केवल स्कीमा या डेटा
  • भौतिक दृश्य, या स्कीमा उड़ान के दौरान फिर से लिखना
  • सतत माइग्रेशन

Ora2Pg

Ora2Pg एक निःशुल्क टूल है जिसका उपयोग Oracle या MySQL डेटाबेस को PostgreSQL संगत स्कीमा में माइग्रेट करने के लिए किया जाता है। यह आपके वर्तमान डेटाबेस को जोड़ता है, इसे स्कैन करता है, और इसकी संरचना या डेटा को निकालता है, फिर यह SQL स्क्रिप्ट उत्पन्न करता है जिसे आप अपने PostgreSQL डेटाबेस में लोड कर सकते हैं।

मुख्य विशेषताएं हैं:

  • अद्वितीय, प्राथमिक, विदेशी कुंजी और जांच बाधाओं के साथ पूर्ण डेटाबेस स्कीमा (तालिका, दृश्य, अनुक्रम, अनुक्रमणिका) निर्यात करें
  • उपयोगकर्ताओं और समूहों के लिए निर्यात अनुदान/विशेषाधिकार
  • एक्सपोर्ट रेंज/लिस्ट पार्टिशन और सबपार्टिशन
  • तालिका चयन निर्यात करें (तालिका नाम निर्दिष्ट करके)।
  • पूर्वनिर्धारित कार्यों, ट्रिगर्स, प्रक्रियाओं, पैकेजों और पैकेज निकायों को निर्यात करें
  • पूर्ण डेटा निर्यात करें या WHERE क्लॉज का पालन करें
  • PG BYTEA के रूप में Oracle BLOB ऑब्जेक्ट का पूर्ण समर्थन
  • Oracle दृश्यों को PG तालिकाओं के रूप में निर्यात करें
  • Oracle उपयोगकर्ता-परिभाषित प्रकार निर्यात करें
  • पीएलएसक्यूएल कोड को पीएलपीजीएसक्यूएल में कुछ बुनियादी स्वचालित रूपांतरण प्रदान करें
  • Oracle तालिकाओं को विदेशी डेटा आवरण तालिका के रूप में निर्यात करें
  • भौतिक दृश्य निर्यात करें
  • Oracle डेटाबेस सामग्री की विस्तृत रिपोर्ट दिखाएं
  • Oracle डेटाबेस का माइग्रेशन लागत आकलन
  • Oracle डेटाबेस का माइग्रेशन कठिनाई स्तर आकलन
  • एक फ़ाइल से PL/SQL कोड का माइग्रेशन लागत आकलन
  • फ़ाइल में संग्रहीत Oracle SQL क्वेरी का माइग्रेशन लागत मूल्यांकन
  • पेंथालो डेटा इंटीग्रेटर (केटल) के साथ उपयोग की जाने वाली XML ktr फाइलें जेनरेट करें
  • Oracle लोकेटर और स्थानिक ज्यामिति को PostGis में निर्यात करें
  • DBLINK को Oracle FDW के रूप में निर्यात करें
  • समानार्थक शब्द को दृश्यों के रूप में निर्यात करें
  • External_file एक्सटेंशन के लिए निर्देशिका को बाहरी तालिका या निर्देशिका के रूप में निर्यात करें
  • Oracle डेटाबेस की तरह ही पूर्ण MySQL निर्यात

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

PostgreSQL माइग्रेशन के लिए तार्किक प्रतिकृति

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

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

इस पद्धति का उपयोग आपके PostgreSQL डेटाबेस को माइग्रेट या अपग्रेड करने के लिए किया जा सकता है।

अधिक जानकारी के लिए, आप पोस्टग्रेएसक्यूएल को शून्य डाउनटाइम के साथ अपग्रेड करने के बारे में संबंधित ब्लॉग पोस्ट देख सकते हैं।

निष्कर्ष

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


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

  2. PostgreSQL के लिए pt-pg-सारांश Percona टूलकिट का उपयोग करना

  3. सम्मिलन कथन के लिए पोस्टग्रेज़ में यूयूआईडी उत्पन्न करना?

  4. एकाधिक आईपी पतों के लिए postgresql postgresql.conf सुनो_एड्रेस को कैसे कॉन्फ़िगर करें

  5. Liquibase/PostgreSQL:टेबल केस को सही तरीके से कैसे संरक्षित करें?