MariaDB-তে রিপ্লিকেশন হল একটি ডেটাবেস সিস্টেমের মধ্যে ডেটা কপি করার প্রক্রিয়া, যেখানে এক বা একাধিক স্লেভ সার্ভারে মূল (Master) সার্ভারের ডেটা সিঙ্ক্রোনাইজ করা হয়। MariaDB-তে রিপ্লিকেশন দুটি প্রধান পদ্ধতিতে কার্যকর করা যায়: Asynchronous Replication এবং Semi-Synchronous Replication।
Asynchronous Replication
Asynchronous Replication (এনভেন্ট বা আসিঙ্ক্রোনাস রিপ্লিকেশন) হল MariaDB-তে সবচেয়ে সাধারণ এবং প্রচলিত রিপ্লিকেশন মডেল। এই মডেলে, মূল সার্ভার (Master) ক্লায়েন্টের রিকোয়েস্ট সম্পন্ন করার পর স্লেভ সার্ভারগুলোতে ডেটা রেপ্লিকেট হয়। এর মানে হল যে, মূল সার্ভার ডেটা পরিবর্তন করার পর তা স্লেভ সার্ভারে পৌঁছানোর জন্য অপেক্ষা না করেই মূল সার্ভার তার কাজ চালিয়ে যায়।
বিশেষ বৈশিষ্ট্য:
- ব্লকিং নয়: মূল সার্ভার স্লেভের জন্য অপেক্ষা না করে তার কার্যক্রম অব্যাহত রাখে।
- ডেটা বিলম্ব: স্লেভে ডেটা পৌঁছানোর ক্ষেত্রে কিছু বিলম্ব থাকতে পারে, কারণ রিপ্লিকেশন পদ্ধতি আসিঙ্ক্রোনাস (অর্থাৎ ডেটা একসাথে সিঙ্ক্রোনাইজ হয় না)।
- পারফরম্যান্স: Asynchronous Replication সাধারণত উচ্চ পারফরম্যান্স প্রদান করে, কারণ এতে স্লেভ সার্ভারের জন্য অপেক্ষা করার প্রয়োজন নেই।
Asynchronous Replication-এ কিভাবে কাজ করে:
- মূল সার্ভার ডেটা পরিবর্তন করলে, পরিবর্তিত ডেটার একটি লগ এন্ট্রি
binlog-এ লিখা হয়। - স্লেভ সার্ভার periodically (নিয়মিত সময় পর)
binlogথেকে ডেটা পড়ে এবং আপডেট গ্রহণ করে। - মূল সার্ভার কাজ চালিয়ে যায়, স্লেভ সার্ভার ডেটা গ্রহণ করার পরে তার হালনাগাদ হয়।
Asynchronous Replication ব্যবহার:
Asynchronous Replication সাধারণত Read-Replica বা Data Distribution সিস্টেমে ব্যবহৃত হয়, যেখানে ডেটা বিলম্ব সহ গ্রহণ করা যেতে পারে এবং সিস্টেমের পারফরম্যান্স বড়ো কাজের সময় গুরুত্বপূর্ণ হয়।
Semi-Synchronous Replication
Semi-Synchronous Replication (সেমি-সিঙ্ক্রোনাস রিপ্লিকেশন) হল MariaDB-তে একটি উন্নত রিপ্লিকেশন পদ্ধতি, যেখানে মূল সার্ভার স্লেভ সার্ভারের সাথে সমন্বয় রেখে কাজ করে। এই মডেলে, মূল সার্ভার ডেটা স্লেভ সার্ভারে প্রেরণ করার পর, স্লেভ সার্ভারের নিশ্চিতকরণ (acknowledgement) পাওয়ার আগ পর্যন্ত মূল সার্ভার তার কার্যক্রম বন্ধ রাখে। অর্থাৎ, মূল সার্ভার স্লেভে ডেটা প্রেরণ করার পর, স্লেভ সার্ভার নিশ্চিত না করলে মূল সার্ভার পরবর্তী রিকোয়েস্ট প্রক্রিয়া শুরু করবে না।
বিশেষ বৈশিষ্ট্য:
- আংশিক সিঙ্ক্রোনাইজেশন: মূল সার্ভার স্লেভ সার্ভারের জন্য অপেক্ষা করে, তবে স্লেভ সার্ভারের সংখ্যা একের বেশি হলে কেবলমাত্র একটি সার্ভারের উত্তর পাওয়ার পর মূল সার্ভার তার কাজ চালিয়ে যেতে পারে।
- ডেটা সিঙ্ক্রোনাইজেশন: স্লেভ সার্ভারে ডেটা পৌঁছানোর সময় বিলম্ব কম থাকে।
- পারফরম্যান্স: এটি কিছুটা পারফরম্যান্স কমাতে পারে, কারণ মূল সার্ভার স্লেভ সার্ভারের উত্তর পাওয়ার জন্য অপেক্ষা করে।
Semi-Synchronous Replication-এ কিভাবে কাজ করে:
- মূল সার্ভার ডেটা পরিবর্তন করলে, তা
binlog-এ লিখে স্লেভ সার্ভারে প্রেরণ করে। - স্লেভ সার্ভার মূল সার্ভারকে নিশ্চিত করে জানায় যে, সে ডেটা গ্রহণ করেছে (এই পদ্ধতিতে স্লেভের নিশ্চিতকরণ অপরিহার্য)।
- নিশ্চিতকরণের পর মূল সার্ভার তার পরবর্তী কাজ শুরু করে।
Semi-Synchronous Replication ব্যবহার:
Semi-Synchronous Replication ব্যবহৃত হয় যেখানে ডেটার সঠিকতা এবং সামঞ্জস্যতা অত্যন্ত গুরুত্বপূর্ণ এবং ডেটা বিলম্ব সহ্যযোগ্য নয়, যেমন ব্যাকআপ সার্ভার বা মিশন-ক্রিটিকাল সিস্টেমে।
Asynchronous এবং Semi-Synchronous Replication এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Asynchronous Replication | Semi-Synchronous Replication |
|---|---|---|
| রিপ্লিকেশন মডেল | একদম আসিঙ্ক্রোনাস (অ্যাকনলেজমেন্ট ছাড়া) | আংশিক সিঙ্ক্রোনাস (অ্যাকনলেজমেন্ট প্রয়োজন) |
| পারফরম্যান্স | উচ্চ (কোনও বিলম্ব নেই) | কম (স্লেভ সার্ভারের অ্যাকনলেজমেন্ট অপেক্ষা করা হয়) |
| ডেটা বিলম্ব | স্লেভে ডেটা পৌঁছানোর বিলম্ব থাকতে পারে | ডেটা বিলম্ব কম থাকে, কারণ স্লেভের উত্তর প্রয়োজন |
| সিস্টেম স্থিতিশীলতা | কিছুটা কম স্থিতিশীলতা (স্লেভ সার্ভারটি সিঙ্ক্রোনাইজ হতে কিছু বিলম্ব হতে পারে) | উচ্চ স্থিতিশীলতা (ডেটা সিঙ্ক্রোনাইজ হয় বেশি দ্রুত এবং নির্ভুলভাবে) |
| ব্যবহার ক্ষেত্র | Read replicas, Data distribution | মিশন-ক্রিটিকাল অ্যাপ্লিকেশন, ব্যাকআপ সার্ভার |
| নির্ভুলতা | ন্যূনতম (ডেটা বিলম্ব বা হারানো হতে পারে) | উচ্চ (এখানে ডেটা হারানোর সম্ভাবনা কম) |
MariaDB-তে Semi-Synchronous এবং Asynchronous Replication কনফিগারেশন
Asynchronous Replication কনফিগারেশন
Asynchronous Replication ব্যবহারের জন্য, MariaDB-তে মূল সার্ভারে log-bin এবং স্লেভ সার্ভারে replicate কনফিগারেশন সেট করা হয়।
মূল সার্ভারের কনফিগারেশন (my.cnf):
[mysqld]
log-bin
server-id = 1
স্লেভ সার্ভারের কনফিগারেশন (my.cnf):
[mysqld]
server-id = 2
replicate-do-db = your_database_name
Semi-Synchronous Replication কনফিগারেশন
Semi-Synchronous Replication ব্যবহার করতে, MariaDB-তে rpl_semi_sync_master_enabled এবং rpl_semi_sync_slave_enabled ভেরিয়েবলগুলি চালু করতে হবে।
মূল সার্ভারের কনফিগারেশন (my.cnf):
[mysqld]
rpl_semi_sync_master_enabled = 1
server-id = 1
log-bin
স্লেভ সার্ভারের কনফিগারেশন (my.cnf):
[mysqld]
rpl_semi_sync_slave_enabled = 1
server-id = 2
মূল সার্ভারে সেমি-সিঙ্ক্রোনাস রিপ্লিকেশন সক্রিয় করতে:
SET GLOBAL rpl_semi_sync_master_enabled = 1;
স্লেভ সার্ভারে সেমি-সিঙ্ক্রোনাস রিপ্লিকেশন সক্রিয় করতে:
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
সারাংশ
MariaDB-তে Asynchronous Replication এবং Semi-Synchronous Replication দুটি আলাদা ধরনের রিপ্লিকেশন পদ্ধতি। Asynchronous Replication সাধারণত উচ্চ পারফরম্যান্স প্রদান করে এবং স্লেভ সার্ভারে ডেটা সিঙ্ক্রোনাইজ করার জন্য অপেক্ষা করে না, ফলে কিছু বিলম্ব হতে পারে। অন্যদিকে, Semi-Synchronous Replication ডেটা সিঙ্ক্রোনাইজ করার জন্য স্লেভ সার্ভারের নিশ্চিতকরণ প্রাপ্তির পর পরবর্তী পদক্ষেপ নেয়, যার ফলে ডেটা সিঙ্ক্রোনাইজেশন অধিক নির্ভুল এবং স্লেভ সার্ভারে দ্রুত পৌঁছায়।
Read more