ডেটাবেস মিররিং সমাধান SQL Server-এ একটি হাই-অভেইলেবিলিটি ডেটাবেস ম্যানেজমেন্ট সিস্টেম তৈরি করতে সাহায্য করে যা למדি সহজ এবং মিডিয়াম-সাইজ ও লোয়ার-লেভেল ডেটাবেসের জন্য উপযোগী।
একটি হাইলি আভেইলেবল ডেটাবেস ম্যানেজমেন্ট সিস্টেমের প্রয়োজনিয়তা দিনের পর দিন বেড়ছে, কখনো কখনো এটি সংস্থা ও কোম্পানির জন্য একটি ভাইটাল ফ্যাক্টর। যাইহোক, হাই অভেইলেবিলিটি অর্জন করা (প্রায়শই সক্রিয়) একটি সিম্পল জিনিস নয়, কারণ সিস্টেম পারফরম্যান্সকে প্রভাবিত করার অনেক ফ্যাক্টর রয়েছে: হার্ডওয়্যার সমস্যা, নেটওয়ার্ক ইনফ্রাস্ট্রাকচার, অপারেটিং সিস্টেম এরর, অ্যাপ্লিকেশন সফটওয়্যার এরর, ভাইরাস। আর্টিকেলটি একটি সমাধান পরিচয় করাচ্ছে যা বর্তমানে ব্যবহৃত ডেটাবেস ম্যানেজমেন্ট সিস্টেমে হাই অভেইলেবিলিটি (HA - High Availability) অর্জন করতে সাহায্য করে: SQL Server ।
SQL Server-এ HA সমাধান
ফেইলওভার ক্লাস্টার
এই সমাধান একটি শেয়ার্ড হার্ড ড্রাইভ ব্যবহার করে — সাধারণত একটি SAN ডেটাবেস রাখতে। SQL Server-এর অনেক ' ইনস্ট্যান্স ' ইনস্টল করা থাকে, প্রতিটি ইনস্ট্যান্স হলো একটি নোড, কিন্তু একবারে শুধু একটি নোড ডেটাবেসের কন্ট্রোল রাখে। যখন এই নোডে সমস্যা হয়, অন্য একটি নোড সেটি রিপ্লেস করে ডেটাবেস ম্যানেজ করতে আসে।
লগ শিপিং
একটি ডেটাবেসের এডিশনাল স্ট্রাকচার হিসেবে একটি মিরর (কপি)। যখন মূল ডেটাবেস থেকে কোনো পরিবর্তন বা আপডেট হয়, সেই পরিবর্তনগুলো রেকর্ড করা লগ ফাইলটি মিরর সার্ভার ইনস্ট্যান্সে পাঠানো হয়। এইভাবে, ডেটাবেসের একটি আপডেটেড কপি রক্ষা রয়েছে। কোনো ঘটনার ঘটনায়, কপি ডেটাবেস খুব কম সময়ে মূল ডেটাবেসে রূপান্তরিত হয়।
image 1 : SQL Server সেটআপ সবসময় আভেইলেবল
রিপ্লিকেশন
যদি ফেইলওভার ক্লাস্টার এবং লগ শিপিং ডেটাবেস লেভেলে হাই-অভেইলেবিলিটি নিশ্চিত করার দুটি সমাধান, রিপ্লিকেশন শুধু ডেটাবেসের অবজেক্ট লেভেলে হাই-অভেইলেবিলিটি নিশ্চিত করে যেমন টেবিল, ভিউ। এই অবজেক্টগুলো স্টোরেজের জন্য SQL Server-এর একটি ২য় ইনস্ট্যান্সে কপি করা হয়।
SQL Server-এ ডেটা মিররিং
ডেটাবেস মিররিং (DM) SQL Server-এ হাইলি আভেইলেবল ডেটাবেস তৈরি করার নতুন সমাধান। DM পূরবের সমাধানগুলোর ডিসঅ্যাডভান্টেজ কাটিয়ে দেয় যেমন:
• ফেইলওভার ক্লাস্টারের সাথে তুলনায়, DM এসএএন-এর মতো স্পেশাল হার্ডওয়্যার দরকার নয়, তাই কনফিগারেশন খরচ কমায়
• লগ শিপিং-এর সাথে তুলনায়, DM একটি এরর হলে অটোমেটিক্যালি মিরর মেশিনে স্যুইচ করতে পারে অ্যাডমিনিস্ট্রেটরের হস্তক্ষেপ ছাড়া। লগ শিপিং T-SQL-এ ম্যানুয়াল কনফিগারেশন চায়। তাই DM-কে 'হট স্ট্যান্ডবাই' বলা হয়, যখন ইন্টারাপশন টাইম (ডাউনটাইম) সেকেন্ডে ক্যালকুলেট করা যায়, আর লগ-শিপিংকে 'ওয়ার্ম স্ট্যান্ডবাই' বলা হয়, কারণ ইন্টারাপশন টাইম মিনিটে বা তার বেশি হতে পারে।
• রিপ্লিকেশনের সাথে তুলনায় , DM সুপেরিয়র কারণ এটি পুরো ডেটাবেস প্রোটেক্ট করে, আর রিপ্লিকেশন শুধু ডেটাবেসের অংশগুলো প্রোটেক্ট করে, উদাহরণস্বরূপ মাস্টার টেবিল।
তবে, DM শুধু এন্টারপ্রাইজ / ডেভেলপার ভার্সনে SQL Server 2005 SP1 / 2008-এ উপলব্ধ।
1. SQL Server-এ DM-এর স্ট্রাকচার
SQL Server-এ DM তিনটি প্রধান ইনস্ট্যান্স চায়: ১টি ইনস্ট্যান্স (প্রিন্সিপাল রোল) ডেটাবেস ম্যানেজ করতে, ১টি এক্সট্রা ইনস্ট্যান্স (মিরর) ডেটাবেস ব্যাকআপ নিশ্চিত করতে। একটি উইটনেস ইনস্ট্যান্স দুটি প্রধান ও সাব-ইনস্ট্যান্সের সাথে কানেক্ট থাকে ডেটাবেসের আভেইলেবিলিটি মনিটর ও নিশ্চিত করতে।
যখন উইটনেস সার্ভার থাকে: উইটনেস সার্ভার এবং প্রধান সার্ভার এবং মিরর সার্ভার দুটোর সাথে কানেক্ট থাকে। এখন পুরো সিস্টেম একটি কোরাম হয়ে যায় যেটে ৩টি কম্পোনেন্টের মধ্যে ২টি ডিসাইড করার অধিকার রাখে। যদি প্রধান সার্ভারে সমস্যা হয়, উইটনেস সার্ভার অটোমেটিক্যালি মিরর সার্ভারকে প্রধান সার্ভার बना দেবে। যদি তারপর প্রধান সার্ভার আবার কাজ করতে শুরু করে, প্রধান সার্ভার মিরর সার্ভারের রোল নেবে (২টি সার্ভার এখন একে অপরর রোল এক্সচেঞ্জ করবে) অ্যাডমিনিস্ট্রেটরের হস্তক্ষেপ পর্যন্ত ( ডায়াগ্রাম ১ )।
image 2 : SQL Server সেটআপ সবসময় আভেইলেবল
যখন উইটনেস সার্ভার নেই: অ্যাডমিনিস্ট্রেটরের প্রভাব ছাড়া অটোমেটিক কনভারশন প্রসেস কাজ করবে না।
SQL Server-এ ' এন্ডপয়েন্ট ' কনসেপ্ট আছে যেটিকে 'কানেকশন পয়েন্ট' হিসেবে ব্যাখ্যা করা যায়, যা SQL Server ইনস্ট্যান্সগুলোর TCP-এর মাধ্যমে একে অপরের সাথে যোগাযোগ করতে দেয় ( ডায়াগ্রাম ২ )।
প্রতিটি এন্ডপয়েন্ট একটি করেসপন্ডিং অ্যাড্রেস এবং পোর্ট দ্বারা আইডেন্টিফাই করা হয়। সiddান্তত:, অ্যাড্রেসটি ফুল ডোমেইন অ্যাড্রেস হতে হবে, কিন্তু বাস্তবে চারটি পদ্ধতিতে যেকোনো একটি ব্যবহার করা যায়:
- সার্ভার নাম দিয়ে নির্ণয়। উদাহরণ: TCP: // PRINCIPAL: 7024.
- ডোমেইন নাম দিয়ে নির্ণয়। উদাহরণ: TCP: //PRINCIPAL.DELTAX.COM: 7024.
- IPv4 দিয়ে নির্ণয়। উদাহরণ: TCP: //192.168.1.3: 7024.
- IPv6 দিয়ে নির্ণয়।
নোট: যদি SQL Server Instance একই মেশিনে রান করে, TCP পোর্ট অবশ্যই আলাদা হতে হবে।
2. প্রধান সার্ভার এবং সেকেন্ডারি সার্ভারের মধ্যে ইনফরমেশন এক্সচেঞ্জ
image 3 : SQL Server সেটআপ সবসময় আভেইলেবল
হাই-স্পিড মোড (High-Performance):
হাই-পারফরম্যান্স মোড অসিঙ্ক্রোনাস কপি ক্রিয়েশনের সাথে মেলে। প্রধান সার্ভার আপডেটগুলো মিরর সার্ভারে পাঠায় এবং মিরর সার্ভার সফলভাবে আপডেট হয়েছে কিনা তা চেক না করেই অন্যান্য পরিবর্তন করতে থাকে।
মিরর সার্ভার আপডেট হওয়ার জন্য অপেক্ষা না করেই, প্রধান সার্ভার দ্রুত অ্যাক্সেস স্পিড পায় এবং অপ্রয়োজনীয় লোডিং এড়িয়ে যায়।
এই প্রসেস নিচের স্কিমা দিয়ে ইলাস্ট্রেট করা যায়:
হাই-স্পিড মোডে, মিরর সার্ভার সবসময় প্রধান সার্ভারের চেয়ে ধীরে আপডেট হয়, এবং ডেটা লস হতে পারে যদি প্রধান সার্ভার মিরর সার্ভারে ডেটা পাঠানো ছাড়া অপারেশন বন্ধ করে দেয়। তবে, এই ভিন্ন ডেটাবেস অংশ יחসিকভাবে ছোট এবং গ্রহণযোগ্য। হাই পারফরম্যান্স মোড - হাই পারফরম্যান্স মোডে উইটনেস সার্ভার আবশ্যক নয়।
হাই-সেফটি মোড (High-Safety):
হাই স্পিড মোডের বিপরীতে, হাই সেফটি মোড সিঙ্ক্রোনাস মেকানিজম ব্যবহার করে। যখন অ্যাপ্লিকেশন বা ইউজার আপডেট করে, এটি প্রায় একই সাথে প্রধান সার্ভার এবং মিরর সার্ভার দুটোতেই আপডেট হয়। এটি নিশ্চিত করে যে যখন প্রধান সার্ভারে সমস্যা হয়, মিরর সার্ভারের কাছে ডেটাবেসের একটি কমপ্লিট এবং পূর্ণ কপি থাকে, তাই হাই ডেটা সিকিউরিটি নিশ্চিত হয়।
হাই সিকিউরিটি মোডে হট স্ট্যান্ডবাই - হট স্ট্যান্ডবাই নিশ্চিত করতে উইটনেস সার্ভার আবশ্যক।
3. DM কনফিগারেশন:
SQL Server-এ DM কনফিগার করা ৩টি বেসিক ধাপ নিয়ে গঠিত:
- প্রধান সার্ভারে পুরো ডেটাবেস ব্যাকআপ (backup) নিন এবং তারপর মিরর সার্ভারে রিস্টোর (restore) করুন।
- করেসপন্ডিং এন্ডপয়েন্ট তৈরি করুন যাতে প্রধান সার্ভার, মিরর এবং উইটনেস একসাথে কাজ করতে পারে।
- একটি সেশন তৈরি করুন (Database Mirroring Session)
image 4 : SQL Server সেটআপ সবসময় আভেইলেবল
DM কনফিগারেশন SQL Server Management Studio (SSMS) ইন্টারফেস ব্যবহার করে করা যায়, বা T-SQL-ও দিয়ে কনফিগার করা যায়।
SSMS ইন্টারফেস দিয়ে কনফিগারেশন করা খুব সহজ, মিরর সার্ভারে সফলভাবে ডেটা রিস্টোর করার পর, ডেটাবেসে রাইট-ক্লিক করে ' Mirroring ' বেছে নিন, তারপর ধাপগুলো অনুসরণ করুন।
ফলাফল হবে একটি DM সেশন ইনিশিয়ালাইজেশন।
SSMS কনফিগারেশন T-SQL-এ করা অধিকাংশ অপারেশন রিমুভ করে দেয়, কিন্তু আপনি চাইলে সর্বোচ্চ ফ্লেক্সিবিলিটির জন্য T-SQL ব্যবহার করতে পারেন।
T-SQL-এ কনফিগারেশন ২টি উপায়ে অথেন্টিকেশন করতে পারে এন্ডপয়েন্টের মধ্যে: লগিন দিয়ে ভেরিফাই বা সার্টিফিকেট দিয়ে অথেন্টিকেশন। T-SQL কোড সম্পূর্ণ হলো বড় হওয়ায় DM কনফিগারেশন কाफি লম্বা, তাই আমরা কিছু টিপিক্যাল স্টেপ আওয় 소개 করছি।
লগিন দিয়ে কনফিগারেশন
মান লইয়ে নিই আমরা SQL Server-এ লগইন করার জন্য একটি উইন্ডোজ অ্যাকাউন্ট ব্যবহার করছি, SQL Server অ্যাকাউন্ট ব্যবহার করলেও একই পদ্ধতি।
CREATE LOGIN [PRICIPAL-SRVAdministrator]
FROM WINDOWS
GO
এন্ডপয়েন্ট তৈরি করুন:
CREATE ENDPOINT Partner
STATE = STARTED
AS TCP (LISTENER_PORT = 5022)
FOR DATABASE_MIRRORING (
AUTHENTICATION = WINDOWS NEGOTIATE,
ENCRYPTION = SUPPORTED,
ROLE = ALL)
GO
মনে রাখবেন ROLE = ALL দিয়ে এন্ডপয়েন্ট তৈরি করা প্রিন্সিপাল এবং মিরর সার্ভার দুটোতেই করতে হবে, উইটনেস সার্ভারে ROLE = WITNESS দিয়ে রিপ্লেস করতে হবে।
image 5 : SQL Server সেটআপ সবসময় আভেইলেবল
সার্টিফিকেট দিয়ে কনফিগারেশন:
প্রতিটি এন্ডপয়েন্টকে একে অপর চিনতে দেওয়ার জন্য লগিন অ্যাকাউন্ট ব্যবহার না করে, সার্টিফিকেট তৈরি করে একটি অ্যাল্টারনেটিভ সমাধান ব্যবহার করা যায়।
- মাস্টার কী এনক্রিপশন তৈরি করুন (সার্টিফিকেট এক্সপোর্ট করার জন্য আবশ্যক):
tạo người dùng key xác thực từ mật khẩu = 'abc123 !!';
- একটি সার্টিফিকেট তৈরি করুন:
create certificate PRINCIPAL_cert
with subject = 'PRINCIPAL certificate',
start_date = '2007/11/01',
expiry_date = '2020/11/01';
image 6 : SQL Server সেটআপ সবসময় আভেইলেবল - করেসপন্ডিং এন্ডপয়েন্ট তৈরি করুন সার্টিফিকেটের সাথে:
Create endpoint endpoint_mirroring state = started
as tcp (listener_port = 7024, listener_ip = all)
for database_mirroring (authentication = certificate PRINCIPAL_cert, encryption = disabled, role = all);
- সার্টিফিকেটকে একটি আলাদা ফাইলে এক্সপোর্ট করুন:
Backup certificate PRINCIPAL_cert to file = 'c: PRINCIPAL_cert.cer';
মিরর সার্ভার এবং উইটনেসেও একইভাবে করুন, রোল = উইটনেস প্রয়োজনে পরিবর্তন করে। সকল ৩টি ইনস্ট্যান্সে এন্ডপয়েন্ট এবং সার্টিফিকেট এক্সপোর্ট করার পর, প্রিন্সিপাল সার্ভারে ফিরে আসুন:
- মিরর সার্ভারের জন্য একটি লগিন তৈরি করুন:
create login MIRROR_login with PASSWORD = 'abc123 !!';
GO
- সেই লগিনের জন্য একটি ইউজার তৈরি করুন
create user MIRROR_user from login MIRROR_login;
GO
- সার্ভারের .cer ফাইল থেকে একটি সার্টিফিকেট তৈরি করুন:
Create certificate MIRROR_cert
Authorization MIRROR_user
From file = 'c: MIRROR_cert.cer';
GO
- সার্ভারের লগিন মিরর জন্য এন্ডপয়েন্টে কানেক্ট করার পারমিশন দিন:
Grant CONNECT ON Endpoint :: endpoint_mirroring to [MIRROR_login];
GO
image 7 : SQL Server সেটআপ সবসময় আভেইলেবল উইটনেস সার্ভার সার্টিফিকেটের জন্যও একই কাজ করুন, এবং মিরর ও উইটনেস সার্ভারেও যাতে ৩টি কম্পিউটার একে অপর চিনতে এবং অথেন্টিকেট করতে পারে।
এন্ডপয়েন্ট তৈরি করার পর, আপনি কোয়েরি দিয়ে সেগুলো চেক করতে পারেন:
SELECT name, state_desc, role_desc
FROM sys.database_mirroring_endpoint
শেষ কাজ হলো DM-এর জন্য একটি সেশন ইনিশিয়েট করা:
* প্রিন্সিপাল সার্ভারে:
ALTER DATABASE AdventureWorks
SET PARTNER = 'TCP: //mirror-srv.deltax.com: 5022'
GO
* মিরর সার্ভারে:
ALTER DATABASE AdventureWorks
SET PARTNER = 'TCP: //pricipal-srv.deltax.com: 5022'
GO
* প্রিন্সিপাল সার্ভারে, উইটনেস সার্ভার সেটআপ করুন:
ALTER DATABASE AdventureWorks
SET WITNESS = 'TCP: //witness-srv.deltax.com: 5022'
GO
সিস্টেম অপারেশনাল হওয়ার পর, এটি ডেটাবেস মিররিং মনিটর টুল দিয়ে মনিটর করা যায় :
image 8 : SQL Server সেটআপ সবসময় আভেইলেবল
4. মিডলওয়্যার প্রোগ্রামিং:
DM-এর ব্যবহার মিডলওয়্যার সাইড থেকে ডেটাবেস কানেকশনের জন্য অলমোস্ট ট্রান্সপেরেন্ট বলে করা হয়। আপনি যদি ADO.NET লাইব্রেরি ব্যবহার করেন, সিম্পলি ConnectionString-এ মডিফাই করুন ' ফেইলওভার পার্টনার ' ফিল্ড যোগ করে মিরর সার্ভারের জন্য, উদাহরণস্বরূপ:
Data Source = pricipal.database.com; Failover Partner = mirror.database.com; Initial Catalog = AdventureWorks;
Integrated Security = True;
অতিরিক্তভাবে, ADO.NET একটি ' কানেকশন পুল ' তৈরি করে যা ইনিশিয়েট করা কানেকশন ক্যাশ করতে দেয়, তাই কোনো সমস্যা থেকে সার্ভার স্যুইচ হলে, আপনাকে এই ক্যাশ ডিলিট করার জন্য একটিভলি অডিশনাল অপারেশন ইমপ্লিমেন্ট করতে হবে।
SqlConnection.ClearPool (conn);
উপসংহার
image 9 : SQL Server সেটআপ সবসময় আভেইলেবল SQL Server-এ DM খুব সহজ, কনফিগার, ব্যবহার এবং মনিটর করা সহজ, কিন্তু এর ক্যাপাবিলিটি রিলেটিভলি লিমিটেড। এটি শুধু মিডিয়াম-সাইজ এবং লোয়ার-লেভেল ডেটাবেসের জন্য উপযোগী, এবং বড় ডেটাবেস যাদের কন্টিনিউইটির জন্য কঠোর প্রয়োজনীয়তা আছে, প্রস্তাবিত পদ্ধতি সেটা মিট করছে না, কিন্তু ওভারঅল অপারেটিং সিস্টেম সমাধান, হার্ডওয়্যার সিস্টেম, নেটওয়ার্ক দরকার।
আর্টিকেলটি আশা করে আপনাকে SQL Server-এ হাইলি আভেইলেবল ডেটাবেস ম্যানেজমেন্ট সিস্টেম তৈরি করার একটি ওভারভিউ দিয়েছে।
রেফারেন্স: https://technet.microsoft.com/en-us/library/cc917680.aspx
শুভকামনা।
আপনি "SQL Server সেটআপ সবসময় আভেইলেবল" আর্টিকেলটি পড়তে শেষ করেছেন जिसे TipsMake টিম দ্বারা এডিট করা হয়েছে। আমরা আশা করি এই আর্টিকেল আপনাকে অনেক উপকারী টেক টিপস এবং ট্রিকস দিয়েছে। আপনি টিপস এবং গাইডের সমান আর্টিকেল খুঁজে পেতে পারেন। পড়ার জন্য এবং নিয়মিত ফলো করার জন্য ধন্যবাদ।