Master-Master Replication হলো MariaDB-র একটি উন্নত রেপ্লিকেশন কনফিগারেশন যেখানে দুইটি MariaDB সার্ভার একে অপরকে রেপ্লিকেট করে। অর্থাৎ, এক সার্ভারকে মাস্টার (Master) হিসেবে কনফিগার করা হয় এবং একইভাবে অন্য সার্ভারকেও মাস্টার হিসেবে কনফিগার করা হয়। এতে দুইটি সার্ভারই একে অপরের ডেটা শেয়ার করে এবং একে অপরের মধ্যে সমস্ত ডেটাবেস চেঞ্জ সমন্বয় করে।
এটি মূলত উচ্চ উপলব্ধতা (High Availability) এবং লোড ব্যালান্সিংয়ের জন্য ব্যবহৃত হয়। মাস্টার-মাস্টার রেপ্লিকেশনে একটি সার্ভারের ব্যর্থতা হলেও অন্য সার্ভারটি স্বয়ংক্রিয়ভাবে কাজ চালিয়ে যেতে পারে, ফলে ডাউনটাইম কমে যায়।
Master-Master Replication কনফিগারেশন সেটআপ
Master-Master Replication কনফিগার করতে, দুইটি MariaDB সার্ভারের মধ্যে রেপ্লিকেশন প্রক্রিয়া সঠিকভাবে কনফিগার করতে হবে। সাধারণত দুইটি সার্ভারকে "master" হিসেবে কনফিগার করা হয় এবং একে অপরের ডেটা সিঙ্ক্রোনাইজ (synchronize) রাখে।
1. প্রাথমিক প্রস্তুতি
সার্ভার এক্সপ্লোরেশন
ধরা যাক, আমাদের দুটি সার্ভার রয়েছে:
- Server1: আইপি -
192.168.1.10 - Server2: আইপি -
192.168.1.11
2. প্রথম সার্ভারে (Server1) কনফিগারেশন
my.cnf ফাইল আপডেট করুন: MariaDB-এর কনফিগারেশন ফাইল (যেমন
/etc/mysql/my.cnfঅথবা/etc/my.cnf) এ নিচের পরিবর্তনগুলি করুন:[mysqld] server-id = 1 log-bin = /var/log/mysql/mysql-bin.log binlog-do-db = testdb auto_increment_increment = 2 auto_increment_offset = 1- server-id: প্রতিটি সার্ভারের জন্য একটি ইউনিক আইডি।
- log-bin: বাইনরি লোগ ফাইল যা রেপ্লিকেশনকে ট্র্যাক করে।
- binlog-do-db: যে ডেটাবেসের জন্য রেপ্লিকেশন করা হবে।
- auto_increment_increment এবং auto_increment_offset: এই সেটিংগুলো রেপ্লিকেশন চালানো সার্ভারগুলোতে
AUTO_INCREMENTমান সঠিকভাবে সিঙ্ক্রোনাইজ রাখতে সাহায্য করে।
MariaDB সার্ভিস রিস্টার্ট করুন: কনফিগারেশন পরিবর্তন করার পরে MariaDB সার্ভিস রিস্টার্ট করুন।
sudo systemctl restart mariadbরেপ্লিকেশন ইউজার তৈরি করুন: রেপ্লিকেশন ইউজার তৈরি করতে, MariaDB-তে লগইন করুন এবং নিচের SQL কমান্ডটি চালান:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES;বাইনরি লগ চেক করুন: সঠিকভাবে রেপ্লিকেশন কাজ করছে কিনা তা নিশ্চিত করতে বাইনরি লগের নাম ও অবস্থান চেক করুন।
SHOW MASTER STATUS;এটি কিছু তথ্য দেখাবে, যেমন
FileএবংPosition। এই তথ্যগুলি Server2-এ কনফিগারেশনে প্রয়োজন হবে।
3. দ্বিতীয় সার্ভারে (Server2) কনফিগারেশন
my.cnf ফাইল আপডেট করুন: দ্বিতীয় সার্ভারের কনফিগারেশন ফাইলেও একই পরিবর্তন করুন, কিন্তু এবার
server-idপরিবর্তন করে2দিন:[mysqld] server-id = 2 log-bin = /var/log/mysql/mysql-bin.log binlog-do-db = testdb auto_increment_increment = 2 auto_increment_offset = 2MariaDB সার্ভিস রিস্টার্ট করুন: সার্ভিস রিস্টার্ট করুন।
sudo systemctl restart mariadbরেপ্লিকেশন ইউজার তৈরি করুন (যেমন Server1-এ তৈরি করা হয়েছে): দ্বিতীয় সার্ভারে একই রেপ্লিকেশন ইউজার তৈরি করুন।
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES;স্লেভ কনফিগারেশন সেট করা: এখন, দ্বিতীয় সার্ভারটি প্রথম সার্ভারের সাথে সিঙ্ক্রোনাইজ করার জন্য
CHANGE MASTER TOকমান্ডটি ব্যবহার করুন। প্রথম সার্ভারের থেকেFileএবংPositionমানটি ব্যবহার করতে হবে:CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='repl_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 154;এখানে
MASTER_LOG_FILEএবংMASTER_LOG_POSপ্রথম সার্ভারেSHOW MASTER STATUSকমান্ডের আউটপুট থেকে পাওয়া যায়।রেপ্লিকেশন চালু করুন: রেপ্লিকেশন চালু করার জন্য স্লেভ স্ট্যাটাস চেক করুন এবং স্লেভ চালু করুন:
START SLAVE; SHOW SLAVE STATUS\Gএটি নিশ্চিত করবে যে রেপ্লিকেশন সঠিকভাবে কাজ করছে। যদি সব কিছু ঠিক থাকে, তাহলে
Slave_IO_RunningএবংSlave_SQL_Runningদুটি ফিল্ডেYesদেখা যাবে।
4. মাস্টার-মাস্টার রেপ্লিকেশন সম্পন্ন
এখন, Server1 এবং Server2 দুটি সার্ভারই একে অপরকে রেপ্লিকেট করছে। অর্থাৎ, আপনি যে কোনও সার্ভারে ডেটা পরিবর্তন করলে তা অন্য সার্ভারে স্বয়ংক্রিয়ভাবে সিঙ্ক্রোনাইজ হয়ে যাবে।
5. মাস্টার-মাস্টার রেপ্লিকেশন ব্যবস্থাপনা
মাস্টার-মাস্টার রেপ্লিকেশন চালানোর সময় কিছু গুরুত্বপূর্ণ বিষয় খেয়াল রাখতে হবে:
- ডেটা কনফ্লিক্ট: একই ডেটাতে দুটি পরিবর্তন যদি একে অপরকে রেপ্লিকেট করা হয়, তবে ডেটা কনফ্লিক্ট হতে পারে। এজন্য সঠিকভাবে
auto_increment_offsetএবংauto_increment_incrementকনফিগার করা গুরুত্বপূর্ণ। - লগিং এবং মনিটরিং: রেপ্লিকেশন সঠিকভাবে কাজ করছে কিনা তা মনিটর করতে নিয়মিতভাবে
SHOW SLAVE STATUSচেক করা উচিত। - ফেলওভার কনফিগারেশন: মাস্টার-মাস্টার রেপ্লিকেশনে যদি এক সার্ভার ডাউন হয়ে যায়, তাহলে অন্য সার্ভারটি ট্রাফিক পরিচালনা করতে সক্ষম থাকবে, তবে সিস্টেমে কোনো রকমের সমস্যা এড়ানোর জন্য অতিরিক্ত মনিটরিং ব্যবস্থা দরকার।
সারাংশ
MariaDB-তে Master-Master Replication একটি শক্তিশালী রেপ্লিকেশন কনফিগারেশন, যেখানে দুইটি সার্ভার একে অপরকে রেপ্লিকেট করে। এটি উচ্চ উপলব্ধতা এবং লোড ব্যালান্সিংয়ের জন্য ব্যবহৃত হয়, এবং সঠিক কনফিগারেশন ও মনিটরিংয়ের মাধ্যমে সিস্টেমের স্থিতিশীলতা বজায় রাখা যায়। দুটি সার্ভারের মধ্যে রেপ্লিকেশন কার্যকর করতে my.cnf ফাইলের কনফিগারেশন, ইউজার ক্রিয়েশন এবং স্লেভ কনফিগারেশন গুরুত্বপূর্ণ পদক্ষেপ।
Read more