यह कोई रहस्य नहीं है कि हाल के वर्षों में एक सेवा के रूप में इन्फ्रास्ट्रक्चर और एक सेवा के रूप में प्लेटफ़ॉर्म अपनी क्षमताओं, विशेष रूप से संसाधन दक्षता और लचीलेपन के कारण विभिन्न परियोजनाओं पर तेजी से व्यापक हो गए हैं। परिणामस्वरूप, Microsoft ने एक उपयोगकर्ता-अनुकूल वातावरण बनाने में बहुत समय और प्रयास खर्च किया जिसमें SQL का उपयोग किया जा सकता है।
सोशल डिस्कवरी ग्रुप टीम हमारे उत्पादों को सशक्त बनाने के लिए एसक्यूएल सहित विभिन्न प्रकार के डेटाबेस का उपयोग करती है। 40+ वैश्विक सेवाओं के पोर्टफोलियो के साथ, जो दुनिया भर में मिलने और जुड़ने में मदद करती है, हमारे उपयोगकर्ता आधार में दुनिया भर में 250 मिलियन से अधिक लोग शामिल हैं। उपयोगकर्ताओं के लिए हमारे उत्पादों की विश्वसनीयता की गारंटी के लिए, हम क्लाउड में प्रमुख बुनियादी ढांचे का हिस्सा रखते हैं। इससे इसकी लचीलापन, सुरक्षा और लचीलेपन को बढ़ाने में मदद मिलती है।
हम कुबेरनेट्स क्लस्टर सहित विभिन्न प्लेटफार्मों पर सर्वर और सेवा डेटाबेस तैनात करने में काफी अनुभवी हैं। हालाँकि, हमें Azure क्लाउड में संबंधित SQL डेटाबेस इन्फ्रास्ट्रक्चर के एक हिस्से को यथासंभव लचीला, कुशल और विश्वसनीय बनाने की आवश्यकता का सामना करना पड़ा। Microsoft Azure क्लाउड में SQL का उपयोग करने के 3 तरीके हैं:
शोध के बाद, हमने Azure SQL डेटाबेस का उपयोग करने का निर्णय लिया है। उन लोगों के लिए स्पष्ट करने के लिए जिन्होंने तथाकथित Azure SQL डेटाबेस के बारे में कभी नहीं सुना है, वे Microsoft Azure के भाग के रूप में प्रदान किए गए प्रबंधित क्लाउड डेटाबेस हैं।
मैंने निम्नलिखित लाभों पर प्रकाश डाला है:
आइए अब चरण दर चरण चीजों के बारे में बात करते हैं और डेटाबेस को तैनात करने और बनाने की प्रक्रिया पर एक नजर डालते हैं। यह पावर शेल स्क्रिप्ट या एज़्योर सीएलआई का उपयोग करके किया जा सकता है, लेकिन स्पष्टता के लिए, मैं पोर्टल के ग्राफिकल इंटरफ़ेस का उपयोग करके प्रक्रिया को देखता हूं। ऐसा करने के लिए, Azure SQL पर जाएँ, 'बनाएँ' पर क्लिक करें और 'SQL डेटाबेस' चुनें।
हम संसाधन समूह निर्दिष्ट करते हैं, चुनते हैं कि क्या कोई मौजूदा सर्वर है या एक नया सर्वर बनाते हैं (व्यवस्थापक का नाम और डेटा दर्शाते हुए), और डेटाबेस के लिए एक नाम लेकर आते हैं। मैं हमारे सामान्य कार्यभार के लिए गणना और भंडारण संसाधनों के संतुलित मिश्रण के साथ डीटीयू (डेटाबेस लेनदेन इकाई) आधारित बंडल पैकेज चुनने की सलाह दूंगा।
सेटिंग्स के लिए कुछ टैब भी हैं: नेटवर्क, सुरक्षा, अतिरिक्त सेटिंग्स और टैग; न्यूनतम मानक कॉन्फ़िगरेशन के लिए, इन्हें डिफ़ॉल्ट रूप से अपरिवर्तित छोड़ा जा सकता है। फिर हम डेटाबेस बनने की प्रतीक्षा करते हैं। यह न्यूनतम सेटअप पूरा करता है, और आधार तैयार हो जाता है।
डेटाबेस संसाधनों का आकार बहुत आसानी से बदला जा सकता है, वस्तुतः एक क्लिक से, और अपर्याप्त संसाधनों के मामले में, हम आकार और प्रदर्शन के संदर्भ में आवश्यक पैरामीटर सेट कर सकते हैं।
फिर आप अपने डेटाबेस से किसी भी तरह से बाहर से जुड़ सकते हैं, अपना आईपी पता या सबनेट जोड़ना भूले बिना, या उस सर्वर के फ़ायरवॉल में सभी कनेक्शनों को अनुमति देना, जिस पर यह डेटाबेस होस्ट किया गया है।
SQL सर्वर प्रबंधन स्टूडियो (SSMS) के माध्यम से कनेक्ट करना और आगे प्रबंधित करना सुविधाजनक है, लेकिन अन्य टूल और Azure पोर्टल के माध्यम से भी ऐसा करना संभव है।
सार्वजनिक कनेक्शन बिंदु के अलावा, आप आवश्यक सबनेट में एक सर्वर जोड़कर और निजी DNS ज़ोन को कॉन्फ़िगर करके एक निजी कनेक्शन भी बना सकते हैं।
दोष सहनशीलता के बारे में बोलते हुए, यहां हम फेलओवर का एक बहुत ही सुविधाजनक और सहज कार्यान्वयन देखते हैं, जो विभिन्न क्षेत्रों में स्थित सर्वरों की सुरक्षा का एक समूह है।
Azure में, फ़ेलओवर समूह, फ़ोर्स्ड फ़ेलओवर और स्वचालित फ़ेलओवर मोड में सर्वर पर डेटाबेस जोड़ना और हटाना संभव है।
इसे आप नीचे स्क्रीनशॉट में देख सकते हैं. आइए फेलओवर समूह के लिए एक नाम लेकर आएं और सर्वर को फेलओवर में डाल दें। निर्दिष्ट डेटाबेस का सिंक्रनाइज़ेशन स्वचालित रूप से प्रारंभ हो जाएगा. दूसरा सर्वर रीड-ओनली मोड में होगा। विफलता की स्थिति में, ट्रैफ़िक स्वचालित रूप से दूसरे क्षेत्र में स्विच हो जाता है, और प्राथमिक और द्वितीयक सर्वर स्वचालित रूप से स्थान बदल लेते हैं।
लेकिन यदि डेटाबेस में डेटा-स्तर की समस्या है तो फ़ेलओवर मदद नहीं करेगा। निश्चित रूप से इस मामले में, आपको बैकअप बनाने की आवश्यकता है। पोर्टल के भीतर और तृतीय-पक्ष टूल या, उदाहरण के लिए, Azure DevOps (पाइपलाइन में आप SqlAzureDacpacDeployment + AzureFileCopy कार्य का उपयोग कर सकते हैं) दोनों के माध्यम से बैकअप कॉन्फ़िगर करना संभव है। पोर्टल के भीतर, बैकअप टैब पर बैकअप कॉन्फ़िगर किए जाते हैं और आवश्यक भंडारण नीतियां सेट की जाती हैं।
यदि आप तृतीय-पक्ष बैकअप टूल का उपयोग करना पसंद करते हैं, तो मैं Azure DevOps या SQL पैकेज टूल पर विचार करने की अनुशंसा करूंगा।
मेरी राय में पोर्टल पर पुनर्प्राप्ति प्रक्रिया स्वयं बहुत सुविधाजनक नहीं है। पहली चीज़ जो आप नोटिस करते हैं वह सरल परीक्षण डेटाबेस के लिए लंबा पुनर्प्राप्ति समय है। उदाहरण के लिए, कल के बैकअप से 30एमबी मूल आकार के डेटाबेस को पुनर्स्थापित करने में मुझे आधे घंटे से अधिक समय लगा! Microsoft Azure समर्थन से संपर्क करने के बाद, मुझे पुनर्प्राप्ति के लिए PowerShell स्क्रिप्ट का उपयोग करने की सलाह दी गई और सूचित किया गया कि पुनर्प्राप्ति प्रक्रिया के लिए डेटाबेस का आकार कम से कम S3 होना चाहिए, और बाद में आकार कम किया जा सकता है। नीचे मैं इस विषय पर अपनी कुछ स्क्रिप्ट और विकास प्रस्तुत करने जा रहा हूं, उन्हें सुधारा और बढ़ाया जा सकता है लेकिन मुझे यकीन है कि आप में से कई लोग उन्हें उपयोगी पा सकते हैं।
मैं आपको कदम दर कदम आगे बढ़ाऊंगा:
“ #Variables in use $Database = Get-AzSqlDatabase -ResourceGroupName "Test" -ServerName "test-serv1" -DatabaseName "dbforscript" $TargetDB = "dbforscript_new" $PITRtimedate = "2022-12-02 10:00:00Z" ##вам нужно увидеть действительную дату и время на портале $PITRSLO = "S3" $PITRNEWSLO = "S0" $PITRedition = "Standard" $failoverGroupRG = "Test" $failoverGroupS = "test-serv1" $failoverGroupDB = "dbforscript" $removedbfromfgRG = "Test" $removedbfromfgS = "test-serv1" $removedbfromfgDB = "XXXXX" $dropreplicaRG = "Test" $dropreplicaS = "test-serv2" $dropreplicaDB = "dbforscript" $sourcedbRG = "Test" $sourcedbS = "test-serv1" $sourcedbDBname = "dbforscript" $sourcedbDBNEWname = "dbforscript_old" $TargetDBNEWname = "dbforscript" “
1 - यह कोड एक भिन्न नाम से डेटाबेस पुनर्स्थापना आरंभ करता है। यदि पुनर्स्थापित किए जा रहे डेटाबेस का मूल नाम "dbforscript" है, तो पुनर्स्थापित डेटाबेस का नाम dbforscript_new होगा। पुनर्स्थापित डेटाबेस SLO संस्करण S3 या उच्चतर होगा, जो इस क्रिया को करने का अनुशंसित तरीका है, इसके लिए वेरिएबल $PITRSLO = "S3" है, आप S3 या उच्चतर का उपयोग कर सकते हैं। इसके बाद हम एसएलओ स्तर को मूल स्तर पर रीसेट कर देंगे, यह केवल पुनर्प्राप्ति के लिए है।
“Restore-AzSqlDatabase -FromPointInTimeBackup -PointInTime $PITRtimedate -ResourceGroupName $Database.ResourceGroupName -ServerName $Database.ServerName -TargetDatabaseName $TargetDB -ResourceId $Database.ResourceID -Edition $PITRedition -ServiceObjectiveName $PITRSLO”
2 - यह कोड फ़ेलओवर समूह से स्रोत डेटाबेस को हटा देगा: स्रोत डेटाबेस: dbforscript।
“$failoverGroup = Get-AzSqlDatabase -ResourceGroupName $failoverGroupRG -ServerName $failoverGroupS -DatabaseName $failoverGroupdb | Remove-AzSqlDatabaseFromFailoverGroup -ResourceGroupName $removedbfromfgRG -ServerName $removedbfromfgS -FailoverGroupName $removedbfromfgDB”
3 - यह कोड प्रतिकृति डेटाबेस को उस सर्वर से हटा देगा जहां वह स्थित है: परीक्षण-सर्व2 सर्वर पर dbforscript।
“Remove-AzSqlDatabase -ResourceGroupName $dropreplicaRG -ServerName $dropreplicaS -DatabaseName $dropreplicaDB”
4 - यह कोड मूल डेटाबेस का नाम बदलकर एक अलग नाम कर देगा: नाम बदलने के बाद, dbforscript का नाम dbforscript_old हो जाएगा।
“Set-AzSqlDatabase -ResourceGroupName $sourcedbRG -DatabaseName $sourcedbDBname -ServerName $sourcedbS -NewName $sourcedbDBNEWname”
5 - यह कोड पुनर्स्थापित डेटाबेस का नाम बदलकर मूल डेटाबेस नाम कर देगा, dbforscript_new का नाम बदलकर dbforscript कर देगा।
“Set-AzSqlDatabase -ResourceGroupName $Database.ResourceGroupName -DatabaseName $TargetDB -ServerName $Database.ServerName -NewName $TargetDBNEWname”
6 - यह कोड आपके डेटाबेस SLO स्तर को पिछले (मूल) S0 मान पर लौटा देगा। यदि आपका डेटाबेस बेसिक है, तो कृपया आप पोर्टल के बाद S0 से बेसिक में अपग्रेड कर सकते हैं।
“Set-AzSqlDatabase -ResourceGroupName $Database.ResourceGroupName -DatabaseName $TargetDBNEWname -ServerName $Database.ServerName -Edition $PITRedition -RequestedServiceObjectiveName $PITRNEWSLO -MaxSizeBytes 10737418240”
7 - अंतिम कोड पुनर्स्थापित डेटाबेस को फ़ेलओवर समूह में जोड़ता है, जिसका मूल नाम पहले से ही है (क्योंकि हमने इसे पिछले कोड में बदल दिया है)।
“$failoverGroup = Get-AzSqlDatabase -ResourceGroupName $failoverGroupRG -ServerName $failoverGroupS -DatabaseName $TargetDBNEWname | Add-AzSqlDatabaseToFailoverGroup -ResourceGroupName $failoverGroupRG -ServerName $failoverGroupS -FailoverGroupName $removedbfromfgDB”
आप कमांड के बाद - एररएक्शन स्टॉप पैरामीटर जोड़ने पर विचार कर सकते हैं। यह त्रुटि की स्थिति में निम्नलिखित आदेशों को निष्पादित होने से रोकेगा, और कोई स्नोबॉलिंग नहीं होगी।
इसके अलावा, आप निष्पादन समय की गणना करने के लिए स्क्रिप्ट की शुरुआत और अंत में गेट-डेट जोड़ सकते हैं। मेरे मामले में, ऐसी स्क्रिप्ट द्वारा लगभग 3.3 जीबी का डेटाबेस 6 मिनट से भी कम समय में पुनर्स्थापित किया गया था।
यदि आप चाहें, तो आप निश्चित रूप से स्क्रिप्ट को अनुकूलित कर सकते हैं, इसे Azure DevOps के माध्यम से जोड़ सकते हैं, चर की संख्या कम कर सकते हैं, या कुछ हार्डकोड कर सकते हैं, लेकिन मैंने इसे यथासंभव विस्तार से और इस तरह से वर्णन करने का प्रयास किया है कि हर कोई समझ सके।
Azure पर डेटाबेस की निगरानी और डेटाडॉग जैसी विभिन्न प्रणालियों के साथ एकीकृत करने की क्षमता पर विशेष ध्यान देने की आवश्यकता है। मॉनिटरिंग काफी सुविधाजनक है, लेकिन बिना बारीकियों के नहीं (लेखन के समय, उदाहरण के लिए, केवल-पढ़ने वाले उपयोगकर्ता केवल एक डेटाबेस के लिए मॉनिटरिंग देख सकते थे, एक साथ नहीं... ठीक है, यहां शेड्स हैं)।
अंत में, हमारी टीम ने अपडेट और समर्थन बंद करने से संबंधित चिंताओं को संबोधित करते हुए खर्चों को सफलतापूर्वक अनुकूलित किया है। हमने प्रदर्शन, लचीलेपन, विकास की गति और लचीलेपन में सुधार हासिल किया है। इसके अतिरिक्त, स्क्रिप्ट के कार्यान्वयन ने जरूरत पड़ने पर तेजी से ठीक होने की हमारी क्षमता में उल्लेखनीय वृद्धि की है।
सोशल डिस्कवरी ग्रुप के लीड डेवऑप्स इंजीनियर पावेल शापुरौ द्वारा लिखित।