এই নিবন্ধে, কিভাবে সর্বদা চালু ইনস্টল এবং কনফিগার করতে হয় সে সম্পর্কে আমরা আপনাকে ধাপে ধাপে নির্দেশিকা দিয়ে চলে যাব। উইন্ডোজ সার্ভার 2019 এ চলমান SQL সার্ভারে উপলব্ধতা গোষ্ঠী, ব্যর্থতার পরিস্থিতি এবং কিছু অন্যান্য সম্পর্কিত বিষয় নিয়ে আলোচনা করে।
সর্বদা উপলব্ধতা গোষ্ঠীতে MIcrosoft SQL সার্ভারে উচ্চ প্রাপ্যতা প্রদান করে। সর্বদা চালু MSSQL 2012 রিলিজে উপস্থিত।
এসকিউএল সার্ভারে সর্বদা প্রাপ্যতা গোষ্ঠীর বৈশিষ্ট্যগুলি
আপনি কিসের জন্য SQL সার্ভার প্রাপ্যতা গোষ্ঠী ব্যবহার করতে পারেন?
- MS SQL উচ্চ প্রাপ্যতা এবং স্বয়ংক্রিয় ব্যর্থতা;
- নোডের মধ্যে SELECT প্রশ্নগুলির ভারসাম্য বজায় রাখা (সেকেন্ডারি প্রতিলিপিগুলি পাঠযোগ্য হতে পারে);
- সেকেন্ডারি প্রতিলিপি থেকে ব্যাকআপ;
- ডেটা রিডানডেন্সি। প্রতিটি প্রতিলিপি প্রাপ্যতা গ্রুপ ডাটাবেসের কপি রাখে।
সর্বদা চালু Windows সার্ভার ফেইলওভার ক্লাস্টার এর উপর ভিত্তি করে (WSFC)। WSFC প্রাপ্যতা গ্রুপ নোড নিরীক্ষণ করে এবং স্বয়ংক্রিয় ব্যর্থতা প্রদান করে। MS SQL সার্ভার 2017 থেকে শুরু করে, সর্বদা চালু WSFC ছাড়া ব্যবহার করা যেতে পারে এবং লিনাক্সে পাশাপাশি হোস্ট. একটি লিনাক্স-ভিত্তিক ক্লাস্টার তৈরি করার সময়, আপনি WSFC এর পরিবর্তে পেসমেকার ব্যবহার করতে পারেন।
সর্বদা চালু স্ট্যান্ডার্ডে উপলব্ধ সংস্করণ, তবে এতে কিছু সীমাবদ্ধতা রয়েছে:
- এটি 2টি প্রতিলিপিতে সীমাবদ্ধ (প্রাথমিক এবং মাধ্যমিক);
- সেকেন্ডারি রেপ্লিকা ডেটা পড়ার জন্য ব্যবহার করা যাবে না;
- সেকেন্ডারি রেপ্লিকা MS SQL ব্যাকআপ করতে ব্যবহার করা যাবে না;
- প্রতি উপলব্ধতা গোষ্ঠীতে শুধুমাত্র 1টি ডাটাবেস সমর্থিত৷ ৷
এন্টারপ্রাইজে কোনো বিধিনিষেধ নেই সংস্করণ
আপনি এখানে MS SQL সার্ভার লাইসেন্সিং দিক সম্পর্কে পড়তে পারেন।আসুন শর্তাবলী বিবেচনা করি।
- সর্বদা উপলব্ধতা গ্রুপে প্রতিলিপি এবং ডেটাবেসের একটি সেট;
- প্রতিলিপি প্রাপ্যতা গ্রুপে একটি SQL সার্ভার উদাহরণ। একটি প্রতিরূপ প্রাথমিক বা মাধ্যমিক হতে পারে। প্রতিটি প্রতিলিপিতে এক বা একাধিক ডেটাবেস থাকতে পারে।
সর্বদা চালু WSFC এর উপর ভিত্তি করে। প্রতিটি প্রাপ্যতা গ্রুপ নোড অবশ্যই একটি উইন্ডোজ ফেইলওভার ক্লাস্টারের সদস্য হতে হবে। প্রতিটি SQL সার্ভার উদাহরণে একাধিক প্রাপ্যতা গোষ্ঠী থাকতে পারে। প্রতিটি প্রাপ্যতা গোষ্ঠীতে 8টি পর্যন্ত সেকেন্ডারি প্রতিলিপি থাকতে পারে৷
৷যদি একটি প্রাথমিক প্রতিলিপি ব্যর্থ হয়, ক্লাস্টারটি একটি নতুন প্রাথমিক প্রতিলিপির জন্য ভোট দেবে এবং সর্বদা চালু একটি মাধ্যমিক প্রতিলিপিগুলির মধ্যে একটিকে প্রাথমিক করে তুলবে৷ যেহেতু ব্যবহারকারীরা শ্রোতা-এর সাথে সংযুক্ত হন৷ (একটি বিশেষ ক্লাস্টার আইপি ঠিকানা এবং সংশ্লিষ্ট DNS নাম) সর্বদা চালুর সাথে কাজ করার সময়, আবার লেখার প্রশ্ন চালানো সম্ভব হবে। গৌণ প্রতিলিপিগুলির মধ্যে SELECT প্রশ্নগুলির ভারসাম্য বজায় রাখার জন্যও শ্রোতা দায়ী৷
সর্বদা প্রাপ্যতা গ্রুপের জন্য উইন্ডোজ ফেইলওভার ক্লাস্টার কনফিগার করুন
সর্বপ্রথম, আমাদের অবশ্যই সর্বদা চালু দ্বারা ব্যবহৃত সমস্ত নোডগুলিতে একটি ব্যর্থতা ক্লাস্টার কনফিগার করতে হবে৷
এখানে আমার কনফিগারেশন:
- Windows Server 2019 চলমান 2 ভার্চুয়াল মেশিন
- 2 SQL সার্ভার 2019 এন্টারপ্রাইজ ইনস্ট্যান্স
- নোড হোস্টনাম হল testnode1 এবং testnode2। SQL সার্ভার ইনস্ট্যান্স নাম হল node1 এবং node2।
ফেলওভার ক্লাস্টারিং যোগ করুন সার্ভার ম্যানেজার ব্যবহার করে ভূমিকা বা PowerShell এর মাধ্যমে ইনস্টল করুন:
Install-WindowsFeature –Name Failover-Clustering –IncludeManagementTools
ইনস্টলেশনটি স্বয়ংক্রিয়, এবং আপনাকে এখনও কিছু কনফিগার করতে হবে না। ফেলওভার ক্লাস্টার ম্যানেজার চালান স্ন্যাপ-ইন (FailoverClusters.SnapInHelper.msc
) এবং একটি নতুন ক্লাস্টার তৈরি করুন৷
আপনি আপনার ক্লাস্টারে যোগদান করতে চান এমন হোস্টের নাম যোগ করুন।
তারপর উইজার্ড কিছু পরীক্ষা নেওয়ার প্রস্তাব দেয়। এটি করতে, প্রথম আইটেমটি নির্বাচন করুন৷
৷
ক্লাস্টার নাম উল্লেখ করুন, একটি নেটওয়ার্ক নির্বাচন করুন, এবং একটি ক্লাস্টার আইপি ঠিকানা। ক্লাস্টারের নাম স্বয়ংক্রিয়ভাবে DNS-এ প্রদর্শিত হবে; আপনাকে ম্যানুয়ালি একটি DNS রেকর্ড তৈরি করতে হবে না। আমার ক্ষেত্রে, ক্লাস্টারের নাম হল ClusterAG .
ক্লাস্টারে সমস্ত যোগ্য সঞ্চয়স্থান যোগ করুন বিকল্পগুলি আনচেক করুন৷ যেহেতু আমরা পরে ডিস্ক যোগ করতে পারি।
ক্লাস্টারে শুধুমাত্র দুটি নোড আছে, তাই আপনাকে অবশ্যই ক্লাস্টার কোরাম কনফিগার করতে হবে . ক্লাস্টার কোরাম একটি কাস্টিং ভোট। উদাহরণস্বরূপ, যদি ক্লাস্টার নোডগুলির একটি অনুপলব্ধ হয়ে যায়, ক্লাস্টারটিকে অবশ্যই সনাক্ত করতে হবে, কোন নোডগুলি আসলে অনলাইনে রয়েছে এবং একে অপরকে দেখতে পারে। ক্লাস্টার কোরাম ক্লাস্টার সামঞ্জস্য প্রদান করে (ক্লাস্টার -> আরও অ্যাকশন -> ক্লাস্টার কোরাম সেটিংস কনফিগার করুন)।
কোরাম সাক্ষী বিকল্পটি নির্বাচন করুন।
তারপর সাক্ষী টাইপ নির্বাচন করুন:একটি ফাইল শেয়ার সাক্ষী।
ভাগ করা ফোল্ডারে একটি UNC পাথ নির্দিষ্ট করুন৷ নিজেই ডিরেক্টরি তৈরি করুন। এটি অবশ্যই আপনার ফেইলওভার ক্লাস্টারের বাইরে একটি সার্ভারে উপস্থিত থাকতে হবে৷
যখন আপনি আপনার ক্লাস্টার কনফিগার করেন, আপনি নিম্নলিখিত ত্রুটিটি দেখতে পারেন:
There was an error configuring the file share witness. Unable to save property changes for File Share Witness. The system cannot find the file specified.
সম্ভবত একটি ব্যবহারকারী অ্যাকাউন্ট, যার অধীনে ক্লাস্টার চলছে, শেয়ার করা ফোল্ডার অ্যাক্সেস করার জন্য NTFS অনুমতি নেই। ডিফল্টরূপে, ক্লাস্টার একটি স্থানীয় ব্যবহারকারী অ্যাকাউন্টের অধীনে চলছে। আপনি সমস্ত ক্লাস্টার কম্পিউটারে ফোল্ডারে বিশেষাধিকার প্রদান করতে পারেন বা ক্লাস্টার পরিষেবার জন্য অ্যাকাউন্ট পরিবর্তন করতে পারেন এবং প্রাসঙ্গিক বিশেষাধিকার প্রদান করতে পারেন৷
মৌলিক উইন্ডোজ ফেইলওভার ক্লাস্টার কনফিগারেশন শেষ।
MS SQL সার্ভারে সর্বদা উপলব্ধতা গ্রুপ কনফিগার করা
সাধারণ SQL সার্ভার ইনস্ট্যান্স ইনস্টলেশনের পরে, আপনি সর্বদা প্রাপ্যতা গোষ্ঠী সক্রিয় এবং কনফিগার করতে পারেন। SQL সার্ভার কনফিগারেশন ম্যানেজার-এর উদাহরণ বৈশিষ্ট্যগুলিতে সেগুলি সক্ষম করুন . আপনি স্ক্রিনশটে দেখতে পাচ্ছেন, SQL সার্ভার ইতিমধ্যে সনাক্ত করেছে যে এটি একটি WSFC ক্লাস্টারের অন্তর্গত। সর্বদা উপলব্ধতা গোষ্ঠী সক্রিয় করুন চেক করুন৷ এবং MSSQL ইনস্ট্যান্স পরিষেবা পুনরায় চালু করুন। দ্বিতীয় দৃষ্টান্তের জন্য একই কাজ করুন।
টিপ৷৷ সর্বদা অন কনফিগারেশনের আগে, নিশ্চিত করুন যে SQL সার্ভার পরিষেবাগুলি স্থানীয় সিস্টেম অ্যাকাউন্টের অধীনে চলছে না। গ্রুপ ম্যানেজড সার্ভিস অ্যাকাউন্ট বা একটি সাধারণ ডোমেন অ্যাকাউন্ট ব্যবহার করার পরামর্শ দেওয়া হয়। অন্যথায়, আপনি সর্বদা-অন কনফিগারেশন সম্পূর্ণ করতে সক্ষম হবেন না।
SQL সার্ভার ম্যানেজমেন্ট স্টুডিও চালান, আপনার হোস্টের সাথে সংযোগ করুন, ক্লিক করুন সর্বদা উচ্চ উপলব্ধতা, এবং নতুন উপলব্ধতা গ্রুপ উইজার্ড চালান৷৷
SQL সার্ভার 2017 এবং SQL সার্ভার 2019-এর জন্য SQL সার্ভার ম্যানেজমেন্ট স্টুডিও 18.x-এ কিছু সর্বদা চালু সেটিংস প্রদর্শিত হয়েছে যেগুলি শুধুমাত্র T-SQL-এ উপলব্ধ ছিল, তাই সর্বশেষ SSMS সংস্করণ ব্যবহার করার পরামর্শ দেওয়া হচ্ছে।
আপনার সর্বদা উপলব্ধতা গোষ্ঠীর জন্য একটি নাম নির্দিষ্ট করুন এবং ডেটাবেস স্তর স্বাস্থ্য সনাক্তকরণ নির্বাচন করুন . এই বিকল্পটি ব্যবহার করে, সর্বদা চালু যখন একটি ডাটাবেস অস্বাস্থ্যকর তা সনাক্ত করতে সক্ষম হবে৷
আপনার সর্বদা চালু থাকা গোষ্ঠীতে যোগ করতে SQL সার্ভার ডাটাবেস নির্বাচন করুন।
প্রতিলিপি যোগ করুন ক্লিক করুন৷ এবং দ্বিতীয় SQL সার্ভার সংযোগ করুন। এইভাবে আপনি 8 সার্ভার পর্যন্ত যোগ করতে পারেন।
- প্রাথমিক ভূমিকা একটি গোষ্ঠী তৈরি হওয়ার সময় দ্বারা একটি প্রতিরূপ ভূমিকা। এটি প্রাথমিক বা মাধ্যমিক হতে পারে;
- স্বয়ংক্রিয় ব্যর্থতা - যদি একটি ডাটাবেস অনুপলব্ধ হয়ে যায়, তবে সর্বদা চালু প্রাথমিক ভূমিকাটিকে অন্য প্রতিরূপে নিয়ে যাবে। এই আইটেমটি পরীক্ষা করুন;
- উপলভ্যতা মোড সিঙ্ক্রোনাস কমিট বা অ্যাসিঙ্ক্রোনাস কমিট নির্বাচন করার অনুমতি দেয়। আপনি যদি একটি সিঙ্ক্রোনাস মোড নির্বাচন করেন, প্রাথমিক প্রতিলিপিতে আসা লেনদেনগুলি সিঙ্ক্রোনাস মোড সহ অন্যান্য সমস্ত গৌণ প্রতিলিপিগুলিতে পাঠানো হবে৷ অন্যান্য প্রতিলিপিগুলি ডিস্কে এটি লেখার পরেই প্রাথমিক প্রতিরূপটি লেনদেন শেষ করে। এইভাবে, প্রাথমিক প্রতিরূপ ব্যর্থ হলে ডেটা ক্ষতি বাদ দেওয়া হয়। অ্যাসিঙ্ক্রোনাস মোডে, প্রাথমিক প্রতিলিপি অন্যান্য প্রতিলিপিগুলির প্রতিক্রিয়ার জন্য অপেক্ষা না করে অবিলম্বে পরিবর্তনগুলি লেখে৷
- পঠনযোগ্য মাধ্যমিক একটি পরামিতি যা গৌণ প্রতিলিপিগুলির বিরুদ্ধে SELECT প্রশ্নগুলি চালানোর অনুমতি দেয়। মানটি হ্যাঁ হলে,
ApplicationIntent=readonly
ছাড়া সংযোগ করলেও ক্লায়েন্টরা কেবল-পঠন অ্যাক্সেস পেতে সক্ষম হবে। . - কমিট করার জন্য সিঙ্ক্রোনাইজ করা সেকেন্ডারি লেনদেন শেষ করার জন্য সিঙ্ক্রোনাইজ করা গৌণ প্রতিলিপির সংখ্যা। প্রতিলিপি সংখ্যার উপর নির্ভর করে এটি সেট করুন, আমি এটি 1 এ সেট করব।
শেষবিন্দুতে কিছু সম্পাদনা করবেন না ট্যাব।
ব্যাকআপ পছন্দ-এ ট্যাব, আপনি ব্যাকআপ কোথা থেকে তৈরি করা হবে তা নির্বাচন করতে পারেন। এখানে ডিফল্ট সেটিংস ছেড়ে দিন:মাধ্যমিক পছন্দ করুন .
প্রাপ্যতা গ্রুপ শ্রোতার নাম, পোর্ট, এবং IP ঠিকানা উল্লেখ করুন।
কেবল-পঠন রাউটিং ছেড়ে দিন সেটিংস অপরিবর্তিত।
প্রতিরূপ সিঙ্ক্রোনাইজেশন প্রকার নির্বাচন করুন। আমি প্রথম আইটেমটি ছেড়ে দিচ্ছি (স্বয়ংক্রিয় বীজ করণ ) চেক করা হয়েছে৷
৷
তারপর আপনার সেটিংস যাচাই করা আবশ্যক. যদি কোন ত্রুটি না থাকে, পরিবর্তনগুলি প্রয়োগ করতে সমাপ্তিতে ক্লিক করুন৷
৷আমার ক্ষেত্রে, সমস্ত পরীক্ষা সফল হয়েছে, কিন্তু ইনস্টলেশনের পরে ফলাফলের ধাপে, উইজার্ড উপলব্ধতা গ্রুপ লিসেনার তৈরি করার একটি ত্রুটি দেখিয়েছে। EVENTID 1194 ত্রুটিটি ক্লাস্টার ইভেন্ট লগগুলিতে উপস্থিত হয়েছিল:
Cluster network name resource failed to create its associated computer object in the domain.
এর মানে হল যে ক্লাস্টারে শ্রোতা তৈরি করার জন্য পর্যাপ্ত অনুমতি নেই। ডকুমেন্টেশনে বলা হয়েছে যে আপনার ক্লাস্টারের অবজেক্টে কম্পিউটার-টাইপ অবজেক্ট তৈরি করার জন্য একটি বিশেষাধিকার প্রদান করা যথেষ্ট। AD তে বিশেষাধিকার অর্পণ ব্যবহার করে এটি করা সহজ (অথবা একটি দ্রুত, কিন্তু অনিরাপদ বৈকল্পিকটি হল ডোমেন অ্যাডমিন গ্রুপে CLUSTERAG$ অবজেক্টকে অস্থায়ীভাবে যুক্ত করা)।
প্রাপ্যতা গোষ্ঠীতে সর্বদা-অন এবং নিম্ন SQL কর্মক্ষমতা সমস্যাগুলি নির্ণয় করার সময়, আপনাকে স্ট্যান্ডার্ড SQL সার্ভার ডায়াগনস্টিক সরঞ্জামগুলি ব্যবহার করার পাশাপাশি উইন্ডোজ ক্লাস্টার লগগুলি পুঙ্খানুপুঙ্খভাবে অধ্যয়ন করা উচিত।যেহেতু আমি প্রাপ্যতা গোষ্ঠী তৈরি করেছি, কিন্তু শ্রোতা নয়, আমি ম্যানুয়ালি এটি যোগ করেছি। আপনার প্রাপ্যতা গোষ্ঠীর জন্য প্রসঙ্গ মেনু খুলুন এবং শ্রোতা যোগ করুন ক্লিক করুন৷ .
শ্রোতার IP ঠিকানা, পোর্ট এবং DNS নাম উল্লেখ করুন।
নিশ্চিত করুন যে শ্রোতা উপলভ্যতা গ্রুপ শ্রোতাদের মধ্যে উপস্থিত হয়েছে৷ আপনার সর্বদা অন গ্রুপের বিভাগ।
এইভাবে, আপনি একটি সর্বদা প্রাপ্যতা গোষ্ঠীর প্রাথমিক কনফিগারেশন সম্পন্ন করেছেন।
SQL সার্ভার সবসময় চালু থাকে:অপারেবিলিটি চেক এবং ফেইলওভার
আসুন Availability Group Dashboard (ড্যাশবোর্ড দেখান) দেখে নেওয়া যাক।
এটা ঠিক আছে, গ্রুপ তৈরি হয়েছে এবং কাজ করছে।
আসুন ম্যানুয়ালি node2 কে একটি প্রাথমিক উদাহরণ তৈরি করার চেষ্টা করি। প্রাপ্যতা গোষ্ঠীতে ডান-ক্লিক করুন এবং ফেলওভার নির্বাচন করুন .
ফেলওভার রেডিনেস-এ মানটি নোট করুন . কোন ডেটা ক্ষতি নেই মানে কোন ডাটা নষ্ট হবে না।
node2 এর সাথে সংযোগ করুন।
শেষ ক্লিক করুন৷
৷নিশ্চিত করুন যে node2 প্রাপ্যতা গ্রুপে প্রাথমিক প্রতিরূপ (প্রাথমিক উদাহরণ) হয়ে উঠেছে।
শ্রোতা সঠিকভাবে কাজ করছে তা নিশ্চিত করুন। SSMS-এ একটি কমা দ্বারা পৃথক করা শ্রোতার DNS নাম এবং পোর্ট উল্লেখ করুন:ag1-listener-1,1445
সহজ সন্নিবেশ চালান, আপনার ডাটাবেসে SQL প্রশ্নগুলি নির্বাচন করুন এবং আপডেট করুন৷
৷
তারপর প্রাথমিক প্রতিরূপের স্বয়ংক্রিয় ব্যর্থতা পরীক্ষা করুন। শুধু TESTNODE2 এ sqlservr.exe প্রক্রিয়াটি মেরে ফেলুন।
অবশিষ্ট নোডে উপলব্ধতা গোষ্ঠীর অবস্থা পরীক্ষা করুন:TESTNODE1\NODE1।
ক্লাস্টারটি স্বয়ংক্রিয়ভাবে testnode1\node1 স্থিতিকে প্রাথমিকে পরিবর্তিত করেছে যেহেতু testnode2\node2 অনুপলব্ধ হয়েছে।
শ্রোতার অবস্থা পরীক্ষা করুন কারণ ক্লায়েন্টরা এটি সংযোগ করতে ব্যবহার করবে।
আমার ক্ষেত্রে, আমি সফলভাবে শ্রোতার সাথে সংযুক্ত হয়েছি, কিন্তু ডাটাবেস অ্যাক্সেস করার চেষ্টা করার সময়, আমি এই ত্রুটিটি পেয়েছি:
Unable to access database 'TestDatabase' because it lacks a quorum of nodes for high availability. Try the operation again later.
কমিট করার জন্য প্রয়োজনীয় সিঙ্ক্রোনাইজ সেকেন্ডারি এর কারণে ত্রুটিটি দেখা দিয়েছে বিকল্প যেহেতু আমরা এটি কনফিগার করার সময় এর মান 1 এ সেট করি, তাই সর্বদা চালু এটিকে ডাটাবেসের সাথে সংযোগ করার অনুমতি দেয় না, কারণ আমাদের কাছে শুধুমাত্র একটি প্রাথমিক প্রতিরূপ বাকি আছে।
মানটিকে 0 এ সেট করুন এবং আবার ক্যোয়ারী চালানোর চেষ্টা করুন।
Testnode1 প্রাইমারি ইনস্ট্যান্স স্ট্যাটাস রাখে, যখন testnode2 সেকেন্ডারি হয়ে যায়। testnode1-এ আমরা যে ডেটা পরিবর্তন করেছি যখন testnode2 পাওয়ার বন্ধ ছিল কম্পিউটার চালু হওয়ার পরে সফলভাবে সিঙ্ক্রোনাইজ করা হয়েছে।
সুতরাং, আমরা নিশ্চিত করেছি যে সবকিছু সঠিকভাবে কাজ করে এবং একটি গুরুতর ব্যর্থতার ক্ষেত্রে ডেটা পড়ার/লেখার জন্য উপলব্ধ থাকবে৷
আপনি সহজেই সর্বদা প্রাপ্যতা গ্রুপগুলি কনফিগার করতে পারেন। আপনি যদি একটি SQL সার্ভার-ভিত্তিক ব্যর্থতা সমাধান তৈরি করতে চান, তাহলে উপলব্ধতা গোষ্ঠীগুলি এটিকে ভালভাবে পরিচালনা করবে৷