MySQL Master-Slave Replication হল একটি প্রক্রিয়া যার মাধ্যমে একটি Master Server থেকে ডেটা Slave Server এ সিঙ্ক্রোনাইজড হয়ে প্রতিফলিত হয়। এটি সাধারণত ডেটাবেসের পারফরম্যান্স এবং উচ্চ প্রাপ্যতা নিশ্চিত করতে ব্যবহৃত হয়। Master Server-এ সমস্ত লেখার (write) অপারেশন করা হয়, এবং Slave Server গুলি শুধুমাত্র পড়ার (read) জন্য ব্যবহৃত হয়।
Master-Slave Replication কনফিগারেশন করার পদক্ষেপ
ধাপ 1: Master Server কনফিগারেশন
my.cnf ফাইলটি সম্পাদনা করুন:
Master Server এ my.cnf ফাইলটি খোলার পর, নিম্নলিখিত সেটিংসগুলো যুক্ত করুন। সাধারণত, এটি
/etc/mysql/my.cnfবা/etc/my.cnfঅবস্থানে থাকে।[mysqld] server-id = 1 log-bin = mysql-bin binlog-do-db = my_database # Replicate specific databaseএখানে:
server-id: Master Server এর একটি ইউনিক আইডি। এটি অন্য কোন সার্ভারের সাথে একে অপরকে বিভ্রান্ত না হওয়ার জন্য গুরুত্বপূর্ণ।log-bin: বাইনারি লগিং চালু করে, যা Master Server-এ সব লেখার অপারেশন রেকর্ড করে।binlog-do-db: আপনি কোন ডেটাবেস রেপ্লিকেট করতে চান তা নির্ধারণ করে।
MySQL সার্ভার রিস্টার্ট করুন:
কনফিগারেশন পরিবর্তনের পর, MySQL সার্ভার রিস্টার্ট করতে হবে।
sudo systemctl restart mysqlMaster Server এ Replication User তৈরি করুন:
Master Server এ একটি ইউজার তৈরি করুন যে Slave Server থেকে সংযোগ করতে পারবে এবং ডেটা রেপ্লিকেট করতে পারবে। MySQL ক্লায়েন্ট ব্যবহার করুন:
CREATE USER 'replicator'@'%' IDENTIFIED BY 'replicator_password'; GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%'; FLUSH PRIVILEGES;'replicator'হল ইউজারের নাম এবং'replicator_password'হল পাসওয়ার্ড।GRANT REPLICATION SLAVE ON *.*: Slave Server কে রেপ্লিকেশন করার অনুমতি দেয়।
Master Server এর বাইনারি লগ পজিশন চেক করুন:
এখন, Master Server থেকে বাইনারি লগ ফাইল এবং পজিশন জানতে হবে যাতে Slave Server সঠিক পজিশন থেকে রেপ্লিকেশন শুরু করতে পারে। নিচের কুয়েরি চালান:
SHOW MASTER STATUS;এটি ফলস্বরূপ বাইনারি লগ ফাইল এবং পজিশন দেখাবে। উদাহরণস্বরূপ:
+-------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | my_database | | +-------------------+----------+--------------+------------------+এখানে:
File: বাইনারি লগ ফাইল (যেমনmysql-bin.000001)।Position: বাইনারি লগ পজিশন (যেমন 107)।
ধাপ 2: Slave Server কনফিগারেশন
my.cnf ফাইল সম্পাদনা করুন:
Slave Server এ
my.cnfফাইলের নিচের সেটিংসগুলো যুক্ত করুন:[mysqld] server-id = 2এখানে:
server-id: Slave Server এর জন্য একটি ইউনিক আইডি (Master Server এর সাথে আলাদা)।
MySQL সার্ভার রিস্টার্ট করুন:
Slave Server এর কনফিগারেশন পরিবর্তন করার পর, সার্ভার রিস্টার্ট করতে হবে।
sudo systemctl restart mysqlSlave Server এ Master Server এর সাথে সংযোগ স্থাপন করুন:
Slave Server এ Master Server থেকে রেপ্লিকেশন শুরু করতে নিচের কমান্ডটি চালান:
CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replicator', MASTER_PASSWORD='replicator_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;MASTER_HOST: Master Server এর আইপি অ্যাড্রেস।MASTER_USER: আপনি যে রেপ্লিকেশন ইউজার তৈরি করেছেন।MASTER_PASSWORD: রেপ্লিকেশন ইউজারের পাসওয়ার্ড।MASTER_LOG_FILE: Master Server থেকে বাইনারি লগ ফাইলের নাম।MASTER_LOG_POS: বাইনারি লগ পজিশন।
Slave Server শুরু করুন:
রেপ্লিকেশন শুরু করতে নিচের কমান্ডটি চালান:
START SLAVE;Slave Server এর স্ট্যাটাস চেক করুন:
Slave Server এর রেপ্লিকেশন স্ট্যাটাস চেক করতে:
SHOW SLAVE STATUS\G;এটি Slave Server এর স্ট্যাটাস দেখাবে, যেখানে আপনি
Slave_IO_RunningএবংSlave_SQL_Runningকলামগুলির মান Yes দেখতে পাবেন, যা নির্দেশ করবে যে রেপ্লিকেশন সফলভাবে চলছে।
ধাপ 3: Master-Slave Replication নিশ্চিত করা
আপনি নিশ্চিত করতে পারেন যে রেপ্লিকেশন সঠিকভাবে চলছে কিনা:
Master Server এ কিছু ডেটা ইনসার্ট করুন:
INSERT INTO my_database.my_table (column1, column2) VALUES ('value1', 'value2');Slave Server এ চেক করুন:
SELECT * FROM my_database.my_table;যদি রেপ্লিকেশন সঠিকভাবে কাজ করে, তাহলে Slave Server এ একই ডেটা প্রদর্শিত হবে যা Master Server থেকে ইনসার্ট করা হয়েছে।
Master-Slave Replication এর সুবিধা:
- Read Scalability (পড়ার স্কেলেবিলিটি): Slave Server গুলি শুধুমাত্র ডেটা পড়ার জন্য ব্যবহার করা হয়, যা Master Server এর উপর চাপ কমায় এবং অ্যাপ্লিকেশনের read-heavy অপারেশনগুলিকে আরও দ্রুত করে।
- High Availability (উচ্চ প্রাপ্যতা): যদি Master Server চলে যায়, আপনি Slave Server কে নতুন Master হিসেবে প্রমোট করতে পারেন এবং সিস্টেমে কোনো ডাউনটাইম থাকবে না।
- Backup: Slave Server গুলি রেপ্লিকেশন প্রক্রিয়ায় অটো আপডেট হওয়ায়, এগুলিকে ব্যাকআপের জন্য ব্যবহার করা যেতে পারে, যাতে Master Server এর উপর অতিরিক্ত চাপ না আসে।
সারাংশ
MySQL Master-Slave Replication হল একটি কার্যকরী কৌশল যা ডেটাবেসের পারফরম্যান্স এবং উচ্চ প্রাপ্যতা নিশ্চিত করতে সাহায্য করে। Master Server ডেটার লেখার (write) জন্য ব্যবহৃত হয় এবং Slave Server গুলি সেই ডেটাকে পড়ার (read) জন্য ব্যবহার করা হয়। রেপ্লিকেশন কনফিগারেশন সঠিকভাবে সম্পন্ন করার পর, আপনি Master-Slave Replication এর সাহায্যে ডেটা স্কেলেবিলিটি, পারফরম্যান্স, এবং সিস্টেমের প্রাপ্যতা বৃদ্ধি করতে পারেন।
Read more