मालिकाना इंजन से ओपन सोर्स इंजन में माइग्रेट करना एक प्रवृत्ति है जो उद्योग में बढ़ रही है।
हालांकि, डेटाबेस माइग्रेशन को हल्के में नहीं लिया जाना चाहिए।
इस ब्लॉग में, आइए देखें कि Microsoft SQL सर्वर से MySQL सर्वर में जाने के लिए क्या आवश्यक है और इसे कैसे करना है।
तो, आइए समीक्षा करते हैं कि MS SQL क्या है और MySQL क्या है।
Microsoft SQL सर्वर एक बहुत ही लोकप्रिय RDBMS है जिसमें प्रतिबंधात्मक लाइसेंसिंग और स्वामित्व की मामूली लागत है यदि डेटाबेस महत्वपूर्ण आकार का है, या ग्राहकों की एक महत्वपूर्ण संख्या द्वारा उपयोग किया जाता है। यह एक बहुत ही उपयोगकर्ता के अनुकूल और सीखने में आसान इंटरफ़ेस प्रदान करता है, जिसके परिणामस्वरूप एक बड़ा उपयोगकर्ता आधार स्थापित हो गया है। अन्य RDBMS सॉफ़्टवेयर की तरह, MS SQL सर्वर SQL के शीर्ष पर बनाया गया है, एक मानकीकृत प्रोग्रामिंग भाषा जिसका उपयोग डेटाबेस व्यवस्थापक (DBA) और अन्य IT पेशेवर डेटाबेस को प्रबंधित करने और उनमें मौजूद डेटा को क्वेरी करने के लिए करते हैं। SQL सर्वर Transact-SQL (T-SQL) से जुड़ा है, जो Microsoft से SQL का एक कार्यान्वयन है जो मानक भाषा में मालिकाना प्रोग्रामिंग एक्सटेंशन का एक सेट जोड़ता है।
MySQL एक Oracle समर्थित ओपन सोर्स रिलेशनल डेटाबेस मैनेजमेंट सिस्टम है जो SQL पर आधारित है।
यह डीबी-इंजन रैंकिंग के अनुसार दुनिया का दूसरा सबसे लोकप्रिय डेटाबेस है और संभवत:ग्रह पर सबसे अधिक वर्तमान डेटाबेस बैकएंड है क्योंकि यह दुनिया भर में अधिकांश इंटरनेट सेवाओं को चलाता है।
MySQL लगभग सभी प्लेटफॉर्म पर चलता है, जिसमें Linux, UNIX और Windows शामिल हैं। यह एक ओपन सोर्स एंटरप्राइज स्टैक का एक महत्वपूर्ण घटक है जिसे LAMP कहा जाता है। MySQL एंटरप्राइज़ संस्करण सुरक्षा और उच्च उपलब्धता के लिए समर्थन और अतिरिक्त सुविधाओं के साथ आता है।
https://db-engines.com/en/rankingलागत-बचत, प्लेटफ़ॉर्म संगतता और MySQL के फ़ीचर सेट का संयोजन इसे वास्तव में आकर्षक बनाता है, और कई संगठन इन सुविधाओं का लाभ उठाने के लिए MS SQL सर्वर से इस ओपन-सोर्स प्लेटफ़ॉर्म में माइग्रेट कर रहे हैं।
माइग्रेट क्यों करें?
आमतौर पर, माइग्रेट करने का पहला कारण लागत है। SQL सर्वर Microsoft का एक मालिकाना डेटाबेस है। एक्सप्रेस नामक एक मुफ़्त SQL सर्वर संस्करण है, लेकिन इसकी कुछ सीमाएँ हैं जैसे 10GB डेटाबेस सीमा, सीमित मात्रा में CPU, सीमित मात्रा में RAM, और बहुत कुछ, इसलिए शायद आपको इसे उत्पादन में उपयोग करने के लिए लाइसेंस का भुगतान करना होगा। आप यहां मूल्य निर्धारण की जांच कर सकते हैं।
MySQL के साथ, आप समुदाय संस्करण का मुफ्त और बिना किसी सीमा के उपयोग कर सकते हैं।
एक अन्य कारण ऑपरेटिंग सिस्टम का समर्थन हो सकता है। MS SQL सर्वर के विपरीत, MySQL Linux, Windows, Mac OS, Solaris और कई अन्य सहित ऑपरेटिंग सिस्टम की एक विस्तृत श्रृंखला का समर्थन करता है।
स्थापना और कॉन्फ़िगरेशन के संबंध में, MySQL तेजी से स्थापित होता है, एक छोटा पदचिह्न होता है जबकि अभी भी काफी बड़े डेटाबेस को प्रबंधित करने में सक्षम होता है, और इसमें कम कॉन्फ़िगरेशन नॉब्स होते हैं जिन्हें SQL सर्वर की तुलना में ट्यूनिंग की आवश्यकता होती है।
उच्च उपलब्धता के क्षेत्र में, MySQL के पास प्रतिकृति, SAN और MySQL क्लस्टर सहित कई सिद्ध समाधान हैं, जो परिदृश्य के आधार पर SQL सर्वर के बराबर या सर्वश्रेष्ठ हैं।
महान MySQL समुदाय एक उच्च गुणवत्ता वाले उत्पाद और एक दूसरे की सफलता सुनिश्चित करने में मदद करने के लिए एक साथ काम करने वाले सभी लोगों के एक महान डेवलपर और डीबीए नेटवर्क सहित कई लाभ प्रदान करता है।
आपको क्या पता होना चाहिए
डेटा और इंडेक्स संरचनाओं को MySQL पर ले जाना आम तौर पर एक चुनौतीपूर्ण कार्य नहीं है क्योंकि MySQL सभी महत्वपूर्ण डेटा प्रकार, टेबल डिज़ाइन और इंडेक्स संरचनाओं का समर्थन करता है। वैसे भी, कुछ वस्तुएं हैं जो कुछ चुनौतियों का सामना करेंगी। कोड संबंधित ऑब्जेक्ट, जैसे संग्रहीत कार्यविधियाँ, गैर-मानक ANSI सुविधाओं का उपयोग कर सकती हैं, क्योंकि Transact-SQL में उनमें से कई हैं।
इसलिए, माइग्रेट करते समय निम्नलिखित मदों पर विशेष ध्यान देने की आवश्यकता होगी:
- विधानसभा
- प्रकार
- डीडीएल और कथन-आधारित ट्रिगर (MySQL में पंक्ति-आधारित ट्रिगर हैं)
- स्वामित्वपूर्ण SQL सर्वर फ़ंक्शन कॉल
- गतिशील T-SQL के कुछ मामले
उसी तरह, समानार्थी और सुरक्षा भूमिकाओं को एक वैकल्पिक हल की आवश्यकता होगी क्योंकि उन्हें सीधे MySQL में माइग्रेट नहीं किया जा सकता है।
डेटाटाइप जिन्हें रूपांतरण की आवश्यकता है
निम्न मानचित्र का उपयोग SQL सर्वर डेटा प्रकारों को परिवर्तित करने के लिए किया जा सकता है जो MySQL से 1-टू-1 संबंध में मैप नहीं करते हैं:
एसक्यूएल सर्वर | MySQL |
---|---|
पहचान | AUTO_INCREMENT |
NEXT, राष्ट्रीय पाठ | पाठ वर्ण सेट UTF8 |
SMALLDATETIME | DATETIME |
पैसा | दशमलव(19,4) |
थोड़ा पैसा | दशमलव(10,4) |
UNIQUEIDENTIFIER | बाइनरी(16) |
SYSNAME | CHAR(256) |
इसे कैसे करें
MS SQL सर्वर से MySQL में माइग्रेशन करने के लिए Amazon DMS या डेटा इंटीग्रेशन (केटल) जैसे कई टूल हैं, लेकिन इस मामले में, हम MySQL वर्कबेंच माइग्रेशन टूल का उपयोग करेंगे।
यह टूल एक जटिल माइग्रेशन प्रक्रिया को कॉन्फ़िगर और प्रबंधित करने के सभी चरणों में विज़ुअल, पॉइंट और क्लिक उपयोग में आसानी प्रदान करके DBA और डेवलपर समय बचाने के लिए डिज़ाइन किया गया है:
- डेटाबेस माइग्रेशन:Microsoft SQL Server, Microsoft Access, PostgreSQL, Sybase ASE, Sybase SQL Anywhere, SQLite, आदि से माइग्रेशन की अनुमति देता है।
- माइग्रेशन प्रोजेक्ट प्रबंधित करें:माइग्रेशन को कॉन्फ़िगर, कॉपी, संपादित, निष्पादित और शेड्यूल करने की अनुमति देता है।
- स्रोत और लक्ष्य चयन:उपयोगकर्ताओं को विशिष्ट डेटा स्रोतों को परिभाषित करने और माइग्रेशन से पहले स्रोत डेटा का विश्लेषण करने की अनुमति देता है।
- ऑब्जेक्ट माइग्रेशन:उपयोगकर्ताओं को माइग्रेट करने के लिए ऑब्जेक्ट का चयन करने, जहां आवश्यक हो, मैपिंग को लक्षित करने के लिए एक स्रोत असाइन करने, माइग्रेशन स्क्रिप्ट संपादित करने और लक्ष्य स्कीमा बनाने की अनुमति देता है।
- संस्करण उन्नयन:माइग्रेशन का उपयोग करके, उपयोगकर्ता आसानी से पुराने MySQL संस्करणों से डेटाबेस को नवीनतम में स्थानांतरित कर सकते हैं।
तो चलिए करते हैं।
इस कार्य के लिए, हम मान रहे हैं कि आपके पास:
- आपके डेटाबेस के साथ स्थापित SQL सर्वर माइग्रेट करने के लिए:हम MS SQL Server Express 2014 संस्करण पर Northwind नमूना डेटाबेस का उपयोग करेंगे।
- MySQL सर्वर स्थापित:हमारे पास CentOS पर MySQL 5.7.25 सामुदायिक संस्करण है।
- कार्य करने के लिए विशेषाधिकार वाले दोनों डेटाबेस सर्वर पर उपयोगकर्ता:हमारे पास SQL सर्वर पर उपयोगकर्ता "sa" और MySQL पर सभी विशेषाधिकारों के साथ उपयोगकर्ता "माइग्रेशन" है।
- MySQL कार्यक्षेत्र दोनों डेटाबेस सर्वर तक पहुंच के साथ स्थापित:हम MySQL कार्यक्षेत्र 6.3 का उपयोग करेंगे।
माइग्रेशन प्रक्रिया शुरू करने के लिए, MySQL वर्कबेंच मुख्य स्क्रीन पर, डेटाबेस-> माइग्रेशन विज़ार्ड पर जाएं।
हमें यह पुष्टि करने के लिए किसी और चीज की जांच करनी चाहिए कि क्या हम कार्य जारी रख सकते हैं। अगर सब कुछ ठीक लगता है, तो हम स्टार्ट माइग्रेशन पर प्रेस कर सकते हैं।
इस चरण में, हमें स्रोत डेटाबेस के बारे में जानकारी प्रदान करने की आवश्यकता है, इस मामले में, SQL सर्वर।
जैसा कि आप पिछली छवि में देख सकते हैं, हम अपने स्रोत पैरामीटर को कॉन्फ़िगर करेंगे:
Database System: Microsoft SQL Server
Connection Method: ODBC (Native)
Driver: SQL Server
Server: localhost
Username: sa
सर्वर पैरामीटर के बारे में, हम SQL सर्वर नोड पर MySQL कार्यक्षेत्र चला रहे हैं, लेकिन शायद आप अपने डेटाबेस सर्वर के IP पते / होस्टनाम का उपयोग करेंगे।
अब, हम टेस्ट कनेक्शन बटन का उपयोग करके कनेक्शन की जांच कर सकते हैं।
फिर, हमें लक्ष्य पैरामीटर जोड़ने की जरूरत है, इस मामले में, MySQL सर्वर:
Connection Method: Standard (TCP/IP)
Hostname: 192.168.100.192
Port: 3306
Username: migration
और अतिरिक्त जानकारी की पुष्टि करने के लिए टेस्ट कनेक्शन पर दबाएं।
अगले चरण में, MySQL वर्कबेंच कैटलॉग और स्कीमा की सूची लाने के लिए हमारे SQL सर्वर से कनेक्ट होगा।
अब, हम सूची से नॉर्थविंड नमूना डेटाबेस चुनेंगे।
हम चुन सकते हैं कि रिवर्स इंजीनियर स्कीमा और ऑब्जेक्ट को कैसे मैप किया जाना चाहिए। हम Catalog.Schema.Table -> Catalog.Table विकल्प का उपयोग करेंगे, इसलिए हमारे MySQL में, हमारे पास Northwind नामक एक डेटाबेस होगा, और हमारे SQL सर्वर डेटाबेस में वर्तमान तालिकाएँ होंगी।
अगर सब कुछ ठीक रहा, तो हमारे पास माइग्रेट किए जाने वाले ऑब्जेक्ट की एक सूची होगी।
इस मामले में, हमारे पास टेबल ऑब्जेक्ट, व्यू ऑब्जेक्ट और रूटीन ऑब्जेक्ट हैं। हम केवल टेबल ऑब्जेक्ट्स का चयन करेंगे क्योंकि बाकी ऑब्जेक्ट के लिए हमें संबंधित MySQL समकक्ष कोड को मैन्युअल रूप से जांचना चाहिए।
इस चरण में, स्रोत से वस्तुओं को MySQL संगत वस्तुओं में बदल दिया जाता है।
यदि सब कुछ ठीक रहा, तो हम लक्ष्य में माइग्रेट किए गए स्कीमा को कैसे बनाना चाहते हैं, यह चुनकर जारी रख सकते हैं। हम डिफ़ॉल्ट "लक्ष्य RDBMS में स्कीमा बनाएं" विकल्प का उपयोग करेंगे।
अब, निर्माण स्कीमा प्रक्रिया की जाँच करते हैं।
अगले चरण में, हम प्रत्येक स्क्रिप्ट निष्पादन के परिणाम की जांच कर सकते हैं, और हम अपने MySQL सर्वर पर बनाए गए नए डेटाबेस की जांच कर सकते हैं।
हमारे MySQL सर्वर में, हमारे पास है:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| NORTHWND |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
इस बिंदु पर, हमारे पास डेटाबेस संरचना होगी, लेकिन हमारे पास अभी तक डेटा नहीं है। अब, हम चुनेंगे कि हम MySQL सर्वर में डेटा को कैसे कॉपी करना चाहते हैं। हम "RDBMS को लक्षित करने के लिए तालिका डेटा की ऑनलाइन प्रतिलिपि" विकल्प का उपयोग करेंगे।
और हम MySQL वर्कबेंच एप्लिकेशन से कॉपी प्रक्रिया की निगरानी कर सकते हैं।
इस बिंदु पर, हमारे पास सभी जानकारी हमारे MySQL सर्वर पर माइग्रेट हो गई है।
mysql> SELECT * FROM NORTHWND.Region;
+----------+-------------------+
| RegionID | RegionDescription |
+----------+-------------------+
| 1 | Eastern |
| 2 | Western |
| 3 | Northern |
| 4 | Southern |
+----------+-------------------+
4 rows in set (0.00 sec)
अंतिम चरण में, हम माइग्रेशन रिपोर्ट की जांच कर सकते हैं और कार्य समाप्त कर सकते हैं।
माइग्रेशन हो गया!
परीक्षण
माइग्रेशन प्रक्रिया से पहले, आपको नए इंजन के साथ व्यवहार जानने के लिए एप्लिकेशन और MySQL डेटाबेस का परीक्षण करना चाहिए।
माइग्रेशन से पहले प्रदर्शन को मान्य करने के लिए बेंचमार्क परीक्षण करना भी उपयोगी होना चाहिए।
ध्यान रखने योग्य कुछ युक्तियां हैं:
- परीक्षण को अपेक्षित उपयोगकर्ता कनेक्शनों की संख्या का अनुकरण करना चाहिए।
- जुड़े सत्रों को कार्य करना चाहिए क्योंकि वे एक सामान्य दिन के दौरान होते हैं।
- आपको अपने डेटाबेस को परीक्षण डेटा के साथ लोड करना चाहिए जो आपके डेटाबेस के वास्तविक दुनिया में होने की अपेक्षा के आकार के लगभग है।
इस परीक्षण कार्य के लिए, आप mysqlslap टूल का उपयोग कर सकते हैं। यह एक नैदानिक कार्यक्रम है जिसे एक MySQL सर्वर के लिए क्लाइंट लोड का अनुकरण करने और प्रत्येक चरण के समय की रिपोर्ट करने के लिए डिज़ाइन किया गया है।
निष्कर्ष
जैसा कि हमने इस ब्लॉग में समीक्षा की है, ऐसे कई कारण हैं जो एक व्यवसाय को एक मालिकाना इंजन से एक खुले स्रोत में जाने के लिए डेटाबेस माइग्रेशन का निर्णय ले सकते हैं। हमने यहां एक लोकप्रिय उपयोग मामला देखा है, SQL सर्वर से MySQL में माइग्रेशन, और एक व्यापक रूप से ज्ञात MySQL टूल, MySQL वर्कबेंच का उपयोग करके चरण-दर-चरण उदाहरण बनाया है। हमें उम्मीद है कि आपको यह लेख उपयोगी लगा होगा।