Master-Slave Replication হলো একটি ডেটাবেসের কাঠামো যেখানে একটি ডেটাবেস (Master) ডেটা লিখে এবং অন্য একটি ডেটাবেস (Slave) শুধুমাত্র পড়ার জন্য সেটি কপি করে রাখে। এটি ডেটাবেসের স্কেলিং এবং রিড-ওনলি অপারেশনগুলির জন্য উপযুক্ত, যেমন রিপোর্ট তৈরি বা উচ্চ লোড সহ অনুরোধ প্রসেসিং।
মারিয়া ডিবি (MariaDB)-তে Master-Slave Replication ডেটাবেসের ডাটা রিয়েল-টাইমে একটি বা একাধিক Slave সার্ভারে কপি করে রাখার পদ্ধতি। এতে, Master সার্ভার থেকে সব রাইট অপারেশন (INSERT, UPDATE, DELETE) করা হয়, এবং Slave সার্ভারে এসব পরিবর্তন স্বয়ংক্রিয়ভাবে প্রতিফলিত হয়, তবে Slave সার্ভার শুধুমাত্র রিড অপারেশন করতে পারে।
Master-Slave Replication কনফিগারেশন সেটআপ
Master-Slave Replication কনফিগার করতে আপনাকে বেশ কিছু ধাপ অনুসরণ করতে হবে। নিচে Master এবং Slave সার্ভারের কনফিগারেশন, ইনস্টলেশন এবং কনফিগারেশন ধাপগুলো বর্ণনা করা হলো।
১. Master সার্ভার কনফিগারেশন
১.১. MariaDB কনফিগার ফাইল এডিট করা
Master সার্ভারে /etc/my.cnf বা /etc/mysql/my.cnf ফাইলটি খুলুন এবং নিচের সেটিংসগুলো যোগ করুন:
[mysqld]
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db = your_database_name
server-id: এটি সার্ভারের একটি অনন্য আইডি, Master সার্ভারের জন্য1বা অন্য যেকোনো সংখ্যা হতে পারে।log-bin: বাইনারি লগ ফাইলের লোকেশন। বাইনারি লগইনে রাইট অপারেশনগুলো ট্র্যাক হয়, যা Slave সার্ভারে রিপ্লিকেট করা হবে।binlog-do-db: কেবলমাত্র যে ডেটাবেসের জন্য রিপ্লিকেশন কার্যকর হবে, তা নির্দিষ্ট করতে এই সেটিং ব্যবহার করুন।
১.২. Master সার্ভারে রিপ্লিকেশন ব্যবহারকারী তৈরি
Master সার্ভারে একটি বিশেষ ব্যবহারকারী তৈরি করতে হবে, যার মাধ্যমে Slave সার্ভার ডেটা সিঙ্ক্রোনাইজ করতে পারবে।
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;
এখানে:
replica_user: Slave সার্ভার দ্বারা ব্যবহৃত হবে এমন ব্যবহারকারীর নাম।password: এই ব্যবহারকারীর পাসওয়ার্ড।
১.৩. Master সার্ভারের স্ন্যাপশট নেওয়া
Master সার্ভারে SHOW MASTER STATUS কুয়েরি চালিয়ে বাইনারি লগ ফাইলের অবস্থান এবং পজিশন জানুন।
SHOW MASTER STATUS;
এটি আপনাকে File এবং Position তথ্য দেবে, যা Slave সার্ভারের কনফিগারেশনে ব্যবহৃত হবে।
২. Slave সার্ভার কনফিগারেশন
২.১. MariaDB কনফিগার ফাইল এডিট করা
Slave সার্ভারে /etc/my.cnf বা /etc/mysql/my.cnf ফাইলটি খুলুন এবং নিচের সেটিংসগুলো যোগ করুন:
[mysqld]
server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin.log
log-bin = /var/log/mysql/mysql-bin.log
read-only = 1
server-id: Slave সার্ভারের জন্য একটি অনন্য আইডি, যেমন2।relay-log: Relay লগ ফাইলের লোকেশন যেখানে রিপ্লিকেট করা ডেটা সঞ্চিত হবে।read-only: Slave সার্ভারে লেখার অনুমতি বন্ধ করার জন্য।
২.২. Slave সার্ভারে রিপ্লিকেশন কনফিগার করা
Slave সার্ভারে CHANGE MASTER TO কুয়েরি ব্যবহার করে Master সার্ভারের তথ্য দিন:
CHANGE MASTER TO
MASTER_HOST = 'master_ip_address',
MASTER_USER = 'replica_user',
MASTER_PASSWORD = 'password',
MASTER_LOG_FILE = 'mysql-bin.000001',
MASTER_LOG_POS = 154;
এখানে:
MASTER_HOST: Master সার্ভারের আইপি ঠিকানা।MASTER_USER: পূর্বে তৈরি করা রিপ্লিকেশন ব্যবহারকারীর নাম।MASTER_PASSWORD: রিপ্লিকেশন ব্যবহারকারীর পাসওয়ার্ড।MASTER_LOG_FILEএবংMASTER_LOG_POS: Master সার্ভারের SHOW MASTER STATUS কুয়েরি থেকে প্রাপ্ত বাইনারি লগ ফাইলের নাম এবং পজিশন।
২.৩. Slave সার্ভারে রিপ্লিকেশন শুরু করা
Slave সার্ভারে রিপ্লিকেশন শুরু করতে START SLAVE কুয়েরি চালান:
START SLAVE;
২.৪. Slave সার্ভারের রিপ্লিকেশন স্ট্যাটাস চেক করা
Slave সার্ভারে রিপ্লিকেশন সঠিকভাবে চলছে কিনা তা চেক করতে:
SHOW SLAVE STATUS\G
এটি আপনাকে রিপ্লিকেশন সম্পর্কিত বিস্তারিত তথ্য দেবে। যদি Slave_IO_Running এবং Slave_SQL_Running এ মান Yes হয়, তবে রিপ্লিকেশন সঠিকভাবে কাজ করছে।
৩. Master-Slave Replication মনিটরিং এবং সমস্যা সমাধান
- ব্যাচ প্রক্রিয়া বা বড় ডেটা পরিবর্তন: কোনো বড় ডেটা পরিবর্তনের সময় Slave সার্ভার সিঙ্ক্রোনাইজেশন হারিয়ে ফেলতে পারে। এটি সমাধান করতে
STOP SLAVEএবংSTART SLAVEদিয়ে রিপ্লিকেশন রিসেট করা যেতে পারে। - রিপ্লিকেশন বিলম্ব: যদি রিপ্লিকেশন বিলম্বিত হয়, তবে এটি সার্ভারের হার্ডওয়্যার এবং নেটওয়ার্ক লোডের উপর নির্ভর করে। সেক্ষেত্রে, নেটওয়ার্ক কনফিগারেশন এবং সার্ভার রিসোর্সে প্রয়োজনীয় পরিবর্তন করতে হবে।
- রিপ্লিকেশন অব্যাহত রাখার জন্য টুল ব্যবহার:
MHA(Master High Availability),OrchestratorএবংGalera Clusterমত টুল ব্যবহার করে Master-Slave Replication এর উচ্চতর স্থিতিশীলতা এবং স্বয়ংক্রিয়ভাবে failover নিশ্চিত করা যেতে পারে।
সারাংশ
MariaDB Master-Slave Replication হলো একটি কার্যকরী পদ্ধতি, যেখানে একে অপরের সাথে ডেটা সিঙ্ক্রোনাইজ করার জন্য একাধিক সার্ভার ব্যবহৃত হয়। এটি ডেটাবেসের লোড ব্যালান্সিং, ডেটা ব্যাকআপ এবং উচ্চ অ্যাভেইলেবিলিটি নিশ্চিত করতে সাহায্য করে। Master সার্ভার থেকে ডেটা রাইট করা হয় এবং Slave সার্ভারে রিড করা হয়। রিপ্লিকেশন সঠিকভাবে কাজ করছে কিনা তা নিয়মিত পর্যবেক্ষণ এবং মনিটর করা উচিত।
Read more