MySQL Replication কি এবং কেন প্রয়োজন?

MySQL রিপ্লিকেশন এবং হাই-অ্যাভেইলেবিলিটি - মাইএসকিউএল (MySQL) - Database Tutorials

337

MySQL Replication হল একটি প্রক্রিয়া যার মাধ্যমে একটি MySQL সার্ভারের ডেটা অন্য একটি সার্ভারে কপি করা হয়। এই প্রক্রিয়াটি মূলত Master-Slave আর্কিটেকচারে কাজ করে, যেখানে একটিকে Master Server হিসেবে নিয়ন্ত্রণ করা হয় এবং অন্যটি Slave Server হিসেবে কাজ করে।

Replication ব্যবহারের মাধ্যমে আপনি আপনার ডেটাবেসের high availability (উচ্চ প্রাপ্যতা), data redundancy (ডেটার অনুলিপি), এবং load balancing নিশ্চিত করতে পারেন।


MySQL Replication কী?

MySQL Replication হল একটি ডেটাবেস প্রযুক্তি, যেখানে একটি Master Server থেকে ডেটা কপি করা হয় এবং একটি বা একাধিক Slave Servers এ সিঙ্ক্রোনাইজড ভাবে আপডেট হয়। এটি একটি Asynchronous বা Synchronous প্রক্রিয়া হতে পারে, তবে সাধারণত MySQL Replication Asynchronous হয়, যার মানে হলো Slave Server ডেটা আপডেটের জন্য Master Server এর সাথে সঠিকভাবে সিঙ্ক্রোনাইজ হতে কিছু বিলম্ব থাকতে পারে।

Replication Architecture

  1. Master Server: মূল সার্ভার যা ডেটা পরিবর্তন করে (যেমন ইনসার্ট, আপডেট, ডিলিট)।
  2. Slave Server(s): একটি বা একাধিক সার্ভার যা Master থেকে ডেটা কপি করে এবং সেগুলোর সাথে সিঙ্ক্রোনাইজ থাকে।

MySQL Replication প্রয়োজন কেন?

MySQL Replication এর বেশ কিছু সুবিধা এবং প্রয়োজনীয়তা রয়েছে, যা বিভিন্ন ক্ষেত্রে খুবই উপকারী হতে পারে। নীচে কিছু গুরুত্বপূর্ণ কারণে MySQL Replication প্রয়োজনীয়:

1. Data Redundancy (ডেটা অনুলিপি)

Replication ডেটার অনুলিপি তৈরি করে, যা একটি ব্যাকআপ সিস্টেম হিসেবে কাজ করতে পারে। এটি ডেটার নিরাপত্তা নিশ্চিত করে, কারণ একাধিক সার্ভারে ডেটা স্টোর করা থাকে।

  • উদাহরণ: যদি Master Server এ কোন সমস্যা দেখা দেয়, তবে Slave Server থেকে ডেটা পুনরুদ্ধার করা যেতে পারে।

2. High Availability (উচ্চ প্রাপ্যতা)

Replication নিশ্চিত করে যে সার্ভারে ডেটা থাকা সত্ত্বেও, সার্ভিস ডাউন না হয়। একাধিক Slave Server থাকতে পারে, তাই যদি একটি Slave Server ডাউন হয়ে যায়, অন্য একটি Slave Server থেকে সেবা চালু রাখা যেতে পারে।

  • উদাহরণ: যদি Master Server বিপর্যস্ত হয়, তাহলে Slave Server কে নতুন Master হিসেবে প্রচলিত করা যায়।

3. Load Balancing (লোড ব্যালান্সিং)

Replication এর মাধ্যমে ডেটা অনেক সার্ভারে ভাগ করে দেয়া যায়, যার ফলে read-heavy অ্যাপ্লিকেশনগুলিতে লোড ব্যালান্স করা সম্ভব হয়। Master Server শুধুমাত্র লিখিত (write) অপারেশন প্রক্রিয়া করে, এবং Slave Server গুলো পড়া (read) অপারেশনে সহায়তা করে।

  • উদাহরণ: ইউজাররা Slave Server থেকে ডেটা পড়তে পারে, এবং Master Server শুধুমাত্র ডেটা আপডেট বা নতুন ইনসার্ট করে।

4. Disaster Recovery (দুর্যোগ পুনরুদ্ধার)

Replication ডেটাবেসের জন্য একটি দুর্যোগ পুনরুদ্ধার কৌশল হিসেবে কাজ করতে পারে। যখন ডেটাবেসের মূল সার্ভার (Master) সমস্যায় পড়ে, তখন Slave Server থেকে পুনরুদ্ধার করা সম্ভব।

  • উদাহরণ: Master Server হারানো হলে, Slave Server এর ডেটা ব্যবহার করে পুনরায় ডেটাবেস চালু করা যায়।

5. Data Distribution (ডেটা বিতরণ)

Replication ডেটা বিভিন্ন জিওগ্রাফিকাল অবস্থানে ভাগ করতে সাহায্য করতে পারে। এটি ব্যবহারকারীদের কাছে ডেটার সেবা আরও দ্রুত পৌঁছে দেয়।

  • উদাহরণ: বিভিন্ন দেশে থাকা অফিসের মধ্যে ডেটা বিতরণ করা, যাতে প্রত্যেক অফিস নিজস্ব Slave Server থেকে ডেটা পড়তে পারে।

6. Offline Processing (অফলাইন প্রোসেসিং)

Replication দিয়ে আপনি একটি Slave Server ব্যবহার করে ব্যাকগ্রাউন্ডে বা অফলাইন প্রোসেসিং করতে পারেন। আপনি নির্দিষ্ট কাজগুলি, যেমন রিপোর্ট জেনারেশন বা ডেটা বিশ্লেষণ, Slave Server এ করতে পারেন, যা Master Server এর উপর চাপ কমায়।


MySQL Replication Types

MySQL Replication এর প্রধান তিনটি ধরন রয়েছে:

  1. Asynchronous Replication (অ্যাসিঙ্ক্রোনাস রেপ্লিকেশন):
    • এটি সবচেয়ে সাধারণ এবং ডিফল্ট replication পদ্ধতি। এখানে Master Server একে অপরকে সিঙ্ক্রোনাইজ না করে ডেটা পরিবর্তন করে, এবং Slave Server এ তা পরবর্তীতে প্রতিফলিত হয়।
    • এতে কিছু বিলম্ব হতে পারে, কিন্তু এটি সাধারণত অধিক লোড সহনীয়।
  2. Synchronous Replication (সিঙ্ক্রোনাস রেপ্লিকেশন):
    • এতে, Master এবং Slave সিঙ্ক্রোনাইজভাবে কাজ করে এবং Slave Server এর পরিবর্তনগুলি কমপ্লিট হওয়ার আগে Master সিস্টেম কনফার্ম করে না।
    • এই পদ্ধতিতে ডেটা একসাথে (real-time) প্রতিফলিত হয়, তবে এর পারফরমেন্স সমস্যা হতে পারে।
  3. Semi-Synchronous Replication (সেমি-সিঙ্ক্রোনাস রেপ্লিকেশন):
    • এই পদ্ধতিতে Master Server ডেটা জমা হওয়ার পর Slave Server কমপ্লিট হলে, Master সার্ভার নিশ্চিত করে যে ডেটা সফলভাবে প্রতিফলিত হয়েছে।
    • এটি Asynchronous এবং Synchronous এর মধ্যে একটি সংমিশ্রণ।

Replication Configuration (রেপ্লিকেশন কনফিগারেশন)

  1. Master Server Configuration:
    • server-id: প্রতিটি সার্ভারের একটি ইউনিক আইডি থাকতে হবে।
    • log-bin: Master Server এ বাইনারি লগিং সক্ষম করতে হবে।
    • binlog-do-db: রেপ্লিকেশন শুধুমাত্র নির্দিষ্ট ডেটাবেসের জন্য হবে।
[mysqld]
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db = my_database
  1. Slave Server Configuration:
    • server-id: Slave Server এর জন্য একটি ইউনিক আইডি থাকতে হবে।
    • relay-log: Slave Server এ রিলে লগিং সক্ষম করতে হবে।
    • replicate-do-db: রেপ্লিকেশন শুধুমাত্র নির্দিষ্ট ডেটাবেসের জন্য হবে।
[mysqld]
server-id = 2
relay-log = /var/log/mysql/mysql-relay.log
replicate-do-db = my_database
  1. Start Replication:
    • Master ServerSHOW MASTER STATUS; কমান্ড ব্যবহার করে বাইনারি লগ ফাইল এবং পজিশন জানুন।
    • Slave Server এ রেপ্লিকেশন শুরু করার জন্য CHANGE MASTER TO কমান্ড ব্যবহার করুন।
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='replication_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=  107;
START SLAVE;

Replication Monitoring and Troubleshooting

Replication সেটআপ করার পর এটি মনিটর করা এবং সঠিকভাবে কাজ করছে কিনা তা পরীক্ষা করা গুরুত্বপূর্ণ।

  • Check Slave Status:

    SHOW SLAVE STATUS\G;
    

    এটি Slave Server এর বর্তমান স্ট্যাটাস দেখাবে এবং নিশ্চিত করবে যে রেপ্লিকেশন চলমান রয়েছে।

  • Troubleshooting:
    • যদি Slave সার্ভার Not Syncing থাকে, তবে এর Last_Error ফিল্ডে এর কারণ দেখা যাবে।
    • আপনি রেপ্লিকেশন পুনরায় শুরু করতে পারেন:

      STOP SLAVE;
      START SLAVE;
      

সারাংশ

MySQL Replication হলো একটি অত্যন্ত কার্যকরী পদ্ধতি যা ডেটা redundancy, high availability, load balancing, এবং disaster recovery নিশ্চিত করে। এটি একটি Master-Slave আর্কিটেকচার তৈরি করে, যেখানে Master Server থেকে ডেটা একটি বা একাধিক Slave Server-এ কপি করা হয়। Replication সিস্টেম ডেটাবেসের উচ্চ প্রাপ্যতা, কার্যক্ষমতা, এবং সার্ভিসের নিরবচ্ছিন্নতা নিশ্চিত করতে গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...