MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB को DynamoDB में माइग्रेट करना, भाग 1

AWS डेटाबेस माइग्रेशन सर्विस (DMS) को शून्य डाउनटाइम के साथ मज़बूती से AWS पर डेटाबेस माइग्रेट करने के लिए डिज़ाइन किया गया है। प्रारंभ में, डीएमएस ने एडब्ल्यूएस रेडशिफ्ट सहित केवल रिलेशनल डेटाबेस का समर्थन किया। अप्रैल 2017 में, DMS ने दो NoSQL डेटाबेस जोड़े:MongoDB एक स्रोत डेटाबेस के रूप में और AWS DynamoDB एक लक्ष्य डेटाबेस के रूप में। दो लेखों के इस ट्यूटोरियल में, हम एक MongoDB डेटाबेस को DMS पर DynamoDB में माइग्रेट करने पर चर्चा करेंगे। MongoDB को DMS स्रोत के रूप में उपयोग करने के लिए आवश्यकताओं में से एक यह है कि MongoDB को प्रतिकृति सेट के रूप में चलना चाहिए, जिसे हम इन दो लेखों में से पहले में एक Docker छवि का उपयोग करके बनाएंगे।

इस लेख में निम्नलिखित भाग हैं:

  • पर्यावरण की स्थापना
  • डेटाबेस माइग्रेशन सेवा के लिए IAM उपयोगकर्ता बनाना
  • एन्क्रिप्शन कुंजी बनाना
  • एक MongoDB डेटाबेस बनाना
  • डायनेमोडीबी टेबल बनाना
  • निष्कर्ष

पर्यावरण की स्थापना

केवल पूर्व-आवश्यकता एक AWS खाता है, जिसे https://aws.amazon.com/resources/create-account/ पर बनाया जा सकता है। हम AWS पर स्रोत और लक्ष्य दोनों डेटाबेस चलाएंगे। MongoDB स्रोत के लिए, हम Docker का उपयोग करेंगे, जिसके लिए हम AWS मार्केटप्लेस से चुने गए CoreOS (स्थिर) द्वारा AMI कंटेनर लिनक्स के साथ EC2 इंस्टेंस लॉन्च करेंगे, जैसा कि चित्र 1 में दिखाया गया है। CoreOS को Linux प्लेटफॉर्म के रूप में चुना गया है क्योंकि इसमें Docker है। उस पर पूर्व-स्थापित।


चित्र 1: EC2 इंस्टेंस लॉन्च करने के लिए CoreOS AMI का चयन करना

CoreOS EC2 इंस्टेंस द्वारा उपयोग किए जाने वाले सुरक्षा समूह में सभी ट्रैफ़िक को स्वीकार करने के लिए इनबाउंड/आउटबाउंड नियम सेट होने चाहिए। इसका मतलब है कि सभी स्रोतों और गंतव्यों के बीच सभी पोर्ट पर सभी प्रोटोकॉल का ट्रैफ़िक (0.0.0.0/0,::/0 )।

डेटाबेस माइग्रेशन सेवा के लिए IAM उपयोगकर्ता बनाना

इस खंड में, हम DMS, EC2, DynamoDB, KMS, IAM और CloudWatch सहित माइग्रेशन बनाने में उपयोग की जाने वाली विभिन्न AWS सेवाओं तक पहुँचने के लिए एक IAM उपयोगकर्ता बनाएंगे। सबसे पहले, हमें आवश्यक अनुमतियों के साथ एक नीति बनाने की आवश्यकता है। इसके बाद, हम एक उपयोगकर्ता बनाएंगे और उपयोगकर्ता को नीति सौंपेंगे। IAM नीति बनाने के लिए, नीतियां select चुनें IAM कंसोल में और नीति बनाएं click क्लिक करें . नीति बनाएं में, अपनी स्वयं की नीति बनाएं select चुनें . समीक्षा नीति में, नीति का नाम निर्दिष्ट करें (DMS एक उदाहरण के रूप में) और नीति दस्तावेज़ फ़ील्ड में निम्न नीति दस्तावेज़ को कॉपी और पेस्ट करें।

{ "संस्करण":"2012-10-17", "विवरण":[ { "प्रभाव":"अनुमति दें", "कार्रवाई":"dms:*", "संसाधन":"*" }, { "प्रभाव":"अनुमति दें", "कार्रवाई":"डायनेमोडब:*", "संसाधन":"*"}, { "प्रभाव":"अनुमति दें", "कार्रवाई":"किमी:*", "संसाधन":"*" }, { "प्रभाव":"अनुमति दें", "कार्रवाई":"iam:*", "संसाधन":"*"}, { "प्रभाव":"अनुमति दें", "कार्रवाई":"ec2:* ", "संसाधन":"*"}, {"प्रभाव":"अनुमति दें", "कार्रवाई":"क्लाउडवॉच:*", "संसाधन":"*"}, {"प्रभाव":"अनुमति दें", "कार्रवाई" ":"aws-marketplace:*", "Resource":"*" }, { "Effect":"Allow", "Action":"logs:*", "Resource":"*" }, { "Effect" ":"अनुमति दें", "कार्रवाई":[ "रेडशिफ्ट:डिस्क्राइब*", "रेडशिफ्ट:मॉडिफाईक्लस्टरIamRoles" ], "संसाधन":"*" } ]}

नीति सत्यापित करें क्लिक करें . यदि आउटपुट "यह नीति मान्य है" है, तो नीति बनाएं क्लिक करें , जैसा कि चित्र 2 में दिखाया गया है।


चित्र 2: IAM नीति बनाना

एक नई IAM नीति बनाई जाती है, जैसा कि चित्र 3 में दिखाया गया है।


चित्र 3: आईएएम नीति "डीएमएस"

इसके बाद, एक IAM उपयोगकर्ता बनाएं। उपयोगकर्ताओं . का चयन करें और उपयोगकर्ता जोड़ें . क्लिक करें , जैसा चित्र 4 में दिखाया गया है।


चित्र 4: उपयोगकर्ता जोड़ें

उपयोगकर्ता जोड़ें . में , एक उपयोगकर्ता नाम specify निर्दिष्ट करें , जैसा कि चित्र 5 में दिखाया गया है। पहुंच प्रकार . के लिए , प्रोग्रामेटिक एक्सेस select चुनें और AWS प्रबंधन कंसोल एक्सेस


चित्र 5: उपयोगकर्ता जोड़ना

कंसोल पासवर्ड . के लिए , कस्टम पासवर्ड select चुनें और एक पासवर्ड निर्दिष्ट करें (चित्र 6 देखें)। अगला क्लिक करें।


चित्र 6: एडब्ल्यूएस एक्सेस टाइप>अगला

. चुनें

अनुमतियाँ सेट करें में, मौजूदा नीतियों को सीधे संलग्न करें click क्लिक करें , जैसा चित्र 7 में दिखाया गया है।


चित्र 7: अनुमतियाँ सेट करना

पहले बनाई गई डीएमएस नीति का चयन करें, और चित्र 8 में दिखाए गए अनुसार अगला क्लिक करें।


चित्र 8: DMS नीति का चयन करना

समीक्षा में, उपयोगकर्ता बनाएं click क्लिक करें , जैसा कि चित्र 9 में दिखाया गया है।


चित्र 9: समीक्षा>उपयोगकर्ता बनाएं

एक IAM उपयोगकर्ता बनाया जाता है। उपयोगकर्ता द्वारा बनाए गए AWS प्रबंधन कंसोल में लॉग इन करने के लिए चित्र 10 में दिखाए गए URL की प्रतिलिपि बनाएँ।


चित्र 10: आईएएम उपयोगकर्ता यूआरएल

एक नया उपयोगकर्ता उपयोगकर्ताओं . में सूचीबद्ध हो जाता है (चित्र 11 देखें)।


चित्र 11: आईएएम उपयोगकर्ता यूआरएल

एन्क्रिप्शन कुंजी बनाना

इसके बाद, DMS माइग्रेशन के लिए उपयोग की जाने वाली एन्क्रिप्शन कुंजी बनाएं। IAM उपयोगकर्ता के रूप में लॉग इन करें और चित्र 10 में कॉपी किए गए URL का उपयोग करें। IAM . चुनें AWS प्रबंधन कंसोल में सेवा दें और एन्क्रिप्शन कुंजियां . चुनें . कुंजी बनाएं क्लिक करें एन्क्रिप्शन कुंजी बनाने के लिए विज़ार्ड प्रारंभ करने के लिए। एन्क्रिप्शन कुंजी बनाने के लिए विज़ार्ड का उपयोग करें (dms ), जैसा कि चित्र 12 में दिखाया गया है।


चित्र 12: नई एन्क्रिप्शन कुंजी

एक MongoDB डेटाबेस बनाना

इस खंड में, हम एक MongoDB डेटाबेस बनाएंगे जिसे हम बाद में DynamoDB में माइग्रेट करेंगे। हम MongoDB इंस्टेंस को चलाने के लिए Docker का उपयोग करेंगे, जिसके लिए CoreOS इंस्टेंस लॉन्च किया गया था। CoreOS इंस्टेंस में लॉग इन करने के लिए, CoreOS इंस्टेंस का सार्वजनिक IP पता प्राप्त करें, जैसा कि चित्र 13 में दिखाया गया है।


चित्र 13: CoreOS इंस्टेंस का सार्वजनिक IP पता

SSH कुंजी जोड़ी और सार्वजनिक IP का उपयोग करके CoreOS इंस्टेंस में लॉग इन करें।

ssh -i "docker.pem" [email protected]

जैसा कि चित्र 14 में दिखाया गया है, CoreOS इंस्टेंस कमांड-लाइन प्रॉम्प्ट प्रदर्शित होता है।


चित्र 14: कोरओएस इंस्टेंस

इसके बाद, MongoDB छवि "mongo" का उपयोग करके MongoDB के लिए एक डॉकर कंटेनर शुरू करने के लिए निम्न कमांड चलाएँ। डॉकर कंटेनर पोर्ट 27017 को होस्ट पर भी 27017 के रूप में -p का उपयोग करके उजागर किया जाता है डॉकर रन . का विकल्प . कंटेनर का नाम "mongo1" और कमांड mongod --replSet repl0 पर सेट है "repl0" नामक एक MongoDB प्रतिकृति सेट शुरू करने के लिए बनाए गए कंटेनर में चलाया जाता है। जैसा कि पहले उल्लेख किया गया है, MongoDB को DMS स्रोत के रूप में उपयोग करने के लिए एक MongoDB प्रतिकृति सेट की आवश्यकता होती है और एक स्टैंडअलोन MongoDB स्रोत के रूप में उपयोग करने योग्य नहीं होता है।

docker run -p 27017:27017 mongo mongod --replSet repl0

डॉकर छवि मोंगो खींचा जाता है और जैसा कि चित्र 15 में "MongoDB प्रारंभ" संदेश द्वारा इंगित किया गया है MongoDB प्रारंभ हो जाता है।


चित्र 15: डॉकर इमेज डॉकर डाउनलोड करना

एक MongoDB उदाहरण पोर्ट 27017 पर शुरू होता है (चित्र 16 देखें)। एक प्रतिकृति सेट अभी तक नहीं बनाया गया है और हम आगे एक प्रतिकृति सेट को इनिशियलाइज़ करेंगे।


चित्र 16: मोंगो इंस्टेंस शुरू हुआ

एक डॉकर कंटेनर docker ps . के साथ सूचीबद्ध हो जाता है कमांड, जैसा कि चित्र 17 में दिखाया गया है।


चित्र 17: मोंगो के लिए डॉकटर कंटेनर की सूची बनाना

Mongo कमांड लाइन इंटरफेस (CLI) के लिए कमांड शेल शुरू करने के लिए निम्न कमांड का उपयोग करें।

docker exec -it mongo1 mongo

MongoDB शेल संस्करण 3.4.4 URL mongodb://127.0.0.1:27017 पर कनेक्ट हो जाता है , जैसा कि चित्र 18 में दिखाया गया है।


चित्र 18: MongoDB शेल कनेक्ट करना

जैसा कि चित्र 19 में दिखाया गया है, Mongo CLI कमांड प्रॉम्प्ट प्रदर्शित होता है।


चित्र 19: मोंगो शैल कमांड प्रॉम्प्ट

MongoDB डेटाबेस को परीक्षण . के रूप में उपयोग करने के लिए सेट करें उपयोग परीक्षण . के साथ कमांड, जैसा कि चित्र 20 में दिखाया गया है।


चित्र 20: डेटाबेस को परीक्षण के रूप में सेट करना

अगला, हम एक प्रतिकृति सेट को इनिशियलाइज़ करेंगे जिसके लिए हमें प्रतिकृति सेट सदस्यों या उदाहरणों को परिभाषित करने की आवश्यकता है। CoreOS EC2 इंस्टेंस का निजी IP प्राप्त करें जिस पर MongoDB के लिए डॉकर कंटेनर चल रहा है (चित्र 21 देखें)।


चित्र 21: CoreOS इंस्टेंस का निजी आईपी

Mongo CLI में, प्रतिकृति सेट कॉन्फ़िगरेशन के लिए निम्न कॉन्फ़िगरेशन निर्दिष्ट करें।

config ={ "_id" :"repl0", "members" :[ { "_id" :0, "host" :"172.30.2.20:27017" } ]}

प्रतिकृति सेट कॉन्फ़िगरेशन सेट हो जाता है, जैसा कि चित्र 22 में दिखाया गया है।


चित्र 22: रेप्लिका सेट कॉन्फ़िगरेशन सेट करना

कॉन्फ़िगरेशन का उपयोग करके प्रतिकृति सेट कॉन्फ़िगरेशन प्रारंभ करें।

rs.initiate(config)

प्रतिकृति सेट आरंभिक हो जाता है, जैसा कि चित्र 23 में दिखाया गया है।


चित्र 23: रेप्लिका सेट इनिशियलाइज़ किया गया

प्रतिकृति सेट कॉन्फ़िगरेशन को आउटपुट करें।

rs.conf()

repl0:PRIMARY कमांड प्रॉम्प्ट इंगित करता है कि प्रतिकृति सेट को प्रारंभ किया गया है और प्रतिकृति सेट प्राथमिक सदस्य को मोंगो सीएलआई कमांड चलाने के लिए सेट किया गया है। प्राथमिक लिखने के संचालन के लिए प्रतिकृति सेट में एकमात्र सदस्य है। wlslog . नामक MongoDB संग्रह बनाएं db.createCollection(<संग्रह का नाम>) . के साथ आदेश।

db.createCollection("wlslog")

एक MongoDB संग्रह बनाया जाता है, जैसा कि चित्र 24 में दिखाया गया है। MongoDB संग्रह दस्तावेजों का एक संग्रह है। दस्तावेज़ बीएसओएन (बाइनरी JSON) प्रारूप में हैं।


चित्र 24: संग्रह बनाना

निम्नलिखित कथन चलाएँ जो Mongo CLI में JSON दस्तावेज़ों को परिभाषित करते हैं।

doc1 ={"टाइमस्टैम्प":"अप्रैल 8, 2014 7:06:16 अपराह्न पीडीटी", "श्रेणी":"नोटिस", "टाइप":"वेबलॉजिकसर्वर", "सर्वरनाम":"एडमिनसर्वर", "कोड ":"BEA-000365", "msg":"सर्वर स्थिति को STANDBY में बदल दिया गया"}doc2 ={"टाइमस्टैम्प":"अप्रैल 8, 2014 7:06:17 PM PDT", "श्रेणी":"नोटिस"," type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000365", "msg":"सर्वर स्थिति STARTING में बदल गई"}doc3 ={"टाइमस्टैम्प":"अप्रैल 8, 2014 7 :06:18 PM PDT", "श्रेणी":"नोटिस", "टाइप":"WebLogicServer", "servername":"AdminServer", "code":"BEA-000365", "msg":"सर्वर स्थिति बदल गई व्यवस्थापक के लिए"}doc4 ={"टाइमस्टैम्प":"अप्रैल 8, 2014 7:06:19 अपराह्न पीडीटी", "श्रेणी":"सूचना", "प्रकार":"वेबलॉजिक सर्वर", "सर्वरनाम":"एडमिन सर्वर"," code":"BEA-000365", "msg":"सर्वर स्थिति RESUMING में बदल गई"}doc5 ={"टाइमस्टैम्प":"अप्रैल 8, 2014 7:06:20 PM PDT", "श्रेणी":"सूचना", "टाइप":"वेबलॉजिक सर्वर", "सर्वरनाम":"एडमिनसर्वर", "कोड":"बीईए -000331", "संदेश":"वेबलॉजिक एडमिन सर्वर शुरू किया गया"} doc6 ={"टाइमस्टैम्प":"अप्रैल 8, 2014 7 :06:21 अपराह्न पीडीटी", "श्रेणी":"नोटिस", "प्रकार":"वेबलॉजिकसर्वर", "सर्वरनाम":"एडमिनसेवर", "कोड":"बीईए -000365", "संदेश":"सर्वर की स्थिति बदलकर चल रही है"} doc7 ={" टाइमस्टैम्प":"अप्रैल 8, 2014 7:06:22 अपराह्न पीडीटी", "श्रेणी":"सूचना", "प्रकार":"वेबलॉजिक सर्वर", "सर्वरनाम":"एडमिनसर्वर", "कोड":"बीईए-000360" , "msg":"सर्वर रनिंग मोड में शुरू हुआ"}

जैसा कि चित्र 25 में दिखाया गया है, JSON दस्तावेज़ों के चर परिभाषित होते हैं।


चित्र 25: JSON दस्तावेज़ों के लिए चर परिभाषित करना

JSON दस्तावेज़ों को wlslog . में जोड़ें संग्रह।

db.wlslog.insert([doc1,doc2,doc3,doc4,doc5,doc6,doc7])

जैसा कि चित्र 26 में आउटपुट द्वारा दर्शाया गया है, सात दस्तावेज़ wlslog . में जुड़ जाते हैं संग्रह।


चित्र 26: JSON दस्तावेज़ संग्रह में जोड़े गए

wlslog . में जोड़े गए दस्तावेज़ों की सूची बनाएं संग्रह।

db.wlslog.find()

जोड़े गए सात दस्तावेज़ सूचीबद्ध हो जाते हैं, जैसा कि चित्र 27 में दिखाया गया है।


चित्र 27: मोंगो संग्रह से दस्तावेज़ ढूँढना या प्राप्त करना

DynamoDB तालिका बनाना

DMS स्रोत के लिए एक MongoDB प्रतिकृति सेट बनाने के बाद, आगे हम DMS लक्ष्य के लिए एक DynamoDB तालिका बनाएंगे। पहले बनाए गए IAM उपयोगकर्ता (dvohra) के रूप में लॉग इन करें और एक नीति असाइन करें। AW प्रबंधन कंसोल में DynamoDB सेवा का चयन करें और तालिका बनाएं select चुनें , जैसा कि चित्र 28 में दिखाया गया है।


चित्र 28: DynamoDB>टेबल बनाएं

DynamoDB तालिका बनाएँ में, एक तालिका का नाम निर्दिष्ट करें और प्राथमिक कुंजी निर्दिष्ट करें , जो कि विभाजन कुंजी भी है, जैसे _id , जैसा कि चित्र 29 में दिखाया गया है। हालांकि तालिका का नाम मनमाना है और wlslog पर सेट है। , जो MongoDB प्रतिकृति सेट में बनाए गए MongoDB संग्रह के समान है, प्राथमिक कुंजी को _id पर सेट किया जाना चाहिए क्योंकि प्रत्येक MongoDB दस्तावेज़ को प्राथमिक कुंजी फ़ील्ड असाइन की जाती है _id


चित्र 29: DynamoDB तालिका बनाना

DynamoDB तालिका wlslog बन जाता है, जैसा कि चित्र 30 में दिखाया गया है।


चित्र 30: DynamoDB तालिका wlslog बनाई गई

DynamoDB तालिका wlslog पर क्लिक करें प्राथमिक कुंजी _id . सहित डैशबोर्ड और तालिका विवरण में , प्रदर्शित होते हैं (चित्र 31 देखें)।


चित्र 31: DynamoDB तालिका wlslog विवरण

जब कोई DMS माइग्रेशन बनाया जाता है, तो एक IAM भूमिका dms-vpc-role प्रबंधित नीति के साथ AmazonDMSVPCManagementRole स्वतः निर्मित हो जाता है। DMS सेवा के लिए DynamoDB सेवा तक पहुँचने के लिए, हमें सेवा पहुँच भूमिका को संशोधित करने की आवश्यकता है dms-vpc-role निम्नलिखित नीति दस्तावेज़ जोड़ने के लिए, जो DMS से DynamoDB तक पहुँच प्रदान करता है।

{ "संस्करण":"2012-10-17", "कथन":[{"प्रभाव":"अनुमति दें", "कार्रवाई":[ "डायनेमोडब:*" ], "संसाधन":["*" ] }]}

DMS नीति बनाने के लिए उपयोग की जाने वाली समान प्रक्रिया का उपयोग करते हुए, एक नीति DynamoDB बनाएं और नीति दस्तावेज़ फ़ील्ड-बॉक्स में पूर्ववर्ती नीति दस्तावेज़ निर्दिष्ट करें, जैसा कि चित्र 32 में दिखाया गया है। नीति बनाएँ पर क्लिक करें। ।


चित्र 32: समीक्षा नीति>नीति बनाएं

DynamoDB नीति बनाई जाती है, जैसा कि चित्र 33 में दिखाया गया है।


चित्र 33: IAM नीति DynamoDB बनाई गई

dms-vpc-भूमिका जिसमें DynamoDB नीति को जोड़ा जाना है, वह चित्र 34 में दिखाया गया है।


चित्र 34: डीएमएस वीपीसी भूमिका

dms-vpc-भूमिका Click पर क्लिक करें और अटैच पॉलिसी का उपयोग करके DynamoDB नीति जोड़ें। AmazonDMSVPCManagementRole और DynamoDB नीतियों को प्रबंधित नीतियों के रूप में सूचीबद्ध किया जाना चाहिए, जैसा कि चित्र 35 में दिखाया गया है।


चित्र 35: DMS VPC भूमिका में अनुमति नीतियां

निष्कर्ष

इस लेख में, हमने MongoDB को Amazon DynamoDB में माइग्रेट करने के लिए AWS डेटाबेस माइग्रेशन सर्विस (DMS) का उपयोग करके पेश किया। हमने माइग्रेट करने के लिए डेटा स्रोत के रूप में एक MongoDB प्रतिकृति सेट बनाकर शुरुआत की और गंतव्य तालिका के रूप में एक DynamoDB तालिका भी बनाई। बाद के लेख में, हम डेटा माइग्रेट करने के लिए DMS माइग्रेशन बनाने और चलाने पर चर्चा करेंगे।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. कस्टम बीएसओएन मार्शलिंग को संभालना

  2. क्या मुझे मैन्युअल रूप से एक नेवला कनेक्शन बंद करने की आवश्यकता है?

  3. MongoDB में एक कॉलम का उच्चतम मूल्य प्राप्त करना

  4. मैं जावा मोंगोड्राइवर का उपयोग करके एक मोंगोडीबी जेएस स्क्रिप्ट कैसे निष्पादित करूं?

  5. Mongoose के साथ डेटाबेस कैसे छोड़ें?