1. ভূমিকা SQL Server প্রতিলিপি
1.1 কি SQL Server প্রতিলিপি?
SQL Server রেপ্লিকেশন হলো এক ডাটাবেস থেকে অন্য ডাটাবেসে ডেটা এবং ডাটাবেস অবজেক্ট কপি এবং বিতরণ করার জন্য প্রযুক্তির একটি সেট, তারপর ধারাবাহিকতা বজায় রাখার জন্য ডাটাবেসের মধ্যে সিঙ্ক্রোনাইজেশন। এই বৈশিষ্ট্যটি আপনাকে বিভিন্ন সার্ভার এবং অবস্থানে আপনার ডেটার একাধিক কপি তৈরি এবং রক্ষণাবেক্ষণ করতে সক্ষম করে, ডেটার প্রাপ্যতা এবং নির্ভরযোগ্যতা নিশ্চিত করে।
১.২ প্রতিলিপির উদ্দেশ্য এবং সুবিধা
SQL Server প্রতিলিপিকরণ একাধিক গুরুত্বপূর্ণ ব্যবসায়িক চাহিদা পূরণ করে এবং ডাটাবেস ব্যবস্থাপনা এবং ডেটা বিতরণের জন্য উল্লেখযোগ্য সুবিধা প্রদান করে:
- বিভিন্ন স্থানে ডেটা বিতরণ: প্রতিলিপি আপনাকে আঞ্চলিক অফিস বা বিশ্বব্যাপী অবস্থানগুলিতে ডেটা ভাগ করে নিতে সক্ষম করে, প্রয়োজনীয় ডেটাতে স্থানীয় অ্যাক্সেস নিশ্চিত করে কর্মক্ষম দক্ষতা উন্নত করে। এটি নেটওয়ার্ক ল্যাটেন্সি হ্রাস করে এবং ভৌগোলিকভাবে বিতরণ করা ব্যবহারকারীদের জন্য আরও ভাল কর্মক্ষমতা প্রদান করে।
- উচ্চ প্রাপ্যতা এবং দুর্যোগ পুনরুদ্ধার: একাধিক সার্ভারে গুরুত্বপূর্ণ ডেটার প্রতিলিপি বজায় রাখার মাধ্যমে, প্রতিলিপি রিডানডেন্সি প্রদান করে যা হার্ডওয়্যার ব্যর্থতা এবং বিপর্যয়ের বিরুদ্ধে সুরক্ষা দেয়। প্রাথমিক সার্ভার ব্যর্থতার ক্ষেত্রে, প্রতিলিপিকৃত কপিগুলি ফলব্যাক উৎস হিসেবে কাজ করতে পারে, ডাউনটাইম এবং ডেটা ক্ষতি কমাতে পারে।
- লোড ব্যালেন্সিং এবং স্কেলেবিলিটি: রেপ্লিকেশন একাধিক সার্ভারে রিড অপারেশন বিতরণ করে, যেকোনো একক সার্ভারকে বাধাগ্রস্ত হতে বাধা দেয়। এই পদ্ধতিটি সিস্টেমের কর্মক্ষমতা বৃদ্ধি করে এবং ডেটা এবং ব্যবহারকারীর চাহিদা বৃদ্ধির সাথে সাথে আপনার অবকাঠামোকে অনুভূমিকভাবে স্কেল করার অনুমতি দেয়।
- রিয়েল-টাইম রিপোর্টিং এবং বিশ্লেষণ: প্রতিলিপিকৃত সার্ভারে রিপোর্টিং এবং বিশ্লেষণমূলক প্রশ্নগুলি অফলোড করলে উৎপাদন ডাটাবেসের উপর চাপ কমবে। ব্যবহারকারীরা কার্যক্ষম সিস্টেমগুলিকে প্রভাবিত না করেই প্রায় রিয়েল-টাইম ডেটার বিরুদ্ধে জটিল বিশ্লেষণমূলক প্রশ্নগুলি চালাতে পারেন, যা কর্মক্ষমতা এবং ডেটার সতেজতা উভয়ই নিশ্চিত করে।
- ডেটা ইন্টিগ্রেশন এবং একত্রীকরণ: প্রতিলিপি বিভিন্ন উৎস থেকে তথ্য একত্রিত করে একটি একক দৃশ্যে রূপান্তরিত করতে সাহায্য করে। এটি বিশেষ করে এমন প্রতিষ্ঠানের জন্য মূল্যবান যাদের একাধিক শাখা অফিস রয়েছে যাদের সদর দপ্তরে তথ্য একত্রিত করতে হয়, অথবা বিতরণকৃত অপারেশনাল সিস্টেম থেকে কেন্দ্রীভূত তথ্য গুদাম তৈরি করতে হয়।
2. SQL Server প্রতিলিপি স্থাপত্য এবং উপাদান
SQL Server রেপ্লিকেশন আর্কিটেকচারে বেশ কয়েকটি আন্তঃসংযুক্ত উপাদান থাকে যা আপনার ডাটাবেস অবকাঠামো জুড়ে ডেটা বিতরণ এবং সিঙ্ক্রোনাইজ করার জন্য একসাথে কাজ করে। এই বিভাগটি মূল উপাদানগুলি অন্বেষণ করে, যার মধ্যে রয়েছে প্রকাশক, পরিবেশক, গ্রাহক, প্রকাশনা, নিবন্ধ, সাবস্ক্রিপশন এবং তাদের মধ্যে ডেটা প্রবাহ সমন্বয়কারী এজেন্ট:
- প্রকাশক: একজন প্রকাশক হলেন একজন SQL Server এমন একটি ইনস্ট্যান্স যা প্রতিলিপি করার জন্য ডেটা ধারণকারী এক বা একাধিক ডেটাবেস হোস্ট করে। এটি রেপ্লিকেশন টপোলজিতে কর্তৃত্বপূর্ণ উৎস হিসেবে কাজ করে।
- ডিস্ট্রিবিউটর: একজন পরিবেশক হলেন একজন SQL Server যে ইনস্ট্যান্সটি পাবলিশার এবং সাবস্ক্রাইবারদের মধ্যে ডেটা প্রবাহ পরিচালনা করে। ডিস্ট্রিবিউটর ইনস্ট্যান্সটি ডিস্ট্রিবিউশন ডেটাবেস হোস্ট করে, যেখানে রেপ্লিকেশন মেটাডেটা এবং ট্রানজ্যাকশন সংরক্ষিত থাকে।
- গ্রাহক: একজন গ্রাহক হলেন একজন SQL Server এমন একটি ইনস্ট্যান্স যা পাবলিশারদের কাছ থেকে রেপ্লিকেটেড ডেটা গ্রহণ ও সংরক্ষণ করে। একটিমাত্র সাবস্ক্রাইবার ইনস্ট্যান্স একাধিক সাবস্ক্রাইবার ডেটাবেস হোস্ট করতে পারে, যার প্রতিটি ভিন্ন ভিন্ন পাবলিকেশন থেকে ডেটা গ্রহণ করে।
- প্রকাশনা: একটি প্রকাশনা কোন তথ্য প্রতিলিপি করা হবে এবং কীভাবে এটি গ্রাহকদের মধ্যে বিতরণ করা হবে তা নির্ধারণ করে। এটি সম্পর্কিত নিবন্ধগুলিকে একত্রিত করে এবং সমস্ত অন্তর্ভুক্ত বস্তুর জন্য প্রযোজ্য প্রতিলিপি পদ্ধতি প্রতিষ্ঠা করে।
- প্রবন্ধ: একটি নিবন্ধ হল প্রতিলিপি তৈরির মৌলিক ভিত্তি, যা একটি পৃথক ডাটাবেস অবজেক্টকে প্রতিনিধিত্ব করে যা গ্রাহকদের মধ্যে বিতরণ করা হবে।
- সাবস্ক্রিপশন: একটি সাবস্ক্রিপশন একটি প্রকাশনা এবং গ্রাহকের মধ্যে সম্পর্ক স্থাপন করে, কীভাবে এবং কখন ডেটা গন্তব্য ডাটাবেসে পৌঁছে দেওয়া হবে তা নির্ধারণ করে।
- এজেন্টস: এজেন্ট হল বিশেষায়িত প্রক্রিয়া যা প্রতিলিপি উপাদানগুলির মধ্যে ডেটা স্থানান্তর এবং সিঙ্ক্রোনাইজ করার প্রকৃত কাজ সম্পাদন করে।
3. প্রকার SQL Server প্রতিলিপি
SQL Server বিভিন্ন ধরণের প্রতিলিপি প্রদান করে, প্রতিটি নির্দিষ্ট ডেটা বিতরণ পরিস্থিতি এবং ব্যবসায়িক প্রয়োজনীয়তার জন্য ডিজাইন করা হয়েছে। আপনার পরিবেশের জন্য সঠিক পদ্ধতি নির্বাচন করার জন্য প্রতিটি ধরণের বৈশিষ্ট্য, সুবিধা এবং সীমাবদ্ধতা বোঝা অপরিহার্য।
৩.১ স্ন্যাপশট প্রতিলিপি
স্ন্যাপশট রেপ্লিকেশন একটি নির্দিষ্ট সময়ে প্রকাশিত তথ্যের একটি স্ন্যাপশট নেয়, তারপর গ্রাহকদের মধ্যে সম্পূর্ণ কপি বিতরণ করে। পরবর্তী স্ন্যাপশট তৈরি না হওয়া পর্যন্ত এটি পরবর্তী পরিবর্তনগুলির জন্য নজর রাখে না। স্ন্যাপশট রেপ্লিকেশন হল রেপ্লিকেশনের সবচেয়ে সহজ রূপ, এটি এমন পরিস্থিতিতে উপযুক্ত করে তোলে যেখানে ডেটা খুব কমই পরিবর্তিত হয় বা যেখানে সামান্য পুরানো ডেটা থাকা গ্রহণযোগ্য।
সাধারণ ব্যবহারের ক্ষেত্রে মূল্য তালিকা বা বিনিময় হারের মতো রেফারেন্স ডেটা বিতরণ করা হয় যা পর্যায়ক্রমে আপডেট হয়, ডেটা গুদামের জন্য প্রাথমিক ডেটাসেট সরবরাহ করা হয় এবং এমন পরিস্থিতি যেখানে পৃথক পরিবর্তনগুলি ট্র্যাক করার চেয়ে সম্পূর্ণ ডেটা রিফ্রেশ করা বাঞ্ছনীয়। উদাহরণস্বরূপ, একটি কোম্পানি প্রতিদিন একবার শাখা অফিসগুলিতে আপডেট করা পণ্য ক্যাটালগ বিতরণ করতে স্ন্যাপশট প্রতিলিপি ব্যবহার করতে পারে।
স্ন্যাপশট রেপ্লিকেশনের প্রধান সুবিধাগুলো হলো এর সরলতা, কম রক্ষণাবেক্ষণের প্রয়োজনীয়তা এবং প্রাইমারি কী ছাড়াই ডেটা রেপ্লিকেট করার ক্ষমতা। তবে, এর কিছু উল্লেখযোগ্য অসুবিধাও রয়েছে, যার মধ্যে অন্যতম হলো টেবিল লকের কারণে স্ন্যাপশট তৈরির সময় উচ্চ প্রভাব, আপডেটের মধ্যে দীর্ঘ বিলম্ব এবং বৃহৎ ডেটাসেট বা ঘন ঘন পরিবর্তনশীল ডেটার ক্ষেত্রে অদক্ষতা। পরবর্তী স্ন্যাপশট প্রয়োগ করা হলে সাবস্ক্রাইবারে করা যেকোনো পরিবর্তন হারিয়ে যায়।
৩.২ লেনদেনমূলক প্রতিলিপি
লেনদেনের প্রতিলিপি প্রকাশক থেকে গ্রাহকদের কাছে পরিবর্তনগুলি প্রায় রিয়েল-টাইমে পৌঁছে দেয়, যখনই লেনদেনগুলি ঘটে তখনই তা প্রতিলিপি করে। এটি বেসলাইন স্থাপনের জন্য একটি প্রাথমিক স্ন্যাপশট দিয়ে শুরু হয়, তারপর প্রকাশিত নিবন্ধগুলিতে পরিবর্তনের জন্য লেনদেন লগটি ক্রমাগত পর্যবেক্ষণ করে এবং ক্রমবর্ধমানভাবে গ্রাহকদের কাছে পৌঁছে দেয়।
লেনদেনমূলক প্রতিলিপি সার্ভার-টু-সার্ভার পরিস্থিতিতে উচ্চ থ্রুপুট এবং কম ল্যাটেন্সির প্রয়োজন হয় এমন পরিস্থিতিতে আদর্শ। সাধারণ ব্যবহারের ক্ষেত্রে গ্রাহক সার্ভারে পঠন ক্রিয়াকলাপ অফলোড করে স্কেলেবিলিটি এবং প্রাপ্যতা উন্নত করা, প্রায় রিয়েল-টাইম ডেটা সহ ডেটা গুদামজাতকরণ এবং রিপোর্টিং সমর্থন করা, একাধিক সাইট থেকে ডেটা একটি কেন্দ্রীয় অবস্থানে একীভূত করা এবং ডেডিকেটেড সার্ভারে ব্যাচ প্রক্রিয়াকরণ অফলোড করা অন্তর্ভুক্ত। উদাহরণস্বরূপ, একটি ই-কমার্স প্ল্যাটফর্ম আঞ্চলিক ডাটাবেস জুড়ে সিঙ্ক্রোনাইজড ইনভেন্টরি ডেটা বজায় রাখার জন্য লেনদেনমূলক প্রতিলিপি ব্যবহার করতে পারে।
লেনদেনের প্রতিলিপির সুবিধার মধ্যে রয়েছে কম ল্যাটেন্সি ডেটা ডেলিভারি, বৃহৎ লেনদেনের পরিমাণের জন্য উচ্চ থ্রুপুট এবং গ্রাহকদের কাছে প্রতিলিপিবিহীন পরিবর্তন করার ক্ষমতা। অসুবিধাগুলির মধ্যে রয়েছে স্ন্যাপশট প্রতিলিপির তুলনায় বৃহত্তর জটিলতা, প্রতিলিপিযুক্ত টেবিলে প্রাথমিক কীগুলির প্রয়োজনীয়তা এবং গ্রাহকদের কাছে প্রাথমিক কী লঙ্ঘনের মতো দ্বন্দ্ব দেখা দিলে প্রতিলিপি ভেঙে যাওয়ার সম্ভাবনা।
৩.৩ প্রতিলিপি একত্রিত করুন
মার্জ রেপ্লিকেশন বিশেষভাবে এমন পরিবেশের জন্য ডিজাইন করা হয়েছে যেখানে গ্রাহকদের অফলাইনে বা মাঝে মাঝে সংযোগের সাথে কাজ করতে হয়, তারপর সংযোগ উপলব্ধ হলে পরিবর্তনগুলি সিঙ্ক্রোনাইজ করতে হয়। এই রেপ্লিকেশন ধরণের মাধ্যমে প্রকাশক এবং গ্রাহক উভয়েরই ডেটা স্বাধীনভাবে পরিবর্তন করা যায়, ট্রিগার এবং মেটাডেটা টেবিল ব্যবহার করে পরিবর্তনগুলি ট্র্যাক করা যায় এবং সিঙ্ক্রোনাইজেশনের সময় স্বয়ংক্রিয়ভাবে পরিবর্তনগুলি মার্জ করা যায়।
মার্জ রেপ্লিকেশন মোবাইল অ্যাপ্লিকেশন এবং বিতরণকৃত সার্ভার পরিবেশের জন্য ডিজাইন করা হয়েছে যেখানে স্বায়ত্তশাসিত পরিবর্তন ঘটে। ব্যবহারের ক্ষেত্রে সেলস ফোর্স অটোমেশন অন্তর্ভুক্ত যেখানে মোবাইল ব্যবহারকারীরা অফলাইনে কাজ করে এবং পরে সিঙ্ক্রোনাইজ করে, পয়েন্ট-অফ-সেল সিস্টেম যা স্বাধীনভাবে কাজ করে এবং পর্যায়ক্রমে ডেটা একত্রিত করে, এবং বিতরণকৃত অ্যাপ্লিকেশন যেখানে একাধিক সাইটকে ভাগ করা ডেটা আপডেট করতে হয়। উদাহরণস্বরূপ, একটি খুচরা চেইন মার্জ রেপ্লিকেশন ব্যবহার করতে পারে যাতে প্রতিটি দোকান কেন্দ্রীয় গুদাম সিস্টেমের সাথে সিঙ্ক্রোনাইজ করার সময় স্থানীয় ইনভেন্টরি পরিচালনা করতে পারে।
মার্জ রেপ্লিকেশনের সুবিধার মধ্যে রয়েছে স্বায়ত্তশাসিত গ্রাহকদের জন্য সমর্থন যা পরিবর্তন করতে পারে, মাঝে মাঝে নেটওয়ার্ক সংযোগের জন্য সহনশীলতা এবং নমনীয় দ্বন্দ্ব সমাধান। অসুবিধাগুলির মধ্যে রয়েছে সেটআপ এবং রক্ষণাবেক্ষণে বৃহত্তর জটিলতা, মেটাডেটা এবং ট্রিগার ট্র্যাক করার ফলে কর্মক্ষমতা ওভারহেড, টেবিলে অনন্য শনাক্তকারী কলাম যুক্ত করা এবং ব্যবস্থাপনা এবং সমাধানের প্রয়োজন এমন দ্বন্দ্বের সম্ভাবনা।
৩.৪ পিয়ার-টু-পিয়ার প্রতিলিপি
পিয়ার-টু-পিয়ার রেপ্লিকেশন লেনদেনের প্রতিলিপির উপর নির্মিত এবং একাধিক সার্ভার ইনস্ট্যান্স (তিন বা ততোধিক নোড) সমান সমকক্ষ হিসাবে কাজ করতে সক্ষম করে, প্রতিটি নোড একই সাথে প্রকাশক এবং গ্রাহক উভয়েরই কাজ করে। এই টপোলজিতে, সমস্ত নোড ডেটার অভিন্ন কপি বজায় রাখে এবং পঠন এবং লেখা উভয় ক্রিয়াকলাপ পরিচালনা করতে পারে, যা একটি সত্যিকারের বিতরণযোগ্য মাল্টি-মাস্টার পরিবেশ প্রদান করে।
পিয়ার-টু-পিয়ার রেপ্লিকেশন এমন অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত যেখানে স্কেল-আউট অফ রিড অপারেশন এবং উচ্চ প্রাপ্যতা প্রয়োজন। ব্যবহারের ক্ষেত্রে ওয়েব অ্যাপ্লিকেশনগুলি অন্তর্ভুক্ত যা ধারাবাহিক ডেটা বজায় রেখে একাধিক নোড জুড়ে ক্যাটালগ কোয়েরি বিতরণ করে, নোডগুলিকে পৃথকভাবে অফলাইনে নিয়ে ডাউনটাইম ছাড়াই রক্ষণাবেক্ষণ বা আপগ্রেডের প্রয়োজন হয় এমন পরিস্থিতি এবং বিভিন্ন অঞ্চলে ডেটা সেন্টার সহ বিশ্বব্যাপী অ্যাপ্লিকেশন। উদাহরণস্বরূপ, একটি বিশ্বব্যাপী সফ্টওয়্যার সহায়তা সংস্থা বিভিন্ন সময় অঞ্চলের অফিসগুলিতে পিয়ার-টু-পিয়ার রেপ্লিকেশন ব্যবহার করতে পারে যাতে প্রতিটি অবস্থানের বর্তমান ডেটাতে স্থানীয় অ্যাক্সেস থাকে।
পিয়ার-টু-পিয়ার রেপ্লিকেশনের সুবিধার মধ্যে রয়েছে স্কেল-আউটের মাধ্যমে উন্নত পঠন কর্মক্ষমতা, একাধিক সক্রিয় নোডের সাথে উচ্চতর প্রাপ্যতা এবং প্রায় রিয়েল-টাইম ডেটা সামঞ্জস্য। অসুবিধাগুলির মধ্যে রয়েছে এন্টারপ্রাইজ সংস্করণের প্রয়োজনীয়তা, মাল্টি-নোড টপোলজি পরিচালনায় জটিলতা, সমস্ত নোড জুড়ে অভিন্ন স্কিমা এবং ডেটার প্রয়োজনীয়তা এবং লেখার ক্রিয়াকলাপ সঠিকভাবে ভাগ না করা হলে দ্বন্দ্বের সম্ভাবনা।
৩.৫ দ্বিমুখী প্রতিলিপি
দ্বিমুখী প্রতিলিপি হল একটি নির্দিষ্ট লেনদেনমূলক প্রতিলিপি টপোলজি যা বিশেষভাবে দুই-সার্ভার পরিবেশের জন্য ডিজাইন করা হয়েছে যেখানে উভয় সার্ভারকে একে অপরের সাথে পরিবর্তন বিনিময় করতে হয়। প্রতিটি সার্ভার অন্য সার্ভার থেকে ডেটা প্রকাশ করে এবং একই ডেটা সাবস্ক্রাইব করে, যা একটি সহজ দ্বি-মুখী সিঙ্ক্রোনাইজেশন প্রবাহ তৈরি করে। যদিও পিয়ার-টু-পিয়ার প্রতিলিপি দুটি নোডকেও সমর্থন করতে পারে, দ্বিমুখী প্রতিলিপি এই নির্দিষ্ট পরিস্থিতিতে উন্নত কর্মক্ষমতা প্রদান করে।
দ্বিমুখী প্রতিলিপি এমন পরিস্থিতিতে উপযুক্ত যেখানে সিঙ্ক্রোনাইজড ডেটা সহ দুটি সক্রিয় সার্ভারের প্রয়োজন হয়, যেমন উচ্চ প্রাপ্যতার জন্য সক্রিয়-সক্রিয় কনফিগারেশন বা ভৌগোলিকভাবে বিতরণ করা অ্যাপ্লিকেশন যেখানে প্রতিটি সাইটের স্থানীয় লেখার অ্যাক্সেসের প্রয়োজন হয়। টপোলজির জন্য ডেটা আপডেটগুলি ভাগ করার এবং দ্বন্দ্ব প্রতিরোধ করার জন্য সতর্কতার সাথে অ্যাপ্লিকেশন ডিজাইনের প্রয়োজন।
সুবিধাগুলির মধ্যে রয়েছে দুই-সার্ভার পরিস্থিতির জন্য অপ্টিমাইজড পারফরম্যান্স, পিয়ার-টু-পিয়ার রেপ্লিকেশনের তুলনায় সহজ কনফিগারেশন, প্রায় রিয়েল-টাইম সিঙ্ক্রোনাইজেশন এবং মার্জ রেপ্লিকেশনের তুলনায় কম ওভারহেড। অসুবিধাগুলির মধ্যে রয়েছে ঠিক দুটি সার্ভারের সীমাবদ্ধতা, সতর্কতার সাথে অ্যাপ্লিকেশন ডিজাইনের প্রয়োজন এমন অন্তর্নির্মিত দ্বন্দ্ব সমাধানের অভাব এবং দ্বন্দ্ব প্রতিরোধের জন্য সঠিক পার্টিশন কৌশলের প্রয়োজনীয়তা।
৩.৬ আপডেটযোগ্য সাবস্ক্রিপশন
আপডেটযোগ্য সাবস্ক্রিপশন লেনদেনের প্রতিলিপি প্রসারিত করে যাতে গ্রাহকরা প্রতিলিপিকৃত ডেটাতে মাঝে মাঝে পরিবর্তন করতে পারেন যা পরে প্রকাশক এবং অন্যান্য গ্রাহকদের কাছে ফিরে আসে। ঘন ঘন দ্বিমুখী আপডেটের জন্য ডিজাইন করা মার্জ প্রতিলিপি বা পিয়ার-টু-পিয়ার টপোলজির বিপরীতে, আপডেটযোগ্য সাবস্ক্রিপশনগুলি এমন পরিস্থিতিতে তৈরি করা হয় যেখানে প্রাথমিক ডেটা প্রবাহ একমুখী (প্রকাশক থেকে গ্রাহক) হয় তবে গ্রাহকদের মাঝে মাঝে সংশোধন বা আপডেট করতে হয়।
যেসব ক্ষেত্রে বেশিরভাগ আপডেট পাবলিশারে সম্পন্ন হয় কিন্তু সাবস্ক্রাইবারদেরও মাঝে মাঝে আপডেটের প্রয়োজন হয়, যেমন ফিল্ড অফিস যারা মূলত ডেটা পড়ে কিন্তু স্থানীয়ভাবে সংশোধন বা আপডেট করার প্রয়োজন বোধ করে, সেসব ক্ষেত্রে আপডেটেবল সাবস্ক্রিপশন উপযুক্ত। দ্বন্দ্ব কমানো এবং ডেটার সামঞ্জস্য নিশ্চিত করার জন্য এই টপোলজির সতর্ক পরিকল্পনা প্রয়োজন।
প্রধান সুবিধাগুলির মধ্যে রয়েছে লেনদেনের প্রতিলিপির কর্মক্ষমতা বৈশিষ্ট্য বজায় রেখে গ্রাহকদের সীমিত লেখার ক্রিয়াকলাপের অনুমতি দেওয়া। অসুবিধাগুলির মধ্যে রয়েছে বর্ধিত জটিলতা, সমাধানের জন্য প্রয়োজনীয় দ্বন্দ্বের সম্ভাবনা, তাৎক্ষণিক আপডেটিং মোডে দুই-পর্যায়ের কমিট প্রোটোকল থেকে কর্মক্ষমতা ওভারহেড এবং সমস্ত প্রতিলিপিকৃত টেবিলে প্রাথমিক কী থাকা আবশ্যক।
৩.৭ বিভিন্ন ধরণের প্রতিলিপির তুলনা
| প্রতিলিপির ধরণ | আপডেটের সময় | প্রকাশকের সংখ্যা | অভিমুখ | সিনারিও ব্যবহার করুন |
|---|---|---|---|---|
| স্ন্যাপশট | সময় পয়েন্ট | 1 | ওয়ান ডিরেকশন (প্রকাশক → সাবস্ক্রাইবার) | কদাচিৎ পরিবর্তনশীল রেফারেন্স তথ্য (মূল্য তালিকা, বিনিময় হার) |
| লেনদেনগত | রিয়েল-টাইমের কাছাকাছি | 1 | ওয়ান ডিরেকশন (প্রকাশক → সাবস্ক্রাইবার) | উচ্চ-থ্রুপুট পরিস্থিতি (ই-কমার্স ইনভেন্টরি, ডেটা গুদামজাতকরণ, রিপোর্টিং) |
| মার্জ | পর্যায়ক্রমিক (যখন সংযুক্ত থাকে) | 1 | দ্বিমুখী (প্রকাশক ↔ গ্রাহক) | মোবাইল অ্যাপ্লিকেশন, অফলাইন কর্মী (বিক্রয় বল অটোমেশন, মাঠ পরিষেবা) |
| পিয়ার টু পিয়ার | রিয়েল-টাইমের কাছাকাছি | একাধিক (৩ বা তার বেশি) | দ্বিমুখী (সকল নোড) | বিশ্বব্যাপী মাল্টি-ডেটাসেন্টার স্থাপনা (স্থানীয় পঠন-লেখার অ্যাক্সেস সহ বিশ্বব্যাপী অফিস) |
| দ্বিমুখী | রিয়েল-টাইমের কাছাকাছি | 2 | দ্বিমুখী (উভয় সার্ভার) | দুই-ডেটাসেন্টার সক্রিয়-সক্রিয় কনফিগারেশন (দ্বৈত-সাইট উচ্চ প্রাপ্যতা) |
| আপডেটযোগ্য সাবস্ক্রিপশন | রিয়েল-টাইমের কাছাকাছি | 1 | প্রাথমিকভাবে এক দিক (মাঝে মাঝে বিপরীত আপডেট) | যেসব শাখা অফিস প্রাথমিকভাবে পড়ে কিন্তু মাঝে মাঝে আপডেট হয় (স্থানীয় সংশোধন) |
4. সেট আপ করা হচ্ছে SQL Server প্রতিলিপি
৪.১ পূর্বশর্ত এবং প্রয়োজনীয়তা
4.1.1 সফ্টওয়্যার প্রয়োজনীয়তা
SQL Server প্রতিলিপির জন্য সামঞ্জস্যপূর্ণ প্রয়োজন SQL Server টপোলজির সকল অংশগ্রহণকারীর জন্য সংস্করণ। পরিবেশক সংস্করণটি প্রকাশক সংস্করণের সমান বা তার চেয়ে বেশি হতে হবে এবং গ্রাহক প্রকাশকের দুটি সংস্করণের মধ্যে থাকতে পারে। উদাহরণস্বরূপ, একটি SQL Server ২০১৬ সালের প্রকাশক প্রতিলিপি করতে পারেন SQL Server ২০১২, ২০১৪, ২০১৬, ২০১৭, অথবা ২০১৯ সালের গ্রাহক।
৪.১.২ অনুমতির প্রয়োজনীয়তা
রেপ্লিকেশন কনফিগার করার জন্য প্রতিটি স্তরে নির্দিষ্ট অনুমতির প্রয়োজন হয়। সিস্টেম অ্যাডমিন ফিক্সড সার্ভার রোলের সদস্যরা সমস্ত রেপ্লিকেশন কনফিগারেশন কাজ সম্পাদন করতে পারে। আরও সূক্ষ্ম অনুমতির জন্য, ব্যবহারকারীদের প্রকাশক এবং গ্রাহক ডাটাবেসের জন্য db_owner ডাটাবেস রোলের সদস্য হতে হবে।
৪.২ ধাপ ১: বিতরণ কনফিগার করুন
ডিস্ট্রিবিউশন কনফিগার করা হল সেট আপ করার প্রথম ধাপ SQL Server প্রতিলিপি
ব্যবহার করে বিতরণ কনফিগার করতে SQL Server ম্যানেজমেন্ট স্টুডিও:
- এর সাথে সংযুক্ত হন SQL Server উদাহরণ SQL Server ম্যানেজমেন্ট স্টুডিও
- অবজেক্ট এক্সপ্লোরারে, ডান-ক্লিক করুন প্রতিলিপি ফোল্ডার এবং নির্বাচন করুন বিতরণ কনফিগার করুন.
- কনফিগার ডিস্ট্রিবিউশন উইজার্ডে, ক্লিক করুন পরবর্তী স্বাগতম পৃষ্ঠায়
- উপরে পরিবেশক পৃষ্ঠায়, আপনার টপোলজির প্রয়োজনীয়তার উপর ভিত্তি করে নিম্নলিখিত বিকল্পগুলির মধ্যে একটি বেছে নিন:
- স্থানীয় পরিবেশক: “ServerName তার নিজস্ব পরিবেশক হিসেবে কাজ করবে” নির্বাচন করুন; SQL Server "যদি আপনি প্রকাশক এবং পরিবেশককে একই ইনস্ট্যান্সে চালাতে চান (বর্তমান ইনস্ট্যান্স) তাহলে একটি বিতরণ ডাটাবেস এবং লগ তৈরি করবে"। এই কনফিগারেশনটি সেট আপ করা সহজ এবং ছোট পরিবেশের জন্য উপযুক্ত অথবা যখন প্রকাশক এবং পরিবেশকের মধ্যে নেটওয়ার্ক ল্যাটেন্সি সমস্যার সৃষ্টি করে।
- রিমোট ডিস্ট্রিবিউটর: “Use the following server as the Distributor” নির্বাচন করুন এবং ক্লিক করুন বিজ্ঞাপন যদি আপনি একটি পৃথক ইনস্ট্যান্সে ডিস্ট্রিবিউশন প্রসেসিং অফলোড করতে চান, তাহলে একটি রিমোট ডিস্ট্রিবিউটার সার্ভার নির্দিষ্ট করতে হবে। এই কনফিগারেশনটি একাধিক সার্ভারে কাজের চাপ বিতরণ করে রেপ্লিকেশন ভলিউম বেশি হলে কর্মক্ষমতা উন্নত করে। আপনাকে রিমোট ডিস্ট্রিবিউটরের নাম প্রদান করতে হবে এবং একটি পাসওয়ার্ড নির্দিষ্ট করতে হবে যা প্রকাশক ডিস্ট্রিবিউটরের সাথে সংযোগ স্থাপনের জন্য ব্যবহার করবেন।
- ক্লিক পরবর্তী স্ন্যাপশট ফোল্ডারের অবস্থান নির্দিষ্ট করতে। নেটওয়ার্ক জুড়ে অ্যাক্সেসযোগ্যতা নিশ্চিত করতে স্থানীয় পাথের পরিবর্তে একটি UNC পাথ (যেমন \\servername\share\folder) ব্যবহার করুন।
- উপরে বিতরণ ডাটাবেস পৃষ্ঠায় যান, ডিফল্ট বিতরণ ডাটাবেস নাম (সাধারণত "বিতরণ") গ্রহণ করুন অথবা একটি কাস্টম নাম নির্দিষ্ট করুন, তারপর ডেটা এবং লগ ফাইলের অবস্থান কনফিগার করুন।
- উপরে পাবলিশার্স পৃষ্ঠায়, যাচাই করুন যে বর্তমান সার্ভারটি প্রকাশক হিসেবে সক্রিয় আছে। আপনি যদি বর্তমান সার্ভারটিকে পরিবেশক হিসেবে কনফিগার করেন, তাহলে আপনি অতিরিক্ত প্রকাশক যোগ করতে পারেন যারা এই পরিবেশক ব্যবহার করবে।
- উইজার্ডের ক্রিয়াগুলি পর্যালোচনা করুন এবং ক্লিক করুন শেষ বিতরণ কনফিগার করতে।
৪.৩ ধাপ ২: প্রকাশনা তৈরি করুন
বিতরণ কনফিগার করার পর, পরবর্তী ধাপ হল একটি প্রকাশনা তৈরি করা যা নির্ধারণ করে যে কোন ডেটা অবজেক্টগুলি গ্রাহকদের কাছে প্রতিলিপি করা হবে।
ব্যবহার করে একটি প্রকাশনা তৈরি করতে SQL Server ম্যানেজমেন্ট স্টুডিও:
- অবজেক্ট এক্সপ্লোরারে, প্রসারিত করুন প্রতিলিপি ফোল্ডার.
- সঠিক পছন্দ স্থানীয় প্রকাশনা এবং নির্বাচন করুন নতুন প্রকাশনা.
- নতুন প্রকাশনা উইজার্ড শুরু হবে; ক্লিক করুন পরবর্তী স্বাগতম পৃষ্ঠায়
- আপনি যে ডাটাবেসটি প্রকাশ করতে চান তা নির্বাচন করুন প্রকাশনা ডাটাবেস পৃষ্ঠা। এটি স্বয়ংক্রিয়ভাবে নির্বাচিত ডাটাবেসে প্রকাশনা সক্ষম করে।
- উপরে প্রকাশনার ধরন পৃষ্ঠা থেকে, প্রতিলিপির ধরণ নির্বাচন করুন: স্ন্যাপশট প্রকাশনা, লেনদেন প্রকাশনা, পিয়ার-টু-পিয়ার প্রকাশনা, বা প্রকাশনা মার্জ করুন.
- উপরে প্রবন্ধ পৃষ্ঠাটি প্রসারিত করুন, টেবিল নোড এবং নিবন্ধ হিসেবে অন্তর্ভুক্ত করার জন্য টেবিল নির্বাচন করুন।
- ঐচ্ছিকভাবে প্রসারিত করুন সঞ্চিত পদ্ধতি, মতামত, অথবা অন্যান্য বস্তুর ধরণ যাতে অতিরিক্ত নিবন্ধ অন্তর্ভুক্ত করা যায়।
- ক্লিক প্রবন্ধ বৈশিষ্ট্য ফিল্টারিং বা অন্যান্য নিবন্ধ-নির্দিষ্ট সেটিংস কনফিগার করতে।
- উপরে সারণির সারি ফিল্টার করুন পৃষ্ঠা, প্রয়োজনে সারি ফিল্টার যোগ করুন।
- উপরে স্ন্যাপশট এজেন্ট পৃষ্ঠা থেকে, স্ন্যাপশটটি কখন তৈরি করবেন তা বেছে নিন: তাৎক্ষণিকভাবে, নির্দিষ্ট সময়ে, অথবা একটি সময়সূচীতে।
- উপরে এজেন্ট নিরাপত্তা পৃষ্ঠায়, স্ন্যাপশট এজেন্টের জন্য নিরাপত্তা প্রেক্ষাপট নির্দিষ্ট করুন।
- উপরে উইজার্ড অ্যাকশন পৃষ্ঠা, নির্বাচন করুন প্রকাশনা তৈরি করুন.
- একটি প্রকাশনার নাম দিন এবং ক্লিক করুন শেষ.
৪.৪ ধাপ ৩: সাবস্ক্রিপশন তৈরি করুন
একটি প্রকাশনা তৈরি করার পর, পরবর্তী ধাপ হল এমন সাবস্ক্রিপশন তৈরি করা যা প্রকাশনাটিকে গ্রাহক ডাটাবেসের সাথে সংযুক্ত করে।
সাবস্ক্রিপশনগুলি পুশ সাবস্ক্রিপশন (ডিস্ট্রিবিউটর দ্বারা পরিচালিত) অথবা পুল সাবস্ক্রিপশন (গ্রাহক দ্বারা পরিচালিত) হতে পারে। মূল পার্থক্য হল আপনি কোথায় সাবস্ক্রিপশন তৈরি করবেন এবং কোন এজেন্টের অবস্থান নির্বাচন করবেন, যা সাবস্ক্রিপশনের ক্রিয়া (পুশ বা পুল) নির্ধারণ করে।
পুশ সাবস্ক্রিপশনের জন্য (পরিবেশক দ্বারা পরিচালিত):
- উপরে প্রকাশক সার্ভার, প্রসারিত করুন প্রতিলিপি -> স্থানীয় প্রকাশনা.
- প্রকাশনাটিতে ডান-ক্লিক করুন এবং নির্বাচন করুন নতুন সাবস্ক্রিপশন.
পুল সাবস্ক্রিপশনের জন্য (গ্রাহক দ্বারা পরিচালিত):
- উপরে গ্রাহক সার্ভার, প্রসারিত করুন প্রতিলিপি, সঠিক পছন্দ স্থানীয় সদস্যতা, এবং নির্বাচন করুন নতুন সাবস্ক্রিপশন.
- উপরে প্রকাশন পৃষ্ঠা, ক্লিক করুন আবিষ্কার SQL Server প্রকাশক এবং প্রকাশক সার্ভারের সাথে সংযোগ করুন।
উভয় সাবস্ক্রিপশন প্রকারের জন্য সাধারণ উইজার্ড পদক্ষেপ:
- নতুন সাবস্ক্রিপশন উইজার্ডে, ক্লিক করুন পরবর্তী স্বাগতম পৃষ্ঠায়
- প্রকাশনাটি নির্বাচন করুন এবং ক্লিক করুন পরবর্তী.
- উপরে বিতরণ এজেন্টের অবস্থান পৃষ্ঠায়, এজেন্টের অবস্থান নির্বাচন করুন:
- পুশ সাবস্ক্রিপশন: “Run all agents at the Distributor” নির্বাচন করুন – Distributor গ্রাহকদের পরিবর্তনগুলি পুশ করবে।
- সাবস্ক্রিপশন পুল করুন: “প্রতিটি এজেন্টকে তার গ্রাহকের কাছে চালান” নির্বাচন করুন – প্রতিটি গ্রাহক পরিবেশকের কাছ থেকে পরিবর্তনগুলি সংগ্রহ করবেন।
- উপরে গ্রাহকগণ পৃষ্ঠা, বিদ্যমান গ্রাহক সার্ভার নির্বাচন করুন অথবা ক্লিক করুন গ্রাহক যোগ করুন নতুন যোগ করতে।
- প্রতিটি গ্রাহকের জন্য, গন্তব্য ডাটাবেস নির্বাচন করুন অথবা একটি নতুন ডাটাবেস তৈরি করুন। বিঃদ্রঃ: সাবস্ক্রিপশন ডাটাবেস অবশ্যই প্রকাশক ডাটাবেস থেকে আলাদা হতে হবে, এমনকি একই ব্যবহার করলেও SQL Server উদাহরণ হিসেবে বলা যায়।
- উপরে বিতরণ এজেন্ট নিরাপত্তা পৃষ্ঠায়, নিরাপত্তা প্রেক্ষাপট কনফিগার করতে প্রতিটি সাবস্ক্রিপশনের জন্য বৈশিষ্ট্য বোতামে ক্লিক করুন।
- উপরে সিঙ্ক্রোনাইজেশন সময়সূচী পৃষ্ঠা, ক্রমাগত সিঙ্ক্রোনাইজেশন বা নির্ধারিত সিঙ্ক্রোনাইজেশন বেছে নিন।
- উপরে সাবস্ক্রিপশন শুরু করুন পৃষ্ঠা, নির্বাচন করুন অবিলম্বে উইজার্ড সমাপ্তির সময় আরম্ভ করতে অথবা প্রথম সিঙ্ক্রোনাইজেশনে.
- উইজার্ডের ক্রিয়াগুলি পর্যালোচনা করুন এবং ক্লিক করুন শেষ.
৫. পর্যবেক্ষণ ও ব্যবস্থাপনা SQL Server প্রতিলিপি
৫.১ রেপ্লিকেশন মনিটরের সাহায্যে রেপ্লিকেশন পর্যবেক্ষণ
রেপ্লিকেশন মনিটর চালু করতে:
- In SQL Server ম্যানেজমেন্ট স্টুডিও, প্রসারিত করুন প্রতিলিপি অবজেক্ট এক্সপ্লোরারে।
- সঠিক পছন্দ প্রতিলিপি এবং নির্বাচন করুন রেপ্লিকেশন মনিটর চালু করুন.
- যদি কোনও প্রকাশক নিবন্ধিত না থাকে, তাহলে ক্লিক করুন প্রকাশক যোগ করুন বাম পাশে
- বেছে নিন বিজ্ঞাপন SQL Server প্রকাশক এবং প্রকাশক সার্ভারের সাথে সংযোগ করুন।
- প্রকাশকটি বাম প্যানেলে প্রকাশনা এবং সাবস্ক্রিপশনের জন্য সম্প্রসারণযোগ্য নোড সহ প্রদর্শিত হবে।
৫.২ কর্মক্ষমতা পর্যবেক্ষণ
৫.২.১ মনিটর লেটেন্সি
রেপ্লিকেশন ল্যাটেন্সি হলো প্রকাশকের ক্ষেত্রে ঘটে যাওয়া পরিবর্তন এবং গ্রাহকের ক্ষেত্রে সেই পরিবর্তন প্রয়োগের মধ্যে সময়ের বিলম্ব। ডেটার সতেজতা ব্যবসায়িক প্রয়োজনীয়তা পূরণ করে তা নিশ্চিত করার জন্য ল্যাটেন্সি পর্যবেক্ষণ করুন।
অল সাবস্ক্রিপশন ট্যাবে ল্যাটেন্সি মেট্রিক্স দেখতে রেপ্লিকেশন মনিটর ব্যবহার করুন। ল্যাটেন্সি কলামটি সেকেন্ডে গড় ল্যাটেন্সি দেখায়। লেনদেনের প্রতিলিপির জন্য, ট্রেসার টোকেনগুলি রেপ্লিকেশন পাইপলাইনের মাধ্যমে ট্র্যাক করা মার্কার লেনদেন সন্নিবেশ করে সুনির্দিষ্ট ল্যাটেন্সি পরিমাপ প্রদান করে।
ট্রেসার টোকেন ব্যবহার করতে:
- রেপ্লিকেশন মনিটরে, একটি লেনদেনমূলক প্রকাশনা নির্বাচন করুন।
- ক্লিক করুন ট্রেসার টোকেন ট্যাব।
- ক্লিক ট্রেসার ঢোকান একটি মার্কার লেনদেন ইনজেক্ট করতে।
- প্রকাশক থেকে পরিবেশক এবং গ্রাহক হয়ে টোকেনটি ভ্রমণের সময় এটি পর্যবেক্ষণ করুন।
- প্রতিটি বিভাগের বাধা চিহ্নিত করতে কত সময় লেগেছে তা দেখুন।
৫.২.২ মনিটর থ্রুপুট
থ্রুপুট সময়ের সাথে সাথে প্রতিলিপি করা ডেটার পরিমাণ পরিমাপ করে, যা সাধারণত প্রতি সেকেন্ডে লেনদেন বা প্রতি সেকেন্ডে কমান্ড হিসাবে প্রকাশ করা হয়। প্রকাশকের কার্যকলাপের সাথে তাল মিলিয়ে প্রতিলিপি তৈরি করা নিশ্চিত করতে থ্রুপুট পর্যবেক্ষণ করুন।
রেপ্লিকেশন মনিটর মৌলিক সিঙ্ক্রোনাইজেশন স্ট্যাটাস প্রদান করলেও, GUI তে ডেলিভারি রেট এবং বিস্তারিত থ্রুপুট মেট্রিক্স দৃশ্যমান হয় না। থ্রুপুট নিরীক্ষণের জন্য ডিস্ট্রিবিউশন ডাটাবেসের বিপরীতে T-SQL কোয়েরি ব্যবহার করুন:
USE distribution
GO
-- Direct join to avoid subquery
SELECT TOP 20
h.time AS [Time],
a.name AS [Agent Name],
h.runstatus AS [Status],
h.delivered_transactions AS [Delivered Transactions],
h.delivered_commands AS [Delivered Commands],
h.delivery_rate AS [Delivery Rate (commands/sec)],
h.delivery_latency AS [Delivery Latency (ms)],
h.comments AS [Comments]
FROM MSdistribution_history h
JOIN MSdistribution_agents a ON h.agent_id = a.id
WHERE a.name LIKE '%MyPublication2%'
AND h.runstatus IN (2, 3, 4, 6)
ORDER BY h.time DESC
GO
স্ট্যাটাস কোড: ১ = শুরু, ২ = চলছে, ৩ = সফল, ৪ = নিষ্ক্রিয়, ৫ = পুনরায় চেষ্টা, ৬ = ব্যর্থ। রেপ্লিকেশন কখন পিছিয়ে পড়ছে তা শনাক্ত করতে পাবলিশার ট্রানজ্যাকশন রেটের সাথে ডেলিভারি রেটের তুলনা করুন। পারফরম্যান্স কাউন্টার উইন্ডোজ পারফরম্যান্স মনিটর প্রতিটি প্রতিলিপি এজেন্টের জন্য অতিরিক্ত থ্রুপুট মেট্রিক্স প্রদান করুন।
৫.২.৩ বাধা চিহ্নিত করুন
টপোলজির একাধিক পয়েন্টে প্রতিলিপিকরণের বাধা দেখা দিতে পারে। প্রকাশকের ক্ষেত্রে, অতিরিক্ত স্ন্যাপশট তৈরির সময় বা লগ রিডার এজেন্টের বিলম্ব রিসোর্সের সীমাবদ্ধতা নির্দেশ করতে পারে। প্রতিলিপিকরণ কার্যকলাপের সময় প্রকাশকের CPU, মেমরি এবং ডিস্ক I/O পর্যবেক্ষণ করুন।
ডিস্ট্রিবিউটরের কাছে, ডিস্ট্রিবিউশন ডাটাবেসে লেনদেন জমা হচ্ছে কিনা তা পরীক্ষা করুন। প্রচুর সংখ্যক অ-বিতরণযোগ্য কমান্ড ইঙ্গিত দেয় যে ডিস্ট্রিবিউটর ডেলিভারি ধরে রাখতে পারছে না। ডিস্ট্রিবিউটর সার্ভার রিসোর্সগুলি পর্যবেক্ষণ করুন এবং উচ্চ-ভলিউম পরিস্থিতির জন্য একটি ডেডিকেটেড রিমোট ডিস্ট্রিবিউটর ব্যবহার করার কথা বিবেচনা করুন।
গ্রাহকের ক্ষেত্রে, পরিবর্তনের ধীর প্রয়োগের ফলে অপর্যাপ্ত সম্পদ, অনুপস্থিত সূচক, অথবা সীমাবদ্ধতা হতে পারে যা সন্নিবেশ কার্যক্রমকে ধীর করে দেয়। ডিস্ট্রিবিউশন এজেন্ট চলাকালীন গ্রাহক সম্পদের ব্যবহার এবং কোয়েরি কর্মক্ষমতা পর্যবেক্ষণ করুন। উপাদানগুলির মধ্যে নেটওয়ার্ক ব্যান্ডউইথ সীমাবদ্ধতাও বাধা সৃষ্টি করে, বিশেষ করে বৃহৎ ডেটা ভলিউমের ক্ষেত্রে।
৫.৩ প্রতিলিপি এজেন্ট পরিচালনা
৫.৩.১ এজেন্ট চালু এবং বন্ধ করা
একটি রেপ্লিকেশন এজেন্ট চালু বা বন্ধ করতে:
- In SQL Server ম্যানেজমেন্ট স্টুডিও, প্রসারিত করুন SQL Server প্রতিনিধি -> জবস.
- রেপ্লিকেশন এজেন্টের কাজটি সনাক্ত করুন (নামগুলিতে সাধারণত প্রকাশনা এবং গ্রাহকের তথ্য অন্তর্ভুক্ত থাকে)।
- কাজটিতে ডান-ক্লিক করুন এবং নির্বাচন করুন কাজ শুরু করুন or কাজ বন্ধ করুন.
৫.৩.২ এজেন্ট প্রোফাইল কনফিগার করুন
এজেন্ট প্রোফাইলে এমন প্যারামিটার সেট থাকে যা এজেন্টের আচরণ নিয়ন্ত্রণ করে। SQL Server সাধারণ পরিস্থিতির জন্য অপ্টিমাইজ করা ডিফল্ট প্রোফাইল প্রদান করে এবং আপনি নির্দিষ্ট প্রয়োজনের জন্য কাস্টম প্রোফাইল তৈরি করতে পারেন।
এজেন্ট প্রোফাইল পরিবর্তন করতে:
- অবজেক্ট এক্সপ্লোরারে, প্রসারিত করুন প্রতিলিপি.
- সঠিক পছন্দ প্রতিলিপি এবং নির্বাচন করুন পরিবেশক বৈশিষ্ট্য.
- ক্লিক করুন প্রোফাইল ডিফল্ট বোতাম.
- ড্রপডাউন থেকে একটি এজেন্টের ধরণ (স্ন্যাপশট, লগ রিডার, বিতরণ, অথবা মার্জ) নির্বাচন করুন।
- একটি প্রোফাইল নির্বাচন করুন এবং ক্লিক করুন প্রোপার্টি প্যারামিটার মান দেখতে।
- ক্লিক নতুন প্রোফাইল বিদ্যমান প্রোফাইলের উপর ভিত্তি করে একটি কাস্টম প্রোফাইল তৈরি করতে।
- প্রয়োজনে প্যারামিটার পরিবর্তন করুন এবং ক্লিক করুন OK.
সাবস্ক্রিপশন বৈশিষ্ট্য সম্পাদনা করে এবং এজেন্ট প্রোফাইল ড্রপডাউন থেকে পছন্দসই প্রোফাইল নির্বাচন করে এজেন্টের জন্য একটি প্রোফাইল প্রয়োগ করুন।
৫.৩.৩ এজেন্ট প্যারামিটার এবং সেটিংস
এজেন্ট প্যারামিটারগুলি কর্মক্ষমতা এবং আচরণকে সূক্ষ্ম-সুরক্ষিত করে। ডিস্ট্রিবিউশন এজেন্টের মূল প্যারামিটারগুলির মধ্যে রয়েছে CommitBatchSize (প্রতি কমিটে প্রয়োগ করা লেনদেনের সংখ্যা), CommitBatchThreshold (কমিটের আগে কমান্ডের সংখ্যা), SubscriptionStreams (দ্রুত ডেলিভারির জন্য সমান্তরাল সংযোগ), এবং QueryTimeout (কমান্ডের জন্য টাইমআউট)।
লগ রিডার এজেন্টের জন্য, গুরুত্বপূর্ণ প্যারামিটারগুলির মধ্যে রয়েছে ReadBatchSize (প্রতি স্ক্যানে পঠিত লেনদেন), ReadBatchThreshold (ডেলিভারির আগে কমান্ড), এবং PollingInterval (লগ স্ক্যানের মধ্যে বিলম্ব)। লেনদেনের পরিমাণ এবং লেটেন্সির প্রয়োজনীয়তার উপর ভিত্তি করে এই প্যারামিটারগুলি সামঞ্জস্য করুন।
৫.৪ ব্যাকআপ এবং পুনরুদ্ধারের বিষয়বস্তু
প্রতিলিপিকরণের সাথে জড়িত ডাটাবেসগুলির ব্যাকআপ নেওয়ার জন্য বিশেষ বিবেচনা প্রয়োজন। প্রকাশক ডাটাবেসের জন্য, নিয়মিত পূর্ণ এবং লেনদেন লগ ব্যাকআপ অপরিহার্য। লেনদেনের প্রতিলিপিকরণে ডাটাবেসগুলির ব্যাকআপ নেওয়ার সময় WITH REPLICATION বিকল্পটি ব্যবহার করে প্রতিলিপিকরণ সহায়তার জন্য ডাটাবেস ব্যাকআপ চিহ্নিত করুন। প্রতিলিপি কনফিগারেশন সুরক্ষিত রাখতে নিয়মিত বিতরণ ডাটাবেসের ব্যাকআপ নিন।
একই নামের একই সার্ভারে প্রকাশক ডাটাবেস পুনরুদ্ধার করার সময়, প্রতিলিপি অবস্থা সংরক্ষণ করতে WITH KEEP_REPLICATION বিকল্পটি ব্যবহার করুন। এই বিকল্পটি নিশ্চিত করে যে লগ রিডার এজেন্ট দ্বারা এখনও প্রক্রিয়াজাত না হওয়া লেনদেনগুলি প্রতিলিপির জন্য চিহ্নিত থাকে, যা সাবস্ক্রিপশন পুনরায় আরম্ভ না করেই প্রতিলিপি স্বয়ংক্রিয়ভাবে চালিয়ে যেতে দেয়।
দুর্যোগ পুনরুদ্ধারের পরিস্থিতিতে যেখানে ব্যাকআপ অনুপলব্ধ, দূষিত, অথবা ডাটাবেস ফাইলগুলি ক্ষতিগ্রস্ত হয়, সেখানে বিশেষায়িত পুনরুদ্ধার সরঞ্জামের প্রয়োজন হতে পারে। DataNumen SQL Recovery দূষিত বা অ্যাক্সেসযোগ্য MDF এবং NDF ফাইল থেকে ডেটা বের করতে পারে, স্ট্যান্ডার্ড পুনরুদ্ধার পদ্ধতি ব্যর্থ হলে শেষ অবলম্বনের বিকল্প প্রদান করে।
আরও বিশদ জন্য SQL Server ব্যাকআপ, আমাদের দেখুন ব্যাপক গাইড.
6. প্রায়শই জিজ্ঞাসিত প্রশ্ন (FAQ)
প্রশ্ন: স্ন্যাপশট এবং লেনদেনের প্রতিলিপির মধ্যে পার্থক্য কী?
স্ন্যাপশট রেপ্লিকেশন একটি নির্দিষ্ট সময়ে ডেটার একটি সম্পূর্ণ অনুলিপি তৈরি করে এবং তা সাবস্ক্রাইবারে প্রয়োগ করে, যা কদাচিৎ পরিবর্তনশীল ডেটার জন্য উপযুক্ত। ট্রানজ্যাকশনাল রেপ্লিকেশন একটি প্রাথমিক স্ন্যাপশট দিয়ে শুরু হয় এবং তারপর সংঘটিত হওয়ার সাথে সাথে স্বতন্ত্র ট্রানজ্যাকশনগুলোকে ক্রমাগত প্রতিলিপি করে, যা ঘন ঘন পরিবর্তনশীল ডেটার জন্য প্রায় রিয়েল-টাইম সিনক্রোনাইজেশন প্রদান করে।
প্রশ্ন: আমি কি বিভিন্ন ধরণের মধ্যে প্রতিলিপি তৈরি করতে পারি? SQL Server সংস্করণ?
উত্তর: হ্যাঁ, SQL Server প্রতিলিপি সীমিত পরিসরের মধ্যে সংস্করণের সামঞ্জস্য সমর্থন করে। পরিবেশক সংস্করণটি প্রকাশক সংস্করণের সমান বা তার চেয়ে বেশি হতে হবে এবং গ্রাহক প্রকাশকের দুটি সংস্করণের মধ্যে থাকতে পারে। উদাহরণস্বরূপ, যদি প্রকাশক SQL Server ২০১৬ সালে, গ্রাহক হতে পারেন SQL Server 2012, 2014, 2016, 2017, বা 2019।
প্রশ্ন: মার্জ রেপ্লিকেশনে আমি কীভাবে দ্বন্দ্ব মোকাবেলা করব?
A: মার্জ রেপ্লিকেশন বিল্ট-ইন দ্বন্দ্ব সনাক্তকরণ এবং সমাধান প্রক্রিয়া প্রদান করে। আপনি নিবন্ধ স্তরে বিল্ট-ইন দ্বন্দ্ব সমাধানকারী কনফিগার করতে পারেন, বিল্ট-ইন দ্বন্দ্ব সমাধানকারী থেকে বেছে নিতে পারেন অথবা কাস্টম দ্বন্দ্ব সমাধানকারী বাস্তবায়ন করতে পারেন। সাধারণত অগ্রাধিকার-ভিত্তিক বা টাইমস্ট্যাম্প-ভিত্তিক পদ্ধতি ব্যবহার করে দ্বন্দ্ব সমাধান করা হয়, ম্যানুয়াল পর্যালোচনার জন্য দ্বন্দ্ব লগ করার বিকল্প সহ।
প্রশ্ন: প্রতিলিপির কর্মক্ষমতার উপর কী প্রভাব পড়ে?
উত্তর: প্রতিলিপিকরণ বিভিন্নভাবে কর্মক্ষমতাকে প্রভাবিত করে: পরিবর্তনগুলি ট্র্যাক করা এবং স্ন্যাপশট তৈরি করার ফলে প্রকাশককে অতিরিক্ত খরচ করতে হয়, পরিবেশক লেনদেন সংরক্ষণ এবং ফরোয়ার্ড করার জন্য সম্পদ ব্যবহার করে এবং ডেটা স্থানান্তরের সময় নেটওয়ার্ক ব্যান্ডউইথ ব্যবহার করা হয়। প্রতিলিপিকরণের ধরণ অনুসারে প্রভাব পরিবর্তিত হয়, স্ন্যাপশট প্রতিলিপিকরণ পর্যায়ক্রমিক উচ্চ-প্রভাব বিস্ফোরণ ঘটায় এবং লেনদেনের প্রতিলিপি আরও সামঞ্জস্যপূর্ণ কিন্তু অবিচ্ছিন্ন লোড বজায় রাখে।
প্রশ্ন: আমি কিভাবে আমার রেপ্লিকেশন টপোলজি সুরক্ষিত করব?
A: বেশ কয়েকটি সেরা অনুশীলন বাস্তবায়নের মাধ্যমে আপনার প্রতিলিপি টপোলজি সুরক্ষিত করুন: Windows Authentication অথবা strong ব্যবহার করুন SQL Server প্রমাণীকরণ, TLS ব্যবহার করে সংযোগ এনক্রিপ্ট করুন, উপযুক্ত দিয়ে স্ন্যাপশট ফোল্ডারটি সুরক্ষিত করুন NTFS অনুমতি, অ্যাক্সেস নিয়ন্ত্রণের জন্য প্রকাশনা অ্যাক্সেস তালিকা (PAL) কনফিগার করুন, প্রতিটি রেপ্লিকেশন এজেন্টের জন্য ন্যূনতম প্রয়োজনীয় অনুমতি সহ পৃথক পরিষেবা অ্যাকাউন্ট ব্যবহার করুন এবং নিয়মিত রেপ্লিকেশন সুরক্ষা সেটিংস অডিট করুন।
প্রশ্ন: আমি কি Azure SQL ডাটাবেসে প্রতিলিপি তৈরি করতে পারি?
উত্তর: হ্যাঁ, আপনি একটি অন-প্রিমিসেসের মাধ্যমে লেনদেনের প্রতিলিপি ব্যবহার করে Azure SQL ডাটাবেসে প্রতিলিপি তৈরি করতে পারেন। SQL Server অথবা Azure SQL Managed Instance প্রকাশক এবং পরিবেশক হিসেবে কাজ করে। Azure SQL Database গ্রাহক হিসেবে কাজ করতে পারে কিন্তু প্রকাশক বা পরিবেশক হিসেবে নয়। Azure SQL Database-এর সাথে মার্জ রেপ্লিকেশন এবং পিয়ার-টু-পিয়ার রেপ্লিকেশন সমর্থিত নয়।
প্রশ্ন: আমি কিভাবে রেপ্লিকেশন ল্যাগ পর্যবেক্ষণ করব?
A: রেপ্লিকেশন মনিটর ব্যবহার করে রেপ্লিকেশন ল্যাগ মনিটর করুন SQL Server ম্যানেজমেন্ট স্টুডিও, যা প্রতিটি সাবস্ক্রিপশনের জন্য ল্যাটেন্সি মেট্রিক্স প্রদর্শন করে। আপনি MSDistribution_history এবং MSrepl_commands এর মতো ডিস্ট্রিবিউশন ডাটাবেস টেবিলগুলিও জিজ্ঞাসা করতে পারেন, প্রতিলিপি এজেন্টদের জন্য নির্দিষ্ট পারফরম্যান্স কাউন্টার ব্যবহার করতে পারেন, অথবা সিঙ্ক্রোনাইজেশন বিলম্বগুলি সক্রিয়ভাবে সনাক্ত করতে এবং সমাধান করতে ল্যাটেন্সি থ্রেশহোল্ডের উপর ভিত্তি করে সতর্কতা সেট আপ করতে পারেন।
প্রশ্ন: যখন একজন গ্রাহক অফলাইনে থাকেন তখন কী হয়?
A: যখন একজন গ্রাহক অফলাইনে থাকেন, তখন আচরণটি প্রতিলিপির ধরণের উপর নির্ভর করে। লেনদেনের প্রতিলিপির জন্য, গ্রাহক অনলাইনে ফিরে না আসা পর্যন্ত লেনদেন বিতরণ ডাটাবেসে জমা হয়, তারপর সিঙ্ক্রোনাইজেশন পুনরায় শুরু হয়। মার্জ প্রতিলিপির জন্য, উভয় দিকে পরিবর্তনগুলি ট্র্যাক করা হয় এবং সংযোগ পুনরুদ্ধার করা হলে একত্রিত করা হয়। ধরে রাখার সময়কাল সেটিং নির্ধারণ করে যে ডেটা পুনরায় চালু করার আগে কতক্ষণ রাখা হবে।
প্রশ্ন: বিদ্যমান প্রকাশনায় নতুন নিবন্ধ কীভাবে যুক্ত করব?
A: বিদ্যমান প্রকাশনায় নতুন নিবন্ধ যোগ করতে, ব্যবহার করুন SQL Server ম্যানেজমেন্ট স্টুডিও প্রকাশনার বৈশিষ্ট্য পরিবর্তন করতে এবং অতিরিক্ত বস্তু নির্বাচন করতে পারে, অথবা sp_addarticle সঞ্চিত পদ্ধতি ব্যবহার করতে পারে। নিবন্ধ যোগ করার পরে, একটি নতুন স্ন্যাপশট তৈরি করুন এবং গ্রাহকরা নতুন নিবন্ধগুলি পান তা নিশ্চিত করার জন্য সমস্ত সাবস্ক্রিপশন পুনরায় চালু করুন। কিছু পরিবর্তনের জন্য প্রকাশনার সেটিংসের উপর নির্ভর করে সাবস্ক্রিপশন পুনরায় শুরু করার প্রয়োজন হতে পারে।
প্রশ্ন: ডাটাবেস থেকে প্রতিলিপি কীভাবে সরাবো?
A: প্রথমে sp_dropsubscription ব্যবহার করে সমস্ত সাবস্ক্রিপশন মুছে ফেলার মাধ্যমে ডাটাবেস থেকে রেপ্লিকেশন অপসারণ করুন, তারপর sp_dropsublication ব্যবহার করে প্রকাশনাটি বাদ দিন এবং অবশেষে sp_replicationdboption ব্যবহার করে ডাটাবেসে প্রকাশনা বন্ধ করুন। যদি সার্ভারটি একটি পরিবেশক হয়, তাহলে sp_dropsdistributor ব্যবহার করে বিতরণ বন্ধ করুন। প্রতিলিপি কনফিগারেশন অপসারণ করার আগে সর্বদা ডাটাবেসগুলির ব্যাকআপ নিন।
প্রশ্নঃ এর মধ্যে পার্থক্য কি SQL Server প্রতিলিপি এবং সর্বদা উপলব্ধতা গ্রুপ?
A: প্রতিলিপি হল একটি ডেটা বিতরণ এবং ইন্টিগ্রেশন সমাধান যা বস্তু স্তরে কাজ করে, যখন সর্বদা উপলভ্যতা গ্রুপগুলিতে একটি উচ্চ প্রাপ্যতা এবং দুর্যোগ পুনরুদ্ধার সমাধান যা ডাটাবেস স্তরে কাজ করে।
7. উপসংহার
SQL Server প্রতিলিপি একাধিক ডাটাবেস এবং অবস্থান জুড়ে ডেটা বিতরণ এবং সিঙ্ক্রোনাইজ করার জন্য একটি শক্তিশালী কাঠামো প্রদান করে। প্রযুক্তিটি বিভিন্ন ধরণের প্রতিলিপির মাধ্যমে বিভিন্ন পরিস্থিতিতে সহায়তা করে।
সঠিক প্রতিলিপি কৌশল নির্বাচন করা আপনার নির্দিষ্ট প্রয়োজনীয়তার উপর নির্ভর করে। ডেটা পরিবর্তনের ফ্রিকোয়েন্সি, লেটেন্সি প্রয়োজনীয়তা, গ্রাহকদের আপডেট করার প্রয়োজন কিনা, নেটওয়ার্ক বৈশিষ্ট্য এবং গ্রাহকের স্বায়ত্তশাসনের প্রয়োজনীয়তা বিবেচনা করুন। স্ন্যাপশট প্রতিলিপি কদাচিৎ পরিবর্তনশীল রেফারেন্স ডেটার জন্য সবচেয়ে ভালো কাজ করে যেখানে লেটেন্সি গুরুত্বপূর্ণ নয়। লেনদেনের প্রতিলিপি উচ্চ-ভলিউম পরিস্থিতির জন্য উপযুক্ত যেখানে কম লেটেন্সি এবং প্রাথমিকভাবে একমুখী ডেটা প্রবাহের প্রয়োজন হয়।
যখন গ্রাহকদের অফলাইন ক্ষমতা এবং দ্বিমুখী সিঙ্ক্রোনাইজেশন সহ স্বায়ত্তশাসিত অপারেশনের প্রয়োজন হয় তখন মার্জ রেপ্লিকেশন বেছে নিন। রিয়েল-টাইম সামঞ্জস্যের সাথে একাধিক সক্রিয় নোড জুড়ে লোড ব্যালেন্সিং রিড অপারেশনের জন্য পিয়ার-টু-পিয়ার রেপ্লিকেশন বাস্তবায়ন করুন। বিভিন্ন প্রয়োজনীয়তা সহ জটিল পরিস্থিতিতে একাধিক রেপ্লিকেশন ধরণের সমন্বয় করে হাইব্রিড পদ্ধতি বিবেচনা করুন।
তথ্যসূত্র
- মাইক্রোসফটের অফিসিয়াল ডকুমেন্ট: SQL Server প্রতিলিপি
- মাইক্রোসফটের অফিসিয়াল ডকুমেন্ট: প্রতিলিপির ধরণ
- মাইক্রোসফটের অফিসিয়াল ডকুমেন্ট: পিয়ার-টু-পিয়ার - লেনদেনমূলক প্রতিলিপি
লেখক সম্পর্কে
ইউয়ান সেং একজন সিনিয়র ডাটাবেস অ্যাডমিনিস্ট্রেটর (DBA) যার ১০ বছরেরও বেশি অভিজ্ঞতা রয়েছে SQL Server পরিবেশ এবং এন্টারপ্রাইজ ডাটাবেস ব্যবস্থাপনা। তিনি আর্থিক পরিষেবা, স্বাস্থ্যসেবা এবং উৎপাদন সংস্থা জুড়ে শত শত ডাটাবেস পুনরুদ্ধারের পরিস্থিতি সফলভাবে সমাধান করেছেন।
ইউয়ান বিশেষজ্ঞ SQL Server ডাটাবেস পুনরুদ্ধার, উচ্চ প্রাপ্যতা সমাধান এবং কর্মক্ষমতা অপ্টিমাইজেশন। তার ব্যাপক বাস্তব অভিজ্ঞতার মধ্যে রয়েছে মাল্টি-টেরাবাইট ডাটাবেস পরিচালনা, সর্বদা অন প্রাপ্যতা গ্রুপ বাস্তবায়ন এবং মিশন-সমালোচনামূলক ব্যবসায়িক সিস্টেমের জন্য স্বয়ংক্রিয় ব্যাকআপ এবং পুনরুদ্ধার কৌশল তৈরি করা।
তার প্রযুক্তিগত দক্ষতা এবং ব্যবহারিক পদ্ধতির মাধ্যমে, ইউয়ান এমন ব্যাপক নির্দেশিকা তৈরির উপর মনোনিবেশ করেন যা ডাটাবেস প্রশাসক এবং আইটি পেশাদারদের জটিল সমাধানে সহায়তা করে SQL Server দক্ষতার সাথে চ্যালেঞ্জ জানাতে। তিনি সর্বশেষ খবরের সাথে আপডেট থাকেন SQL Server রিলিজ এবং মাইক্রোসফটের ক্রমবর্ধমান ডাটাবেস প্রযুক্তি, নিয়মিতভাবে পুনরুদ্ধারের পরিস্থিতি পরীক্ষা করে নিশ্চিত করে যে তার সুপারিশগুলি বাস্তব-বিশ্বের সেরা অনুশীলনগুলি প্রতিফলিত করে।
সম্পর্কে প্রশ্ন আছে SQL Server পুনরুদ্ধারের প্রয়োজন নাকি অতিরিক্ত ডাটাবেস সমস্যা সমাধানের নির্দেশিকা প্রয়োজন? ইউয়ান স্বাগত জানায়? প্রতিক্রিয়া এবং পরামর্শ এই প্রযুক্তিগত সম্পদ উন্নত করার জন্য।














