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

MySQL से PostgreSQL में माइग्रेट करना - आपको क्या पता होना चाहिए

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

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

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

PostgreSQL को क्या चाहिए

पिछले ब्लॉग में, हमने एक नई परियोजना के लिए PostgreSQL की स्थापना और अनुकूलन पर चर्चा की थी। यह PostgreSQL कॉन्फ़िगरेशन और व्यवहार का एक अच्छा परिचय है, और इसे यहां पाया जा सकता है:https://severalnines.com/blog/setting-optimal-environment-postgresql।

यदि किसी एप्लिकेशन को MySQL से PostgreSQL में माइग्रेट करना है, तो प्रारंभ करने के लिए सबसे अच्छी जगह यह होगी कि इसे स्रोत MySQL डेटाबेस के समान हार्डवेयर या होस्टिंग प्लेटफ़ॉर्म पर होस्ट किया जाए।

परिसर पर

यदि डेटाबेस को आधार पर होस्ट किया जाता है, तो बेयर मेटल होस्ट (वर्चुअल मशीन के बजाय) आमतौर पर PostgreSQL को होस्ट करने के लिए सबसे अच्छा विकल्प है। वर्चुअल मशीनें कभी-कभी कुछ सहायक सुविधाएँ जोड़ती हैं, लेकिन वे सामान्य रूप से होस्ट से शक्ति और प्रदर्शन को खोने की कीमत पर आती हैं, जबकि नंगे धातु PostgreSQL सॉफ़्टवेयर को इसके और हार्डवेयर के बीच कम परतों के साथ प्रदर्शन तक पूर्ण पहुँच की अनुमति देता है। ऑन-प्रिमाइसेस होस्ट को डेटाबेस को बनाए रखने के लिए एक व्यवस्थापक की आवश्यकता होगी, चाहे वह एक पूर्णकालिक कर्मचारी हो या ठेकेदार, जो भी आवेदन की जरूरतों के लिए अधिक समझ में आता है।

इन द क्लाउड

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

उपयोग किए गए होस्टिंग विकल्प के आधार पर, नए होस्ट को शीघ्रता से प्रोविज़न किया जा सकता है, मेमोरी/सीपीयू/डिस्क को जल्दी से ट्वीक किया जा सकता है, और अतिरिक्त बैकअप विधियाँ भी उपलब्ध हो सकती हैं। क्लाउड होस्ट चुनते समय, देखें कि क्या होस्ट समर्पित है या साझा किया गया है, जो अत्यधिक उच्च लोड डेटाबेस के लिए बेहतर है। एक अन्य कुंजी यह सुनिश्चित करना है कि क्लाउड होस्ट के लिए उपलब्ध IOPS डेटाबेस गतिविधि की जरूरतों के लिए पर्याप्त है। PostgreSQL के लिए एक बड़े मेमोरी पूल के साथ भी, डिस्क पर डेटा लिखने के लिए या मेमोरी में नहीं होने पर डेटा लाने के लिए हमेशा डिस्क संचालन होगा।

क्लाउड सेवाएं

चूंकि PostgreSQL लोकप्रियता में बढ़ रहा है, यह कई क्लाउड डेटाबेस होस्टिंग सेवाओं जैसे हरोकू, अमेज़ॅन एडब्ल्यूएस, और अन्य पर उपलब्ध पाया जा रहा है, और जल्दी से MySQL की लोकप्रियता को पकड़ रहा है। ये सेवाएं तीसरे पक्ष को एक PostgreSQL डेटाबेस को आसानी से होस्ट और प्रबंधित करने की अनुमति देती हैं, जिससे एप्लिकेशन पर ध्यान केंद्रित रहता है।

अवधारणाएं / शब्द तुलना

MySQL से PostgreSQL में माइग्रेट करते समय, सामान्य कॉन्फ़िगरेशन पैरामीटर, शर्तें, या अवधारणाएं जो समान रूप से संचालित होती हैं लेकिन उनके अंतर हैं, कुछ तुलनाओं को कवर करना है।

डेटाबेस शर्तें

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

“क्लस्टर”

MySQL में, एक 'क्लस्टर' आमतौर पर एक साथ जुड़े कई MySQL डेटाबेस होस्ट को संदर्भित करता है जो क्लाइंट को एक डेटाबेस या डेटाबेस के सेट के रूप में प्रदर्शित होता है।

PostgreSQL में, जब एक 'क्लस्टर' को संदर्भित किया जाता है, तो यह डेटाबेस सॉफ़्टवेयर और इसकी सभी उप-प्रक्रियाओं का एक एकल चलने वाला उदाहरण होता है, जिसमें तब एक या अधिक डेटाबेस होते हैं।

“डेटाबेस”

MySQL में, क्वेरीज़ एक ही समय में विभिन्न डेटाबेस से तालिकाओं तक पहुँच सकती हैं (बशर्ते उपयोगकर्ता के पास प्रत्येक डेटाबेस तक पहुँचने की अनुमति हो)।

SELECT *
FROM customer_database.customer_table t1
JOIN orders_database.order_table t2 ON t1.customer_id = t2.customer_id
WHERE name = ‘Bob’;

हालाँकि PostgreSQL में यह तब तक नहीं हो सकता जब तक कि विदेशी डेटा रैपर्स (किसी अन्य समय के लिए एक विषय) का उपयोग न किया जाए। इसके बजाय, एक PostgreSQL डेटाबेस में कई 'स्कीमा' का विकल्प होता है जो MySQL में डेटाबेस के समान काम करते हैं। स्कीमा में टेबल, इंडेक्स आदि होते हैं, और उन्हें उसी डेटाबेस से उसी कनेक्शन द्वारा एक साथ एक्सेस किया जा सकता है जो उन्हें रखता है।

SELECT *
FROM customer_schema.customer_table t1
JOIN orders_schema.order_table t2 ON t1.customer_id = t2.customer_id
WHERE name = ‘Bob’;

PostgreSQL के साथ इंटरफेस करना

MySQL कमांड लाइन क्लाइंट (mysql) में, डेटाबेस के साथ इंटरफेसिंग 'DESCRIBE टेबल' या 'शो टेबल्स' जैसे प्रमुख कार्यों का उपयोग करता है। PostgreSQL कमांड लाइन क्लाइंट (psql) 'बैकस्लैश कमांड' के अपने रूप का उपयोग करता है। उदाहरण के लिए, 'टेबल्स दिखाएं' के बजाय, PostgreSQL का आदेश '\dt' है, और 'डेटाबेस दिखाएं' के बजाय, आदेश '\l' है।

psql के भीतर बैकस्लैश कमांड '\?' द्वारा 'psql' के लिए कमांड की पूरी सूची पाई जा सकती है।

भाषा समर्थन

MySQL की तरह, PostgreSQL में सभी प्रमुख भाषाओं के लिए लाइब्रेरी और प्लगइन्स के साथ-साथ MySQL और Oracle की तर्ज पर ODBC ड्राइवर भी हैं। किसी भी आवश्यक भाषा के लिए एक महान और स्थिर पुस्तकालय ढूँढना एक आसान काम है।

संग्रहीत प्रक्रियाएं

MySQL के विपरीत, PostgreSQL के पास चुनने के लिए समर्थित प्रक्रियात्मक भाषाओं की एक विस्तृत श्रृंखला है। PostgreSQL के बेस इंस्टाल में, समर्थित भाषाएँ PL/pgSQL (SQL प्रक्रियात्मक भाषा), PL/Tcl (Tcl प्रक्रियात्मक भाषा), PL/Perl (पर्ल प्रक्रियात्मक भाषा), और PL/पायथन (पायथन प्रक्रियात्मक भाषा) हैं। तीसरे पक्ष के डेवलपर्स के पास मुख्य पोस्टग्रेएसक्यूएल समूह द्वारा आधिकारिक तौर पर समर्थित नहीं होने वाली अधिक भाषाएं हो सकती हैं।

कॉन्फ़िगरेशन

  • स्मृति

    MyISAM का उपयोग करते समय MySQL इसे key_buffer_size के साथ और InnoDB का उपयोग करते समय innodb_buffer_pool_size के साथ ट्यून करता है।

    PostgreSQL डेटा को कैशिंग करने के लिए डेटाबेस को दिए गए मुख्य मेमोरी ब्लॉक के लिए साझा_बफ़र्स का उपयोग करता है, और आम तौर पर सिस्टम मेमोरी के लगभग 1/4 वें हिस्से पर चिपक जाता है जब तक कि कुछ परिदृश्यों को बदलने की आवश्यकता न हो। सॉर्टिंग के लिए मेमोरी का उपयोग करने वाली क्वेरी वर्क_मेम मान का उपयोग करती हैं, जिसे सावधानी से बढ़ाया जाना चाहिए।

माइग्रेशन के लिए टूल

PostgreSQL में माइग्रेट करने में कुछ काम लग सकता है, लेकिन ऐसे उपकरण हैं जिन्हें समुदाय ने इस प्रक्रिया में मदद के लिए विकसित किया है। आम तौर पर वे डेटा को MySQL से PostgreSQL में कनवर्ट/माइग्रेट करेंगे, और टेबल/इंडेक्स को फिर से बनाएंगे। संग्रहीत कार्यविधियाँ या कार्य, एक अलग कहानी हैं, और आमतौर पर या तो आंशिक रूप से, या शुरू से ही मैन्युअल पुनर्लेखन की आवश्यकता होती है।

उपलब्ध कुछ उदाहरण उपकरण pgloader और FromMySqlToPostgreSql हैं। Pgloader कॉमन लिस्प में लिखा गया एक उपकरण है जो COPY कमांड का उपयोग करके MySQL से PostgreSQL में डेटा आयात करता है, और डेटा, इंडेक्स, विदेशी कुंजी, और डेटा रूपांतरण के साथ टिप्पणियों को लोड करता है ताकि डेटा को PostgreSQL में डेटा को सही ढंग से प्रस्तुत किया जा सके। FromMySqlToPostgreSql PHP में लिखा गया एक समान उपकरण है, और MySQL डेटा प्रकारों को PostgreSQL के साथ-साथ विदेशी कुंजी और अनुक्रमणिका में परिवर्तित कर सकता है। दोनों उपकरण मुफ़्त हैं, हालाँकि कई अन्य उपकरण (मुफ़्त और सशुल्क) मौजूद हैं और नए विकसित किए गए हैं क्योंकि प्रत्येक डेटाबेस सॉफ़्टवेयर के नए संस्करण जारी किए गए हैं।

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

प्रतिकृति विकल्प

यदि MySQL से आ रहा है जहां प्रतिकृति का उपयोग किया गया है, या किसी भी कारण से प्रतिकृति की आवश्यकता है, तो PostgreSQL के पास कई विकल्प उपलब्ध हैं, जिनमें से प्रत्येक के अपने फायदे और नुकसान हैं, जो प्रतिकृति के माध्यम से आवश्यक है।

  • अंतर्निहित:

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

    इन बिल्ट इन विकल्पों में से किसी एक को या तो 'वार्म स्टैंडबाय' या 'हॉट स्टैंडबाय' के रूप में सेट किया जा सकता है। एक 'वार्म स्टैंडबाय' कनेक्शन की अनुमति नहीं देता है, लेकिन समस्या वाले मास्टर को बदलने के लिए किसी भी समय मास्टर बनने के लिए तैयार है। . एक 'हॉट स्टैंडबाय' रीड-ओनली कनेक्शन को कनेक्ट करने और क्वेरी जारी करने की अनुमति देता है, साथ ही जरूरत पड़ने पर किसी भी समय पढ़ने/लिखने के मास्टर बनने के लिए तैयार होने के अलावा।

  • स्लोनी:

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

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

  • बुकार्डो:

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

    कई अन्य प्रतिकृति उपकरण भी हैं, और किसी एप्लिकेशन के लिए सबसे अच्छा काम करने वाले को ढूंढना विशिष्ट आवश्यकताओं पर निर्भर करता है।

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

समुदाय

PostgreSQL के पास एक संपन्न समुदाय है जो किसी भी समस्या/जानकारी की मदद के लिए तैयार है जिसकी आवश्यकता हो सकती है।

  • आईआरसी

    #postgresql नाम का एक सक्रिय IRC चैटरूम फ़्रीनोड पर उपलब्ध है, क्योंकि व्यवस्थापक और डेवलपर PostgreSQL और संबंधित परियोजनाओं/मुद्दों के बारे में विश्वव्यापी चैट करते हैं। स्लोनी, बुकार्डो, आदि जैसी विशिष्टताओं के लिए और भी छोटे कमरे हैं।

  • मेलिंग सूचियां

    'सामान्य', 'व्यवस्थापक', 'प्रदर्शन' और यहां तक ​​कि 'नौसिखिया' के लिए मुट्ठी भर पोस्टग्रेएसक्यूएल मेलिंग सूचियां हैं (सामान्य रूप से पोस्टग्रेएसक्यूएल के लिए नया होने पर शुरू करने के लिए एक शानदार जगह)। मेलिंग सूचियों को दुनिया भर में कई लोगों द्वारा सब्सक्राइब किया गया है, और किसी भी प्रश्न का उत्तर देने के लिए संसाधनों का एक बहुत ही उपयोगी धन प्रदान करता है जिसका उत्तर देने की आवश्यकता हो सकती है।

    PostgreSQL मेलिंग सूचियों की पूरी सूची https://www.postgresql.org/list/

    पर देखी जा सकती है।
  • उपयोगकर्ता समूह

    उपयोगकर्ता समूह समुदाय में शामिल होने और सक्रिय होने के लिए एक बेहतरीन जगह हैं, और दुनिया भर के कई बड़े शहरों में शामिल होने और भाग लेने के लिए एक PostgreSQL उपयोगकर्ता समूह (PUG) उपलब्ध है, और यदि नहीं, तो एक को शुरू करने पर विचार करें। ये समूह नेटवर्किंग, नई तकनीकों को सीखने और यहां तक ​​कि किसी भी स्तर के अनुभव से लोगों से व्यक्तिगत रूप से प्रश्न पूछने के लिए बहुत अच्छे हैं।

  • दस्तावेज़ीकरण

    सबसे महत्वपूर्ण बात, PostgreSQL बहुत अच्छी तरह से प्रलेखित है। कॉन्फ़िगरेशन पैरामीटर, SQL फ़ंक्शंस, उपयोग, सभी के लिए कोई भी जानकारी 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. JDBC स्टेटमेंट उदाहरण - डालें, हटाएं, अपडेट करें, रिकॉर्ड चुनें

  2. Mysqli सिंक त्रुटि से कमांड क्यों दे रहा है?

  3. PyMySQL लोकलहोस्ट पर MySQL से कनेक्ट नहीं हो सकता

  4. MySQL में अंतिम पंक्ति का चयन करें

  5. MySQL/MariaDB सर्वर तक पहुँचने के लिए शीर्ष पाँच सॉफ़्टवेयर अनुप्रयोग