এই ব্লগটি ব্যাখ্যা করে কীভাবে অন-প্রিমিসে (বা Amazon® EC2 বা Azure®-এ) হোস্ট করা Microsoft® SQL Server® ডেটাবেস Amazon Relational Database Service (RDS)-এ স্থানান্তর করতে হয়। এই স্থানান্তর আপনার SQL ডেটাবেসকে AWS S3 বাকেটে ব্যাকআপ নিয়ে এবং সেই S3 বাকেট থেকে AWS RDS ইনস্ট্যানসে ডেটাবেস রিস্টোর করে করা হয়।
ভূমিকা
Amazon RDS ইনস্ট্যান্সের পূর্বের সংস্করণগুলো .bak ফাইল থেকে ডেটা রিস্টোর করতে দিত না। ফলে ব্যবহারকারীদের Amazon Data Migration Services ব্যবহার করতে হতো বা ডেটা AWS RDS-এ অথবা সেখান থেকে সরাতে Import and Export উইজার্ড ব্যবহার করতে হতো।
Amazon জুলাই ২০১৬ থেকে নেটিভ ব্যাকআপ রিস্টোর সাপোর্ট শুরু করে এবং RDS-এ MSDB ডেটাবেসে নিচের স্টোরড প্রোসিজারগুলো যোগ করে:
- rds_backup_database – একটি ডেটাবেসকে S3 বাকেটে ব্যাকআপ নেয়।
- rds_restore_database – S3 থেকে একটি ডেটাবেস রিস্টোর করে।
- rds_task_status – চলমান ব্যাকআপ এবং রিস্টোর টাস্ক ট্র্যাক করে।
- rds_cancel_task – চলমান ব্যাকআপ বা রিস্টোর টাস্ক বাতিল করে।
এই ব্লগটি আলোচনা করে কীভাবে rds_restore_database প্রোসিজার ব্যবহার করে S3 থেকে .bak ফাইল রিস্টোর করতে হয় এবং rds_task_status প্রোসিজার ব্যবহার করে রিস্টোর প্রগ্রেস মনিটর করতে হয়, درক্ষ AWS S3 সিঙ্ক কমান্ড ব্যবহার করে ব্যাকআপ ফাইল AWS S3 বাকেটে আপলোড করা হয়।
পূর্বশর্ত
মাইগ্রেশন করতে হলে আপনার নিচের পূর্বশর্তগুলো থাকতে হবে:
- SQL Server Agent Proxy
- AWS Command Line Interface (AWS CLI)
- ProfileName (Amazon S3-এ অ্যাক্সেসযুক্ত একটি AWS ইউজার এবং একটি S3 বাকেট যার মধ্যে
aws_access_key_idএবংaws_secret_access_keyরয়েছে।) SQLSERVER_BACKUP_RESTOREঅপশন ম্যাপ করা একটি উপযুক্ত অপশন গ্রুপসহ AWS RDS ইনস্ট্যান্স।- PowerShell ইনস্টলেশন
আপনার SQL Server, S3 বাকেট তৈরি, AWS ইউজার তৈরি, S3 বাকেটে অ্যাক্সেস প্রদান এবং RDS ইনস্ট্যান্স তৈরির বিষয়ে Βασিক জ্ঞানও থাকা উচিত।
সমাধান
নিচের ধাপগুলো সমাধানটি কভার করে নিচের সেকশনগুলোতে:
লোকাল সার্ভারে ডেটাবেস ব্যাকআপ নিন।
ব্যাকআপ ফাইলটি AWS S3 বাকেটে কপি করুন।
S3 বাকেট থেকে SQL ব্যাকআপ RDS-এ রিস্টোর করুন।
লোকাল সার্ভারে ডেটাবেস ব্যাকআপ নিন
আপনি লোকালি ব্যাকআপ নেওয়ার যেকোনো পদ্ধতি ব্যবহার করতে পারেন। নিচের উদাহরণটি একটি .bat স্ক্রিপ্ট ব্যবহার করে যাতে sqlcmd কমান্ড থাকে, যা আপনি যেকোনো SQL এজেন্ট জবে ব্যবহার করতে পারেন, যদি আপনাকে মাইগ্রেশন টাস্ক শিডিউল করতে হয়:
Sqlcmd -S SourceInstanceName -U sa -P password_here -Q "Declare @DBName nvarchar(200)='MigrationTestDB' DECLARE @BackupLocation NVARCHAR(2000) = 'C:\Temp\RDSmigration\backup\'+@DBName+ + REPLACE(CONVERT(VARCHAR(20), GETDATE(), 120) + '.bak', ':', ''); BACKUP DATABASE @DBName TO DISK = @BackupLocation with compression;"
ব্যাকআপ ফাইলটি AWS S3 বাকেটে কপি ও আপলোড করুন
এটি আপনি AWS S3 copy বা AWS S3 sync কমান্ড ব্যবহার করে করতে পারেন। যাঁব, sync কমান্ড খুব জনপ্রিয় এবং উদ্যোগে ব্যাপকভাবে ব্যবহৃত হয়, তাই নিচের উদাহরণে এটি ব্যবহার করা হয়েছে।
ডিফল্টভাবে, AWS sync কমান্ড ফাইল ডিলিট করে না। এটি কেবল নতুন বা মডিফাইড ফাইলগুলো ডেস্টিনেশনে কপি করে। আপনি নিচের PowerShell স্ক্রিপ্টটি SQL এজেন্ট জবে ব্যবহার করতে পারেন। আপনাকে ব্যাকআপ এবং এই কপি ধাপ দুটোই SQL এজেন্ট প্রক্সি অ্যাকাউন্ট ব্যবহার করে চালাতে হবে যা cmdExec এবং PowerShell সাবসিস্টেম চালাতে কনফিগার করা আছে।
$LogDate = Get-Date -Format yyyy-MM-dd $Global:LogFile = "C:\Temp\RDSmigration\Logs\$LogDate.log" $env:Path += ';C:\Program Files\Amazon\AWSCLI\bin' Set-AWSCredential -ProfileName backuptos3user aws configure set aws_access_key_id AKIAVIH6FYWVO62BZ7QA aws configure set aws_secret_access_key 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 aws configure set region ap-south-1 try { $now = (Get-Date -Format G) aws s3 sync C:\Temp\RDSmigration\backup s3:// ramkrdsrestore --sse | out-file $LogFile } catch { Write-Host $_.Exception.Message -ForegroundColor Green }
S3 বাকেট থেকে SQL ব্যাকআপ RDS-এ রিস্টোর করুন
MigrationTestDB2019-08-15 181640.bak ফাইলটিকে MigrationTestDB ডেটাবেস হিসেবে রিস্টোর করতে নিচের কমান্ড চালান:
EXEC msdb.dbo.rds_restore_database @restore_db_name = 'MigrationTestDB', @S3_arn_to_restore_from = 'arn:aws:s3:::ramkrdsrestore/MigrationTestDB2019-08-15 181640.bak'
স্টোরড প্রোসিজারকে প্রদত্ত প্যারামিটারগুলো লক্ষ্য করুন। আপনাকে নিচের প্যারামিটারগুলো নির্দিষ্ট করতে হবে:
- রিস্টোর করার ডেটাবেসের নাম।
- ব্যাকআপ ফাইলের Amazon Resource Name (ARN)। S3 অবজেক্টের জন্য, ARN নিচের ফরম্যাটে থাকে।
SQL Server একটি রিস্টোর টাস্ক শুরু করে এবং এটিকে একটি TaskID অ্যাসাইন করে। আপনি নিচের কমান্ড দিয়ে টাস্কের স্ট্যাটাস সহজে ট্র্যাক করতে পারেন:
EXEC msdb.[dbo].[rds_task_status] @db_name ='DestinationDBName'
আপনি @db_nameর পরিবর্তে TaskID ব্যবহার করেও প্রগ্রেস ট্র্যাক করতে পারেন।
নিচের বিষয়গুলো খেয়াল রাখুন:
- rds_restore_database প্রোসিজারে বাকেট ব্যাকআপ ফাইল নাম কেস সেনসিটিভ।
- অপশন গ্রুপে ব্যবহৃত IAM রোলের S3 বাকেটে অ্যাক্সেস থাকতে হবে।
- S3 বাকেট পলিসি IAM রোলকে বাদ দিয়ে রিস্ট্রিক্টিভ নয়।
- RDS SQL ইনস্ট্যান্স সঠিক অপশন গ্রুপ ব্যবহার করছে যেখানে ব্যাকআপ/রিস্টোর অপশন যোগ করা হয়েছে। এই সেটিং קרিটিক্যাল। এর बिना রিস্টোর শুরু হবena।
Amazon RDS-এ SQL Server নেটিভ ব্যাকআপ এবং রিস্টোরের সীমাবদ্ধতা
Amazon RDS-এ SQL Server নেটিভ ব্যাকআপ এবং রিস্টোরের কিছু সীমাবদ্ধতা রয়েছে:
- ডিফারেনশিয়াল, ট্রানজ্যাকশন লগ, ফাইলগ্রুপ ব্যাকআপ বা রিস্টোর সম্ভব নয়, যা ডেটা রিকভারির বাধা নয়। Amazon RDS আপনাকে শিডিউলড ইনস্ট্যান্স স্ন্যাপশট তৈরি করতে দেয়, এবং সেই স্ন্যাপশটগুলো রোলিং ৩৫-দিনের জন্য অ্যাক্সেসযোগ্য থাকে। আপনি গত ৩৫ দিনের যেকোনো নির্দিষ্ট সময়ের ৫ মিনিটের মধ্যে ইনস্ট্যান্স রিস্টোর করতে পারেন।
- আপনি KMS-এনক্রিপ্টেড ব্যাকআপ S3 থেকে অন-প্রিমিসে রিস্টোর করতে পারবেন না।
- আপনি একই RDS ইনস্ট্যান্সে ডেটাবেস রিস্টোর করতে পারবেন না।
- Tabular Data Encryption (TDE) সক্রিয় ডেটাবেসের ব্যাকআপ রিস্টোর করতে পারবেন না।
- টার্গেট RDS ইনস্ট্যান্সের S3 বাকেটে অ্যাক্সেস থাকতে হবে।
- RDS SQL Server নেটিভ ব্যাকআপ এবং রিস্টোর কমান্ড চালানো ব্যবহারকারীর অ্যাকাউন্টের উপযুক্ত পারমিশন থাকতে হবে।
উপসংহার
এই ব্লগটি আপনাকে দেখিয়েছে কীভাবে ক্লাউড ডেস্টিনেশনে ডেটাবেস ব্যাকআপ নিয়ে AWS RDS ইনস্ট্যান্সে রিস্টোর করতে হয়। RDS ইনস্ট্যান্স ড্রাইভ বা সার্ভারের অ্যাক্সেস দেয় না। কী হলো ব্যাকআপ ফাইলটি AWS S3 বাকেটে ট্রান্সফার করা এবং সেখান থেকে রিস্টোর করা।
এই আর্টিকেলের আরেকটি ইউজ কেস হল আপনার SQL ব্যাকআপ সরাসরি AWS S3-এ সংরক্ষণ করা, যা ডেটা উপলব্ধতা, নিরাপত্তা এবং পারফরম্যান্স বৃদ্ধি প্রদান করে। Amazon S3 ৯৯.৯৯৯৯৯৯৯৯৯% (গারোটি ৯) ডিউরেবিলিটি জন্য ডিজাইন করা। ডেটাবেস ব্যাকআপ সংরক্ষণ করার ক্ষেত্রে এই পদ্ধতি খরচ-প্রভাবী কারণ এটি প্রচুর হার্ড স্টোরেজ বাঁচায়।
ফিডব্যাক ট্যাব ব্যবহার করে মন্তব্য করুন বা প্রশ্ন করুন।
বিশেষজ্ঞ প্রশাসন, ব্যবস্থাপনা এবং কনফিগারেশন দিয়ে আপনার পরিবেশ অপ্টিমাইজ করুন
Rackspace-এর অ্যাপ্লিকেশন সার্ভিস (RAS) বিশেষজ্ঞরা অ্যাপ্লিকেশনের ব্যাপক পোর্টফোলিওর জুড়ে নিচের প্রফেশনাল এবং ম্যানেজড সার্ভিসগুলো প্রদান করেন:
- ই-কমার্স এবং ডিজিটাল এক্সপেরিয়েন্স প্ল্যাটফর্ম
- এন্টারপ্রাইজ রিসোর্স প্ল্যানিং (ERP)
- বিজনেস ইন্টেলিজেন্স
- Salesforce কাস্টমার রিলেশনশিপ ম্যানেজমেন্ট (CRM)
- ডেটাবেস
- ইমেইল হোস্টিং এবং প্রোডাক্টিভিটি
আমরা প্রদান করি:
- পক্ষপাতমূলক না এমন দক্ষতা: আমরা আপনার আধুনিকীকরণের যাত্রা সরল ও পথপ্রদর্শন করি, সেগুলোর ওপর ফোকাস করি যা অবিলম্বে মান দেয়।
- Fanatical Experience™: আমরা একটি প্রক্রিয়া-প্রথম, প্রযুক্তি-দ্বিতীয়® পদ্ধতির সাথে ডেডিকেটেড টেকনিক্যাল সাপোর্ট জোড়া দিয়ে সমগ্র সমাধান দিই।
- অনুপম পোর্টফোলিও: আমরা ব্যাপক ক্লাউড অভিজ্ঞতা প্রয়োগ করি যাতে আপনি সঠিক প্রযুক্তি সঠিক ক্লাউডে বেছে নেওয়া এবং ত্রিন করুন।
- চুস্ত ডেলিভারি: আমরা আপনার যাত্রার যেখানে আছেন সেখানে আপনাকে পাই এবং আমাদের সাফল্য আপনার সাথে মিলিয়ে দিই।
ডেটাবেস সম্পর্কে আরও জানুন
ফিডব্যাক ট্যাব ব্যবহার করে মন্তব্য করুন বা প্রশ্ন করুন। আপনি আমাদের সাথে কথা বলতে পারেন।