Master-Master Replication

MariaDB এর সিঙ্ক্রোনাইজেশন এবং রিপ্লিকেশন - মারিয়া ডিবি (MariaDB) - Database Tutorials

352

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) কনফিগারেশন

  1. 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 মান সঠিকভাবে সিঙ্ক্রোনাইজ রাখতে সাহায্য করে।
  2. MariaDB সার্ভিস রিস্টার্ট করুন: কনফিগারেশন পরিবর্তন করার পরে MariaDB সার্ভিস রিস্টার্ট করুন।

    sudo systemctl restart mariadb
    
  3. রেপ্লিকেশন ইউজার তৈরি করুন: রেপ্লিকেশন ইউজার তৈরি করতে, MariaDB-তে লগইন করুন এবং নিচের SQL কমান্ডটি চালান:

    CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
    FLUSH PRIVILEGES;
    
  4. বাইনরি লগ চেক করুন: সঠিকভাবে রেপ্লিকেশন কাজ করছে কিনা তা নিশ্চিত করতে বাইনরি লগের নাম ও অবস্থান চেক করুন।

    SHOW MASTER STATUS;
    

    এটি কিছু তথ্য দেখাবে, যেমন File এবং Position। এই তথ্যগুলি Server2-এ কনফিগারেশনে প্রয়োজন হবে।


3. দ্বিতীয় সার্ভারে (Server2) কনফিগারেশন

  1. 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 = 2
    
  2. MariaDB সার্ভিস রিস্টার্ট করুন: সার্ভিস রিস্টার্ট করুন।

    sudo systemctl restart mariadb
    
  3. রেপ্লিকেশন ইউজার তৈরি করুন (যেমন Server1-এ তৈরি করা হয়েছে): দ্বিতীয় সার্ভারে একই রেপ্লিকেশন ইউজার তৈরি করুন।

    CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
    FLUSH PRIVILEGES;
    
  4. স্লেভ কনফিগারেশন সেট করা: এখন, দ্বিতীয় সার্ভারটি প্রথম সার্ভারের সাথে সিঙ্ক্রোনাইজ করার জন্য 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 কমান্ডের আউটপুট থেকে পাওয়া যায়।

  5. রেপ্লিকেশন চালু করুন: রেপ্লিকেশন চালু করার জন্য স্লেভ স্ট্যাটাস চেক করুন এবং স্লেভ চালু করুন:

    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 ফাইলের কনফিগারেশন, ইউজার ক্রিয়েশন এবং স্লেভ কনফিগারেশন গুরুত্বপূর্ণ পদক্ষেপ।


Content added By
Promotion

Are you sure to start over?

Loading...