Master-Slave Replication হল একটি ডেটাবেস কনফিগারেশন পদ্ধতি, যেখানে একটি সার্ভার (Master) ডেটা পরিচালনা করে এবং অন্য একটি বা একাধিক সার্ভার (Slave) তার ডেটা কপি করে রাখে। এটি মূলত ডেটাবেসের লোড ব্যালান্সিং, ব্যাকআপ এবং হাই এভেলিবিলিটি নিশ্চিত করতে ব্যবহৃত হয়। এই কনফিগারেশনে, Master সার্ভারকে মূল (primary) সার্ভার হিসেবে বিবেচনা করা হয়, যেখানে সমস্ত লেখার অপারেশন (INSERT, UPDATE, DELETE) করা হয়, আর Slave সার্ভার গুলি Master সার্ভারের কপি হিসেবে কাজ করে, যেখানে শুধুমাত্র পড়ার (READ) অপারেশন করা হয়।
1. Master-Slave Replication কনফিগারেশন প্রক্রিয়া
MariaDB Master-Slave Replication সেটআপ করার জন্য কিছু ধাপ অনুসরণ করতে হয়, যেমন Master এবং Slave সার্ভারগুলোর কনফিগারেশন, সার্ভারের মধ্যে যোগাযোগ স্থাপন, এবং Replication প্রক্রিয়া শুরু করা। নিচে এই প্রক্রিয়া বিস্তারিতভাবে আলোচনা করা হল।
2. Master সার্ভারের কনফিগারেশন
MariaDB কনফিগারেশন ফাইল (my.cnf) এ পরিবর্তন:
- Master সার্ভারের
my.cnfফাইলে কিছু কনফিগারেশন পরিবর্তন করতে হবে, যাতে এটি Replication শুরু করতে পারে। server-id(unique identifier) এবংlog-bin(binary log) প্যারামিটার সক্রিয় করতে হবে।
উদাহরণ:
[mysqld] server-id = 1 log-bin = /var/log/mysql/mysql-bin.log binlog-do-db = your_database_name # Optional: replicate only specific databases- server-id: এই ভেরিয়েবলটি প্রতিটি সার্ভারের জন্য ইউনিক হতে হবে (এখানে Master সার্ভারের জন্য 1 দেওয়া হয়েছে)।
- log-bin: এই প্যারামিটারটি Binary Log ফাইলের লোকেশন নির্ধারণ করে। Replication এর জন্য এই ফাইলটি প্রয়োজন হয়।
- binlog-do-db: যদি আপনি নির্দিষ্ট একটি ডেটাবেসের Replication চান, তবে এটি উল্লেখ করতে পারেন। নাহলে সব ডেটাবেসের Replication হবে।
- Master সার্ভারের
MariaDB সার্ভার রিস্টার্ট করা: কনফিগারেশন পরিবর্তনের পর MariaDB সার্ভারটি রিস্টার্ট করতে হবে।
sudo systemctl restart mariadbReplication User তৈরি করা: Master সার্ভারে একটি ব্যবহারকারী তৈরি করুন, যে Slave সার্ভার থেকে Replication করতে পারবে।
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%'; FLUSH PRIVILEGES;Master সার্ভারের অবস্থান এবং লোগ তথ্য প্রাপ্তি: Master সার্ভারের অবস্থান (Log file name এবং Position) জানতে হবে, যা Slave সার্ভারের সাথে Synch করতে ব্যবহার করা হবে। এই তথ্যটি নিম্নলিখিত কমান্ড দ্বারা পাওয়া যাবে:
SHOW MASTER STATUS;এটি আপনাকে
FileএবংPositionএর তথ্য দেবে। উদাহরণস্বরূপ:+------------------+----------+--------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+-------------------+ | mysql-bin.000001 | 107 | your_database_name | | +------------------+----------+--------------+-------------------+এখানে, File হচ্ছে
mysql-bin.000001এবং Position হচ্ছে107।
3. Slave সার্ভারের কনফিগারেশন
MariaDB কনফিগারেশন ফাইল (my.cnf) এ পরিবর্তন: Slave সার্ভারের
my.cnfফাইলেও কিছু পরিবর্তন করতে হবে।উদাহরণ:
[mysqld] server-id = 2 relay-log = /var/log/mysql/mysql-relay-bin.log log-bin = /var/log/mysql/mysql-bin.log # Optional: If Slave needs to be a Master in future- server-id: Slave সার্ভারের জন্য একটি ইউনিক আইডি দিতে হবে। এটি Master সার্ভারের থেকে আলাদা হতে হবে (এখানে Slave সার্ভারের জন্য 2 দেওয়া হয়েছে)।
- relay-log: Slave সার্ভারের Relay Log ফাইলের অবস্থান নির্ধারণ করে। এটি Master সার্ভারের লগ অনুসরণ করবে।
MariaDB সার্ভার রিস্টার্ট করা: কনফিগারেশন পরিবর্তনের পর Slave সার্ভারের MariaDB সার্ভার রিস্টার্ট করতে হবে।
sudo systemctl restart mariadbSlave সার্ভারে Replication প্রক্রিয়া শুরু করা: Slave সার্ভারে
CHANGE MASTER TOকমান্ড ব্যবহার করে Master সার্ভারের অবস্থান এবং Replication ইউজারের তথ্য সেট করতে হবে।CHANGE MASTER TO MASTER_HOST = 'master_server_ip', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107;এখানে, MASTER_LOG_FILE এবং MASTER_LOG_POS হল Master সার্ভারের
SHOW MASTER STATUSকমান্ড থেকে প্রাপ্ত তথ্য।Replication শুরু করা: এরপর, Slave সার্ভারে Replication প্রক্রিয়া শুরু করতে হবে:
START SLAVE;Replication স্ট্যাটাস চেক করা: Slave সার্ভারের Replication অবস্থান চেক করতে নিচের কমান্ড ব্যবহার করুন:
SHOW SLAVE STATUS\Gএখানে,
Slave_IO_RunningএবংSlave_SQL_RunningযদিYesদেখায়, তাহলে Replication সফলভাবে কাজ করছে।
4. Master-Slave Replication এর কার্যকারিতা পরীক্ষা করা
Master সার্ভারে ডেটা ইনসার্ট:
USE your_database_name; INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2');Slave সার্ভারে ডেটা চেক করা: Slave সার্ভারে গিয়ে নিচের কমান্ড চালিয়ে নিশ্চিত করুন যে ডেটা সঠিকভাবে Replicate হয়েছে।
USE your_database_name; SELECT * FROM your_table;
এখানে, আপনি দেখতে পাবেন যে Master সার্ভারে ইনসার্ট করা ডেটা Slave সার্ভারেও উপস্থিত।
সারাংশ
MariaDB Master-Slave Replication হল একটি কার্যকরী পদ্ধতি ডেটাবেসের লোড ব্যালান্সিং এবং হাই-অ্যাভেইলেবিলিটি নিশ্চিত করার জন্য। Master সার্ভার লেখার কাজ সম্পাদন করে, এবং Slave সার্ভারগুলি Master এর ডেটা কপি করে পড়ে থাকে। Replication সেটআপ করার জন্য, Master এবং Slave সার্ভারে কিছু কনফিগারেশন পরিবর্তন করতে হয়, এবং পরিশেষে Replication শুরু করতে হয়। এটি বিশেষভাবে উপকারী যখন ডেটাবেসের উচ্চ ট্র্যাফিক বা একাধিক ক্লায়েন্টের প্রয়োজনীয়তা থাকে।
Read more