High Availability (HA) হলো অ্যাপ্লিকেশন/ডেটাবেস ২৪/৭ অ্যাক্সেসযোগ্য রাখার সমাধান/প্রক্রিয়া/প্রযুক্তি, যাবতীয় বা অপ্রত্যাশিত যেকোনো পরিস্থিতিতে।
MS SQL Server-এ ডেটাবেস উপলব্ধতা সেটআপের মূলত ৫টি অপশন রয়েছে:
- Replication
- Log Shipping
- Mirroring
- Clustering
- AlwaysON Availability Groups
Replication
মূল ডেটা রিপ্লিকেশন টাস্ক (এজেন্ট/জব) দ্বারা গন্তব্যে কপি করা হয়, অবজেক্ট লেভেল প্রযুক্তি ব্যবহার করে। জানা দরকার কিছু টার্ম:
- Publisher (প্রকাশক) - উৎস সার্ভার।
- Distributor (বিতরক) - ঐচ্ছিক, কপি করা ডেটা Subscriber-এ পাঠানোর আগে সংরক্ষণ করে।
- Subscriber (গ্রাহক) - গন্তব্য সার্ভার।
Log Shipping
উৎস ডেটা Transaction Log ব্যাকআপ টাস্ক দ্বারা গন্তব্যে কপি করা হয়, ডেটাবেস লেভেল প্রযুক্তি ব্যবহার করে। টার্মগুলো:
- Primary Server (প্রাথমিক সার্ভার) - উৎস সার্ভার।
- Secondary Server (দ্বিতীয়ক সার্ভার) - গন্তব্য সার্ভার।
- Monitoring Server (নিরীক্ষণ সার্ভার) - ঐচ্ছিক, Log Shipping স্ট্যাটাস নিরীক্ষণ করে।
Mirroring
প্রাথমিক ডেটা নেটওয়ার্ক ট্রানজ্যাকশন দ্বারা সেকেন্ডറിയ কপি করা হয়, প্রজেকশন ও পোর্ট নম্বর সংযোগের সাহায্যে, ডেটাবেস লেভেল প্রযুক্তি ব্যবহার করে। টার্মগুলো:
- Principal Server (মূল সার্ভার) - উৎস সার্ভার।
- Mirror Server (মিরর সার্ভার) - গন্তব্য সার্ভার।
- Witness Server (সাক্ষী সার্ভার) - ঐচ্ছিক, স্বয়ংক্রিয় ফল্ট টলারেন্সের জন্য।
Clustering
ডেটা সাধারণ লোকেশনে সংরক্ষিত, প্রাথমিক ও দ্বিতীয়িক সার্ভার উভয়ই ব্যবহার করে, ইনস্ট্যান্স লেভেল প্রযুক্তি ব্যবহার করে। এই শেয়ার্ড স্টোরেজে Windows Clustering সেটআপ করতে হয়। টার্মগুলো:
- Active Node - যেখানে SQL Services চলে।
- Passive Node (নিষ্ক্রিয় নোড) - যেখানে SQL Services চলে না।
AlwaysON Availability Groups
প্রাথমিক ডেটা ট্রানজ্যাকশন দ্বারা সেকেন্ডরিতে স্থানান্তরিত হয়, ডেটাবেস গ্রুপ লেভেল প্রযুক্তি ব্যবহার করে। Windows Clustering সেটিংসের জন্য সাধারণ স্টোরেজ দরকার নেই। টার্মগুলো:
- Primary Replica - উৎস সার্ভার।
- Secondary Replica - গন্তব্য সার্ভার।
High Availability কনফিগার করার ধাপ (Mirroring ও Log Shipping)
নিচে HA (Mirroring ও Log Shipping) কনফিগার করার ধাপ দেওয়া হলো (Clustering, AlwaysON Availability Groups এবং Replication বাদে)।
ধাপ ১ - মূল ডেটাবেসের একটি ফুল কপি এবং একটি T-log কপি নিন।
উদাহরণ:
TESTINSTANCE primaire SQL Server এবং DEVINSTANCE সেকেন্ডারি সার্ভার হিসেবে TestDB ডেটাবেসের জন্য Mirroring / Log Shipping কনফিগার করতে, নিচের কোয়েরি দিয়ে সোর্স সার্ভার (TESTINSTANCE)-এ ফুল ব্যাকআপ এবং T-log নিন।
Backup database TestDB to disk = 'D:\testdb_full.bak'
GO
Backup log TestDB to disk = 'D:\testdb_log.trn'
ব্যাকআপ নেওয়ার কোয়েরি
ধাপ ২ - ব্যাকআপ ফাইল গন্তব্য সার্ভারে কপি করুন।
এখানে একটি ফিজিক্যাল সার্ভারে দুটি SQL Server Instance আছে, তাই কপি করার দরকার নেই। কিন্তু দুটি Instance দুটি আলাদা ফিজিক্যাল সার্ভারে থাকলে, নিচের দুটি ফাইল সেকেন্ডারি সার্ভারের লোকেশনে কপি করুন যেখানে DEVINSTANCE ইনস্টল করা আছে।
ব্যাকআপ ফাইল গন্তব্য সার্ভারে কপি
ধাপ ৩ - গন্তব্য সার্ভারে ব্যাকআপ ফাইল দিয়ে ডেটাবেস রিস্টোর করুন NORECOVERY অপশন দিয়ে।
উদাহরণ:
SQL Server DEVINSTANCE-এ সংযোগ করুন, নতুন New Query খুলুন। মূল ডেটাবেসের মতোই নাম TestDB দিয়ে রিস্টোর করুন (Log Shipping-এ ভিন্ন নাম দিতে পারেন)। NORECOVERY অপশন ব্যবহার করুন।
Restore database TestDB from disk = 'D:\TestDB_full.bak'
with move 'TestDB' to 'D:\DATA\TestDB_DR.mdf',
move 'TestDB_log' to 'D:\DATA\TestDB_log_DR.ldf',
norecovery
GO
Restore database TestDB from disk = 'D:\TestDB_log.trn' with norecovery
ফাইল সংরক্ষণ করে ডেটাবেস রিস্টোর
DEVINSTANCE সার্ভারের ডেটাবেস ফোল্ডার রিফ্রেশ করুন, TestDB ডেটাবেস রিস্টোর হয়ে recovery স্ট্যাটাসে দেখাবে।
ডেটাবেস রিকভারি স্ট্যাটাস
ধাপ ৪ - নিচের মত HA (Log Shipping / Mirroring) কনফিগার করুন।
উদাহরণ:
SQL Server TESTINSTANCE (মূল সার্ভার)-এ TestDB ডেটাবেসে ডান ক্লিক করে Properties ক্লিক করুন। নিচের স্ক্রিন আসবে।
Log Shipping / Mirroring কনফিগার
ধাপ ৫ - প্রয়োজন অনুযায়ী Mirroring বা Transaction Log Shipping নির্বাচন করে সিস্টেমের দেওয়া ধাপ অনুসরণ করে কনফিগারেশন সম্পূর্ণ করুন।