MariaDB Cluster হল একটি বিশেষ প্রযুক্তি যা হাই-অ্যাভেইলেবিলিটি (High Availability, HA) নিশ্চিত করতে ব্যবহৃত হয়। এটি MariaDB ডেটাবেসের জন্য একটি সিঙ্ক্রোনাস মাল্টি-মাস্টার রিপ্লিকেশন (Synchronous Multi-Master Replication) কনফিগারেশন প্রদান করে, যার মাধ্যমে একটি ডিস্ট্রিবিউটেড ডেটাবেস ক্লাস্টার তৈরি হয়। MariaDB Cluster মূলত Galera Cluster এর উপর ভিত্তি করে কাজ করে এবং এটি high availability এবং fault tolerance অর্জন করতে সাহায্য করে।
এই প্রযুক্তির মাধ্যমে, আপনি একাধিক সার্ভারে ডেটাবেসের কপি রাখতে পারেন এবং একাধিক সার্ভারকে একসাথে কাজ করতে সক্ষম করেন। যদি একটি সার্ভার ব্যর্থ হয়, অন্য সার্ভারগুলি সঠিকভাবে কাজ চালিয়ে যেতে পারে, ফলে আপনার ডেটাবেসের সেবা অবিচ্ছিন্ন থাকে।
MariaDB Cluster কী?
MariaDB Cluster একটি প্রকৃত সিঙ্ক্রোনাস মাল্টি-মাস্টার কনফিগারেশন যা MariaDB সার্ভারের ক্লাস্টার তৈরি করতে ব্যবহৃত হয়। এতে একাধিক সার্ভার একই সময়ে master হিসেবে কাজ করে এবং ডেটা একে অপরের সাথে সিঙ্ক্রোনাইজ করা হয়। এই ক্লাস্টারে যদি কোনো একটি সার্ভার ব্যর্থ হয়, অন্য সার্ভারগুলি ডেটাবেসের ডেটা এবং ফিচার প্রদান করতে সক্ষম থাকে, যা high availability এবং fault tolerance নিশ্চিত করে।
MariaDB Cluster এর প্রধান উপাদান:
- Galera Cluster: এটি MariaDB Cluster এর সাথে সংহত একটি সিঙ্ক্রোনাস মাল্টি-মাস্টার রিপ্লিকেশন সিস্টেম।
- Replication: MariaDB Cluster রিপ্লিকেশন কৌশল ব্যবহার করে, যেখানে সমস্ত নোড একই ডেটা শেয়ার করে।
MariaDB Cluster কনফিগারেশন
MariaDB Cluster তৈরি করতে প্রথমেই আপনাকে Galera Cluster ইনস্টল করতে হবে। এই গাইডে আমরা একটি সাধারণ তিনটি সার্ভারের ক্লাস্টার কনফিগার করব।
১. MariaDB Cluster: প্রয়োজনীয় কনফিগারেশন
প্রথমত, my.cnf ফাইলটি সঠিকভাবে কনফিগার করা উচিত। নিচে একটি কনফিগারেশন ফাইলের উদাহরণ দেওয়া হলো:
[mysqld]
# Galera Cluster configurations
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="my_cluster"
wsrep_cluster_address="gcomm://node1_ip,node2_ip,node3_ip"
wsrep_node_address="node1_ip" # প্রতি নোডের জন্য আলাদা IP পাথ
wsrep_node_name="node1"
wsrep_sst_method=rsync
# MariaDB configurations
bind-address = 0.0.0.0
max_connections = 1000
এই কনফিগারেশনটি তিনটি ভিন্ন সার্ভারের জন্য প্রযোজ্য। প্রতিটি সার্ভারের জন্য আলাদা wsrep_node_address এবং wsrep_node_name প্রদান করতে হবে, যা তাদের আলাদা করবে।
wsrep_on=ON: Galera ক্লাস্টার চালু করে।wsrep_provider: Galera লাইব্রেরি ফাইলের পাথ।wsrep_cluster_name: ক্লাস্টারের নাম।wsrep_cluster_address: ক্লাস্টারের অন্য সার্ভারগুলির আইপি ঠিকানা।
২. Galera Cluster এর নোড প্রস্তুত করা
এখন প্রতিটি সার্ভারের জন্য ক্লাস্টার কনফিগারেশন সম্পন্ন করার পর, সার্ভারগুলো রিস্টার্ট করতে হবে।
sudo systemctl restart mariadb
প্রথম সার্ভারে wsrep_cluster_address=gcomm:// ব্যবহার করে কনফিগারেশন করুন এবং ক্লাস্টার শুরু করুন:
sudo systemctl start mariadb
পরবর্তী সার্ভারগুলোতে, সেগুলোর wsrep_cluster_address=gcomm://node1_ip দিয়ে ক্লাস্টারে যোগ করতে হবে।
এটি সার্ভারগুলোকে গ্যালেরা ক্লাস্টারে সংযুক্ত করবে এবং সব সার্ভার একে অপরের সাথে সিঙ্ক্রোনাইজ হবে।
৩. MariaDB Cluster এর স্ট্যাটাস চেক করা
ক্লাস্টার সফলভাবে চলতে থাকলে, আপনি যেকোনো সার্ভারে গিয়ে স্ট্যাটাস চেক করতে পারেন:
SHOW STATUS LIKE 'wsrep%';
এটি আপনার ক্লাস্টারের বর্তমান অবস্থা এবং প্রতিটি সার্ভারের যোগদান প্রক্রিয়া চেক করতে সাহায্য করবে।
MariaDB Cluster এর সুবিধাসমূহ
- High Availability: একাধিক সার্ভার কাজ চালিয়ে যেতে পারে, যদি একটি সার্ভার ব্যর্থ হয়।
- Fault Tolerance: কোন একটি সার্ভার ব্যর্থ হলেও ক্লাস্টার কাজ চালিয়ে যেতে সক্ষম হয়।
- Load Balancing: ডেটাবেসের লোড বিভিন্ন সার্ভারে বিভক্ত করা যায়, ফলে পরবর্তী ট্রানজেকশন বা ডেটা রিড/রাইট পারফরম্যান্স বাড়ে।
- Synchronous Replication: ক্লাস্টারের প্রতিটি নোডের মধ্যে সিঙ্ক্রোনাস রিপ্লিকেশন প্রক্রিয়া নিশ্চিত করে।
- Automatic Recovery: এক সার্ভার বন্ধ বা ব্যর্থ হয়ে গেলে, অন্য সার্ভারগুলি স্বয়ংক্রিয়ভাবে ডেটার পুনরুদ্ধার বা পুনরায় সিঙ্ক্রোনাইজ করা শুরু করে।
MariaDB এর হাই-অ্যাভেইলেবিলিটি (HA) কৌশল
MariaDB ক্লাস্টার ছাড়াও, MariaDB ডেটাবেসের জন্য আরও কিছু High Availability কৌশল রয়েছে:
১. Master-Slave Replication with Automatic Failover
এটি একাধিক Master-Slave কনফিগারেশন যেখানে replication এর মাধ্যমে মূল (master) সার্ভার থেকে ডেটা গন্তব্য (slave) সার্ভারে পাঠানো হয়। একটি failover mechanism চালু থাকলে, যখন master সার্ভার ব্যর্থ হয়, তখন slave সার্ভারটি স্বয়ংক্রিয়ভাবে master হিসাবে পরিবর্তিত হয়। এটি MHA (Master High Availability) অথবা Orchestrator এর মাধ্যমে অর্জন করা যেতে পারে।
২. ProxySQL for Load Balancing
ProxySQL হল একটি এডভান্সড লোড ব্যালান্সার যা MariaDB ক্লাস্টারের বিভিন্ন সার্ভারের মধ্যে লোড শিফট করতে ব্যবহৃত হয়। এটি ডেটাবেসের মধ্যে রিড/রাইট লোড ব্যালান্সিং করে এবং রাইট ও রিডের জন্য বিভিন্ন সার্ভার ব্যবহার করতে পারে।
৩. Replication with HAProxy
HAProxy একটি জনপ্রিয় লোড ব্যালান্সার যা MariaDB এর সাথে ব্যবহার করা যেতে পারে, বিশেষ করে Master-Slave Replication কনফিগারেশনের ক্ষেত্রে। HAProxy ব্যবহার করে আপনি সঠিক সার্ভারটি নির্ধারণ করতে পারেন যে কোথায় রিড এবং রাইট অপারেশন হবে।
৪. Keepalived for Virtual IP Management
Keepalived একটি ভিএলএন (Virtual LAN) সার্ভিস যা MariaDB সার্ভারের virtual IP তৈরি করতে ব্যবহৃত হয়, যেখানে সার্ভারটি স্বয়ংক্রিয়ভাবে একে অপরের মধ্যে পরিবর্তিত হতে পারে।
সারাংশ
MariaDB ক্লাস্টার এবং হাই-অ্যাভেইলেবিলিটি সিস্টেম ডেটাবেসের অপারেশনাল অবিচ্ছিন্নতা এবং পরিপূর্ণতা নিশ্চিত করতে অত্যন্ত গুরুত্বপূর্ণ। MariaDB Cluster (Galera Cluster এর মাধ্যমে) একটি Synchronous Multi-Master Replication সিস্টেম সরবরাহ করে, যেখানে একাধিক সার্ভার ডেটা শেয়ার এবং সিঙ্ক্রোনাইজ করে। এই কৌশলটি ডেটাবেসের লোড ব্যালান্সিং, ফাল্ট টলারেন্স এবং উচ্চ প্রাপ্যতা নিশ্চিত করতে সাহায্য করে। এছাড়া, Master-Slave Replication, HAProxy, ProxySQL এবং Keepalived এর মতো কৌশলগুলি High Availability নিশ্চিত করতে ব্যবহৃত হয়।
MariaDB Galera Cluster হল একটি উচ্চ-প্রাপ্যতা এবং স্কেলেবল ডেটাবেস ক্লাস্টারিং প্রযুক্তি, যা MariaDB ডেটাবেসের জন্য তৈরি হয়েছে। এটি সিঙ্ক্রোনাস রিপ্লিকেশন প্রযুক্তি ব্যবহার করে, যার মাধ্যমে একাধিক নোডে ডেটাবেসের কপি সিঙ্ক্রোনাইজড থাকে। Galera Cluster মূলত একটি multi-master replication সিস্টেম, যার ফলে একাধিক সার্ভার (নোড) একসাথে ডেটা গ্রহণ, পরিবর্তন এবং সিঙ্ক্রোনাইজ করার জন্য কাজ করে।
MariaDB Galera Cluster এর বৈশিষ্ট্য
- Multi-Master Replication: Galera Cluster একটি multi-master রিপ্লিকেশন সিস্টেম, যার মানে হল যে একাধিক সার্ভার (নোড) একে অপরের মাস্টার হিসাবে কাজ করে। প্রতিটি নোড ডেটা রাইট (INSERT, UPDATE, DELETE) করতে পারে এবং অন্য নোডে সিঙ্ক্রোনাইজ হয়ে থাকে।
- সিঙ্ক্রোনাস রিপ্লিকেশন: Galera Cluster তে, রাইট অপারেশনগুলিকে সিঙ্ক্রোনাসভাবে সম্পাদন করা হয়। অর্থাৎ, একটি নোডে ডেটা ইনসার্ট, আপডেট বা ডিলিট করার পর তা অন্য সব নোডে একই সময় সিঙ্ক্রোনাইজ হয়ে যায়। এটি নিশ্চিত করে যে সমস্ত নোডে সর্বশেষ ডেটা রয়েছে।
- স্বয়ংক্রিয় ফেইলওভার (Automatic Failover): যদি কোনো নোড ডাউন হয়ে যায়, তবে Galera Cluster স্বয়ংক্রিয়ভাবে অন্য নোডকে প্রধান নোড হিসেবে ব্যবহার করে। এটি ক্লাস্টারের উচ্চ প্রাপ্যতা (High Availability) নিশ্চিত করে এবং সার্ভার ডাউনটাইম কমায়।
- স্কেলিং: Galera Cluster সহজে স্কেল করা যায়। নতুন নোড যোগ করলে, তা স্বয়ংক্রিয়ভাবে ক্লাস্টারে যুক্ত হয়ে যায় এবং অন্যান্য নোডের সঙ্গে ডেটা সিঙ্ক্রোনাইজ করে। এটি ডেটাবেস সিস্টেমের জন্য স্কেলেবিলিটি এবং পারফরম্যান্স বৃদ্ধি করতে সহায়তা করে।
- শান্তিপূর্ণ এবং দ্রুত ডেটা পুনরুদ্ধার: Galera Cluster ডেটা পুনরুদ্ধারের জন্য দ্রুত এবং শান্তিপূর্ণ একটি প্রক্রিয়া প্রস্তাব করে। ডেটার কনসিস্টেন্সি নিশ্চিত করতে এটি প্রয়োজনীয় যেকোনো ডেটা পুনরুদ্ধারের পদক্ষেপ স্বয়ংক্রিয়ভাবে নেয়।
MariaDB Galera Cluster কেন ব্যবহার করা হয়?
- উচ্চ প্রাপ্যতা (High Availability): Galera Cluster এর প্রধান সুবিধা হল এর উচ্চ প্রাপ্যতা। একাধিক নোডে ডেটা সিঙ্ক্রোনাইজ থাকার কারণে যদি একটি নোড ডাউনও হয়ে যায়, অন্য নোডগুলোর মাধ্যমে সিস্টেম চলতে থাকে। এটি ডেটাবেসের ডাউনটাইম কমাতে সাহায্য করে এবং সর্বদা ডেটা অ্যাক্সেসযোগ্য রাখে।
- লোড ব্যালান্সিং (Load Balancing): যেহেতু Galera Cluster একটি multi-master সিস্টেম, তাই আপনি একাধিক সার্ভারে লোড শেয়ার করতে পারেন। রিড এবং রাইট অপারেশন একই সময়ে একাধিক নোডে করা যেতে পারে, যার ফলে ডেটাবেসের পারফরম্যান্স ও স্কেলিবিলিটি বৃদ্ধি পায়।
- ডেটার কনসিস্টেন্সি (Data Consistency): Galera Cluster তে সিঙ্ক্রোনাস রিপ্লিকেশন ব্যবহৃত হওয়ার কারণে, নিশ্চিত হয় যে সমস্ত নোডে ডেটা কনসিস্টেন্ট থাকে। এক নোডে কোনো ডেটা পরিবর্তন হলে, তা দ্রুত অন্যান্য নোডে সিঙ্ক্রোনাইজ হয়ে যায়, যাতে ডেটার কোনো অস্বাভাবিকতা বা ভুল না ঘটে।
- শক্তিশালী ফেইলওভার (Strong Failover): যদি কোনো নোড আচমকাই ডাউন হয়ে যায়, তবে Galera Cluster স্বয়ংক্রিয়ভাবে বাকি নোডগুলোর মধ্যে কার্যক্রম পরিচালনা করতে থাকে। এটি সার্ভারের কার্যক্রম অব্যাহত রাখতে এবং ব্যর্থতা থেকে দ্রুত পুনরুদ্ধারের জন্য গুরুত্বপূর্ণ।
- স্কেলেবিলিটি: যখন ডেটাবেসের লোড বাড়ে, তখন আপনি আরও নোড যুক্ত করতে পারেন, যাতে সিস্টেমের পারফরম্যান্স উন্নত হয়। Galera Cluster এর মাধ্যমে আপনাকে সার্ভারের সংখ্যাও বাড়াতে সাহায্য করে, যা সহজে স্কেল করা যায়।
- সহজ কনফিগারেশন এবং ব্যবস্থাপনা: Galera Cluster এর কনফিগারেশন সাধারণত খুবই সরল। এটি মারিয়া ডিবির সঙ্গে অন্তর্ভুক্ত থাকে এবং কনফিগারেশন ফাইলগুলির মধ্যে সামান্য পরিবর্তন করে সহজেই গ্যালেরা ক্লাস্টার সেটআপ করা যায়।
MariaDB Galera Cluster কনফিগারেশন
MariaDB Galera Cluster কনফিগারেশন কিছু নির্দিষ্ট সেটিংসের মাধ্যমে সম্পন্ন করা হয়। নিচে একটি সাধারন কনফিগারেশন উদাহরণ দেওয়া হলো:
প্রথম নোড কনফিগারেশন:
/etc/mysql/my.cnfফাইলে নিম্নলিখিত কনফিগারেশন যোগ করুন:[mysqld] server-id = 1 wsrep_on = ON wsrep_provider = /usr/lib/galera/libgalera_smm.so wsrep_cluster_address = "gcomm://node1_ip,node2_ip,node3_ip" wsrep_cluster_name = "galera_cluster" wsrep_node_address = "node1_ip" wsrep_node_name = "node1"এখানে:
- server-id: প্রতিটি নোডের একটি আলাদা আইডি থাকতে হবে।
- wsrep_on: Galera ক্লাস্টার সক্রিয় করা হয়।
- wsrep_provider: Galera লাইব্রেরির অবস্থান।
- wsrep_cluster_address: গ্যালেরা ক্লাস্টারের অন্যান্য নোডগুলির আইপি ঠিকানা।
- wsrep_cluster_name: ক্লাস্টারের নাম।
- wsrep_node_address: নোডের আইপি ঠিকানা।
- wsrep_node_name: নোডের নাম।
অন্যান্য নোড কনফিগারেশন:
অন্যান্য নোডে একই কনফিগারেশন যুক্ত করুন, তবে wsrep_node_name এবং wsrep_node_address আলাদা রাখতে হবে।
Galera Cluster সেবা শুরু:
ক্লাস্টার কনফিগারেশনের পর, প্রতিটি নোডে MariaDB সার্ভিস রিস্টার্ট করুন:
sudo systemctl restart mariadbপ্রথম নোডের পরে, অন্যান্য নোডগুলো ক্লাস্টারে যুক্ত হবে এবং ডেটা সিঙ্ক্রোনাইজেশন শুরু হবে।
সারাংশ
MariaDB Galera Cluster হল একটি শক্তিশালী টুল, যা ডেটাবেসের উচ্চ প্রাপ্যতা, লোড ব্যালান্সিং, এবং ডেটার কনসিস্টেন্সি নিশ্চিত করে। এটি multi-master replication এবং সিঙ্ক্রোনাস রিপ্লিকেশন প্রযুক্তি ব্যবহার করে, যার মাধ্যমে একাধিক নোডে একই ডেটাবেস সিঙ্ক্রোনাইজড থাকে। Galera Cluster এর মাধ্যমে আপনি আপনার ডেটাবেস সিস্টেমের পারফরম্যান্স, স্কেলেবিলিটি এবং নির্ভরযোগ্যতা উন্নত করতে পারেন। এটি সহজে কনফিগার করা যায় এবং সার্ভারের ডাউনটাইম কমাতে সাহায্য করে, বিশেষ করে যখন আপনার সিস্টেমের জন্য উচ্চ প্রাপ্যতা প্রয়োজন।
Galera Cluster হল একটি মাল্টি-নোড ক্লাস্টারিং প্রযুক্তি যা MariaDB বা MySQL এর জন্য ব্যবহার করা হয়। এটি ডেটাবেস ক্লাস্টারিংয়ের জন্য ** synchronous replication** সমর্থন করে, যার মানে হল যে সমস্ত নোডের মধ্যে ডেটা পরিবর্তন সিঙ্ক্রোনাইজ করা হয়। Galera Cluster এর মাধ্যমে ডেটাবেসের উচ্চ স্থায়ীত্ব (high availability) এবং স্কেলেবিলিটি নিশ্চিত করা সম্ভব।
Galera Cluster ইনস্টল ও কনফিগারেশন খুবই গুরুত্বপূর্ণ, কারণ এটি ডেটাবেসের পারফরম্যান্স এবং স্থিতিশীলতা প্রভাবিত করতে পারে। নিচে Galera Cluster ইনস্টল এবং কনফিগার করার বিস্তারিত প্রক্রিয়া দেওয়া হলো।
১. Galera Cluster ইনস্টলেশন
Galera Cluster ইনস্টল করতে আপনাকে একাধিক সার্ভার (নোড) সেটআপ করতে হবে। সাধারণত, কমপক্ষে তিনটি নোডের ক্লাস্টার তৈরি করা হয়, যাতে কোনো একটি নোড ডাউন হলে অন্য নোডগুলোর মাধ্যমে সার্ভিস চালু থাকে।
১.১. প্রারম্ভিক প্রস্তুতি
প্রথমে নিশ্চিত করুন যে আপনার সার্ভারগুলিতে MariaDB ইনস্টল করা আছে এবং সকল সার্ভার একে অপরের সাথে যোগাযোগ করতে পারবে।
আপনি যদি Linux (উদাহরণস্বরূপ, Ubuntu) ব্যবহার করেন, তবে MariaDB ও Galera ইনস্টল করার জন্য নিচের পদক্ষেপ অনুসরণ করুন:
১.২. MariaDB এবং Galera ইনস্টল করা
MariaDB এবং Galera প্যাকেজ যোগ করুন:
MariaDB এর জন্য অফিসিয়াল রিপোজিটরি ব্যবহার করুন।
sudo apt-get install software-properties-common sudo add-apt-repository ppa:mariadb/mariadb-10.5 sudo apt updateGalera ইনস্টল করুন:
MariaDB 10.1 বা তার পরবর্তী সংস্করণের সাথে Galera Cluster ইনস্টল করা যাবে। Galera প্যাকেজটি MariaDB-র সাথে যুক্ত থাকে, কিন্তু আপনাকে এক্সপ্লিসিটভাবে Galera ইনস্টল করতে হবে।
sudo apt-get install mariadb-server galera-4 mariadb-client- সমস্ত নোডে একই MariaDB সংস্করণ ইনস্টল করা উচিত, তাই নিশ্চিত করুন যে আপনার ক্লাস্টারে সকল সার্ভারে একই সংস্করণ আছে।
২. Galera Cluster কনফিগারেশন
২.১. MariaDB কনফিগ ফাইল কনফিগারেশন
প্রত্যেক নোডের /etc/mysql/my.cnf বা /etc/my.cnf ফাইল খুলে নিচের কনফিগারেশনগুলো যোগ করুন। এটি সমস্ত নোডে কনফিগার করতে হবে।
[mysqld]
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://IP_of_Node1,IP_of_Node2,IP_of_Node3"
wsrep_cluster_name="my_galera_cluster"
wsrep_node_address="IP_of_this_node"
wsrep_node_name="node1" # প্রতিটি নোডের জন্য আলাদা নাম দিন
wsrep_sst_method=rsync
wsrep_sst_auth="sstuser:password" # SST (State Snapshot Transfer) এর জন্য ব্যবহারকারী এবং পাসওয়ার্ড
binlog_format=row
innodb_flush_log_at_trx_commit=2
innodb_doublewrite=1
innodb_autoinc_lock_mode=2
কনফিগারেশন বর্ণনা:
wsrep_on=ON: Galera replication সক্রিয় করার জন্য।wsrep_provider: Galera-র প্রোভাইডার লাইব্রেরির পাথ।wsrep_cluster_address: ক্লাস্টারের সমস্ত নোডের IP ঠিকানা।wsrep_cluster_name: ক্লাস্টারের নাম।wsrep_node_address: নির্দিষ্ট নোডের IP ঠিকানা।wsrep_node_name: নোডের নাম।wsrep_sst_method: State Snapshot Transfer (SST) পদ্ধতি, এখানেrsyncব্যবহার করা হয়েছে।wsrep_sst_auth: SST-র জন্য প্রয়োজনীয় ব্যবহারকারী এবং পাসওয়ার্ড।binlog_format=row: Row-based binary logging।innodb_flush_log_at_trx_commit=2: ইননোডব লগ ফ্লাশিং কনফিগারেশন।
২.২. SST ব্যবহারকারী তৈরি করা
SST (State Snapshot Transfer) হল ক্লাস্টারের মধ্যে ডেটা সিঙ্ক্রোনাইজেশন প্রক্রিয়া। SST ব্যবহারকারী তৈরি করতে, আপনি Master নোডে নিচের কুয়েরি চালাতে পারেন:
CREATE USER 'sstuser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'sstuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
এটি SST প্রক্রিয়ার জন্য একটি ব্যবহারকারী তৈরি করবে এবং অন্যান্য নোডগুলোকে সিঙ্ক্রোনাইজেশনের জন্য অনুমতি দেবে।
৩. Galera Cluster শুরু করা
৩.১. প্রথম নোড শুরু করা (Bootstrap)
প্রথম নোড (Master) শুরু করার জন্য, আপনি --wsrep-new-cluster ফ্ল্যাগ ব্যবহার করবেন, যা Galera ক্লাস্টারকে বুটস্ট্র্যাপ করে শুরু করবে।
sudo systemctl start mariadb --wsrep-new-cluster
এটি প্রথম নোডের জন্য Galera ক্লাস্টার শুরু করবে। এখন থেকে অন্যান্য নোডগুলি ক্লাস্টারের অংশ হিসেবে যোগ করতে পারবেন।
৩.২. পরবর্তী নোডগুলো যোগ করা
অন্য নোডগুলোর জন্য systemctl start mariadb কমান্ড ব্যবহার করতে হবে, কোনো অতিরিক্ত ফ্ল্যাগ ছাড়াই। এটি স্বয়ংক্রিয়ভাবে প্রথম নোডে সংযুক্ত হবে এবং ক্লাস্টার সমন্বয়ের জন্য গালেরা কনফিগারেশন ব্যবহার করবে।
sudo systemctl start mariadb
৪. Galera Cluster-এর স্ট্যাটাস চেক করা
ক্লাস্টার সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে, আপনি SHOW STATUS কুয়েরি ব্যবহার করতে পারেন।
SHOW STATUS LIKE 'wsrep%';
এটি গালেরা সম্পর্কিত সমস্ত স্ট্যাটাস তথ্য প্রদর্শন করবে, যেমন:
wsrep_cluster_size: ক্লাস্টারে মোট নোডের সংখ্যা।wsrep_cluster_status: ক্লাস্টারের স্ট্যাটাস (Primary, Non-primary, etc.)wsrep_ready: গালেরা ক্লাস্টার প্রস্তুত কিনা।
৫. Galera Cluster মনিটরিং এবং ট্রাবলশ্যুটিং
- Replication Lag: ক্লাস্টার ব্যবস্থাপনায় replication lag হতে পারে, বিশেষ করে বড় ট্রানজেকশন বা বড় ডেটা পরিবর্তনের সময়। আপনি
SHOW SLAVE STATUSএবংSHOW STATUS LIKE 'wsrep%'কুয়েরি ব্যবহার করে ল্যাগ চেক করতে পারেন। - Cluster Partitioning: ক্লাস্টার পার্টিশনিং হতে পারে, যেখানে নোডগুলোর মধ্যে যোগাযোগ বিঘ্নিত হয়। এটি সাধারণত নেটওয়ার্ক সমস্যা অথবা সার্ভারের ভারি লোডের কারণে হতে পারে।
- Node Recovery: যদি কোনো নোড ক্লাস্টার থেকে বিচ্ছিন্ন হয়ে যায়, তবে আপনি
wsrep_cluster_sizeএবংwsrep_node_incoming_addressকুয়েরি ব্যবহার করে নোড রিকভারি করতে পারেন।
সারাংশ
MariaDB Galera Cluster একটি শক্তিশালী সিঙ্ক্রোনাস রিপ্লিকেশন সলিউশন, যা উচ্চ স্থায়ীত্ব, স্কেলেবিলিটি এবং ডেটাবেস রেডান্ডেন্সি নিশ্চিত করে। এটি বিশেষভাবে উপকারী যখন আপনি উচ্চ লোড এবং ডাউনটাইম-মুক্ত সার্ভিস চান। Galera Cluster ইনস্টল এবং কনফিগার করার জন্য সঠিক নোড কনফিগারেশন, SST ব্যবহারকারী তৈরি এবং নেটওয়ার্ক সেটআপ অত্যন্ত গুরুত্বপূর্ণ। wsrep এবং systemctl এর মাধ্যমে কনফিগারেশন এবং মনিটরিং করা যেতে পারে।
Load Balancing এবং Failover Management হলো উচ্চ উপলব্ধতা (High Availability) এবং দক্ষ ডেটাবেস ব্যবস্থাপনার জন্য গুরুত্বপূর্ণ কৌশল। MariaDB-তে এই দুটি কৌশল ব্যবহার করা হয় যাতে সার্ভারের লোড সমানভাবে বিতরণ করা যায় এবং সার্ভারের কোনো সমস্যা হলে অন্য সার্ভারটি স্বয়ংক্রিয়ভাবে চালু হয়, ফলে ডাউনটাইম কমে যায় এবং সিস্টেমের স্থিতিশীলতা বৃদ্ধি পায়।
1. Load Balancing (লোড ব্যালান্সিং)
লোড ব্যালান্সিং এর মাধ্যমে MariaDB ক্লাস্টারে একাধিক সার্ভারের মধ্যে ট্রাফিক বা কুয়েরি সমানভাবে বিতরণ করা হয়। এটি ডেটাবেসের পারফরম্যান্স বাড়াতে সহায়ক, কারণ একক সার্ভারে অতিরিক্ত লোড না দিয়ে এটি সার্ভারের মধ্যে ব্যালান্স করতে সাহায্য করে।
লোড ব্যালান্সিংয়ের জন্য সাধারণ কৌশল
- ডাটাবেস রেপ্লিকেশন: ডেটাবেস রেপ্লিকেশন ব্যবহার করে একাধিক রিড (read) সার্ভার তৈরি করা হয়, যেখানে একাধিক সার্ভার শুধুমাত্র পড়া (read) কুয়েরি পরিচালনা করবে। রাইট (write) কুয়েরি শুধুমাত্র প্রধান (Master) সার্ভারে যাবে। এই কৌশলটি লোডের ভারসাম্য বজায় রাখতে সহায়ক।
ProxySQL ব্যবহার করা: ProxySQL একটি MariaDB এবং MySQL ক্লাস্টারের জন্য উন্নত লোড ব্যালান্সিং এবং রুটিং সিস্টেম। এটি ক্লায়েন্ট কুয়েরিগুলোকে রাইট এবং রিড সার্ভারে সঠিকভাবে বিতরণ করতে সাহায্য করে।
- ProxySQL ব্যবহার করে, আপনি রাইট এবং রিড সার্ভারগুলোর জন্য আলাদা কনফিগারেশন করতে পারবেন, যার মাধ্যমে রাইট কুয়েরি শুধুমাত্র মাস্টার সার্ভারে যাবে এবং রিড কুয়েরি রেপ্লিকা সার্ভারে যাবে।
উদাহরণ
ProxySQL কনফিগারেশন করতে নিচের পদক্ষেপ অনুসরণ করুন:
ProxySQL ইনস্টলেশন:
sudo apt-get install proxysql- ProxySQL কনফিগার করা: MariaDB-র মাস্টার এবং রেপ্লিকা সার্ভারগুলো যোগ করুন এবং কুয়েরি রাউটিং কনফিগার করুন।
2. Failover Management (ফেলওভার ম্যানেজমেন্ট)
Failover হলো এমন একটি প্রক্রিয়া, যেখানে একটি সার্ভার যদি অপ্রত্যাশিতভাবে ডাউন হয়ে যায়, তাহলে অন্য একটি সার্ভার স্বয়ংক্রিয়ভাবে তার কার্যক্রম চালু করতে থাকে। MariaDB-তে Failover সেটআপ সাধারণত রেপ্লিকেশন সিস্টেমের সাথে সম্পন্ন করা হয়, যেখানে মাস্টার সার্ভার ডাউন হলে একটি রেপ্লিকা সার্ভারকে নতুন মাস্টার হিসেবে স্বয়ংক্রিয়ভাবে প্রোমোট (promote) করা হয়।
Failover এর জন্য সাধারণ কৌশল
MHA (Master High Availability) এর ব্যবহার: MHA (Master High Availability) একটি জনপ্রিয় টুল যা MariaDB (MySQL)-এর জন্য উচ্চ উপলব্ধতা এবং স্বয়ংক্রিয় ফেলওভার সলিউশন প্রদান করে। এটি মাস্টার সার্ভার ডাউন হলে একটি রেপ্লিকা সার্ভারকে নতুন মাস্টার হিসেবে প্রোমোট করে এবং ক্লাস্টারটি পুনরুদ্ধার করে।
- MHA ব্যবহারে আপনি সহজেই MariaDB-এর মাস্টার সার্ভারের ব্যর্থতার পর রেপ্লিকাকে নতুন মাস্টার হিসেবে প্রোমোট করতে পারবেন।
MHA কনফিগারেশন উদাহরণ:
MHA ইনস্টল করা:
sudo apt-get install mha4mysql-node- MHA কনফিগারেশন ফাইল তৈরি: MHA কনফিগারেশন ফাইলে সার্ভারগুলোর আইপি এবং অন্যান্য তথ্য নির্দিষ্ট করুন।
Galera Cluster ব্যবহার করা: Galera Cluster একটি শক্তিশালী সমন্বিত ক্লাস্টারিং প্রযুক্তি, যা MariaDB-র জন্য স্বয়ংক্রিয় ফেলওভার এবং সমান্তরাল রেপ্লিকেশন নিশ্চিত করে। এটি একাধিক সার্ভারে ডেটার সিঙ্ক্রোনাইজেশন তৈরি করে এবং সার্ভারের ব্যর্থতা ঘটলে অন্য সার্ভারটি স্বয়ংক্রিয়ভাবে মাস্টার হিসেবে প্রোমোট হয়।
Galera Cluster কনফিগারেশন:
Galera Cluster ইনস্টল করা: MariaDB-তে Galera Cluster ইনস্টল করতে নিম্নলিখিত কমান্ড ব্যবহার করুন:
sudo apt-get install mariadb-server galera-4Galera কনফিগারেশন ফাইল (my.cnf):
[mysqld] wsrep_on=ON wsrep_cluster_address="gcomm://node1_ip,node2_ip,node3_ip" wsrep_cluster_name="my_galera_cluster" wsrep_node_address="node_ip" wsrep_node_name="node_name"Cluster চালু করা:
systemctl restart mariadb
Galera Cluster ক্লাস্টারে একটি সার্ভার ডাউন হলে, অন্য সার্ভারটি একই ডেটা দিয়ে কাজ চালিয়ে যেতে পারে এবং ব্যর্থতার সময় ডেটা হারানো এড়ানো যায়।
3. Automating Failover
Failover স্বয়ংক্রিয়ভাবে পরিচালনার জন্য আপনাকে কিছু টুল এবং স্ক্রিপ্ট ব্যবহার করতে হতে পারে যা সার্ভারের স্বাস্থ্য মনিটর করে এবং ব্যর্থ হলে অটোমেটিক্যালি ফেলওভার প্রক্রিয়া শুরু করে। নিচে দুটি জনপ্রিয় টুলের উদাহরণ দেওয়া হলো:
- Keepalived: Keepalived একটি সিস্টেম যে সার্ভারের স্বাস্থ্য মনিটর করে এবং ব্যর্থতার ক্ষেত্রে একটি ভার্চুয়াল আইপি (VIP) অন্য সার্ভারে স্থানান্তরিত করে। এটি failover পরিচালনা করতে সহায়ক।
Keepalived ইনস্টল করুন:
sudo apt-get install keepalivedKeepalived কনফিগারেশন ফাইল (keepalived.conf):
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 101 advert_int 1 virtual_ipaddress { 192.168.1.100 } }
- Corosync/Pacemaker: Corosync এবং Pacemaker হল ক্লাস্টার রিসোর্স ম্যানেজার, যা MariaDB ক্লাস্টারে স্বয়ংক্রিয় ফেলওভার পরিচালনা করতে পারে। এগুলো সাধারণত উচ্চ উপলব্ধতার (HA) কনফিগারেশনের জন্য ব্যবহৃত হয়।
সারাংশ
Load Balancing এবং Failover Management MariaDB-তে উচ্চ উপলব্ধতা এবং পারফরম্যান্স নিশ্চিত করার জন্য অত্যন্ত গুরুত্বপূর্ণ। লোড ব্যালান্সিং মাধ্যমে বিভিন্ন সার্ভারে কুয়েরি বিতরণ করা হয় এবং ফেলওভার ম্যানেজমেন্ট মাধ্যমে একটি সার্ভার ব্যর্থ হলে অন্য সার্ভারটি স্বয়ংক্রিয়ভাবে সিস্টেমের কার্যক্রম চালিয়ে যায়। ProxySQL, MHA, Galera Cluster, এবং Keepalived এর মতো টুলস ব্যবহারের মাধ্যমে এই দুটি কৌশল কার্যকরভাবে বাস্তবায়ন করা যায়।
MariaDB-তে High Availability (HA) এবং Scalability (স্কেলেবিলিটি) প্রযুক্তিগুলি অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে বড়ো আকারের অ্যাপ্লিকেশন এবং মিশন-কৃতিকাল সিস্টেমের জন্য। HA এবং Scalability নিশ্চিত করতে বিভিন্ন কৌশল এবং পদ্ধতি ব্যবহৃত হয়, যার মাধ্যমে ডেটাবেসের ইউপটাইম, পারফরম্যান্স এবং স্থিতিশীলতা বৃদ্ধি করা যায়। এই গাইডে MariaDB-তে HA এবং Scalability অর্জন করার জন্য বিভিন্ন পদ্ধতির আলোচনা করা হবে।
High Availability (HA) কৌশল
High Availability (HA) হল একটি ব্যবস্থা যা নিশ্চিত করে যে ডেটাবেস সার্ভার চলমান থাকে এবং যদি কোন সমস্যা হয়, তবে অন্য সার্ভার (যেমন স্লেভ বা স্ট্যান্ডবাই) তা স্বয়ংক্রিয়ভাবে গ্রহণ করবে, যাতে সিস্টেমের ডাউনটাইম শূন্য থাকে। MariaDB-তে HA অর্জনের জন্য কিছু জনপ্রিয় কৌশল রয়েছে:
১. MariaDB রিপ্লিকেশন
MariaDB-তে রিপ্লিকেশন একটি সহজ এবং কার্যকর HA কৌশল। রিপ্লিকেশন ব্যবস্থায়, মূল (Master) সার্ভারের ডেটা স্লেভ সার্ভারে কপি হয়ে যায়, এবং স্লেভ সার্ভারটি স্বয়ংক্রিয়ভাবে মূল সার্ভারের ব্যর্থতার ক্ষেত্রে কাজ করতে পারে।
- Master-Slave Replication: এক বা একাধিক স্লেভ সার্ভারকে মূল সার্ভারের সাথে যুক্ত করা হয়। স্লেভ সার্ভার মূল সার্ভারের ব্যর্থতার পর তার পরিবর্তে কাজ করতে পারে, তবে স্লেভ সার্ভারের আপডেট বিলম্বিত হতে পারে।
- Multi-Master Replication: একাধিক সার্ভারে ডেটা লেখা সম্ভব হয়, এবং এক সার্ভারের ব্যর্থতায় অন্য সার্ভারটি ডেটা হ্যান্ডল করতে পারে।
২. MariaDB Galera Cluster
MariaDB Galera Cluster হল একটি বহুমুখী, সম্পূর্ণ সিঙ্ক্রোনাস মাল্টি-মাস্টার ক্লাস্টারিং প্রযুক্তি, যা HA নিশ্চিত করার জন্য ব্যবহার হয়। এই ক্লাস্টারিং পদ্ধতি মূলত একটি সার্ভারের ব্যর্থতায় অন্য সার্ভারকে স্বয়ংক্রিয়ভাবে নিয়ন্ত্রণে নিয়ে আসে।
Galera Cluster এর বৈশিষ্ট্য:
- Multi-Master Replication: একাধিক সার্ভারে ডেটা লেখা সম্ভব।
- Synchronous Replication: সমস্ত ক্লাস্টারের মধ্যে সিঙ্ক্রোনাস রিপ্লিকেশন, যা নিশ্চিত করে যে সমস্ত সার্ভারের ডেটা একযোগভাবে সিঙ্ক্রোনাইজ হয়।
- Automatic Node Joining: নতুন নোড যোগ করার প্রক্রিয়া সহজ এবং স্বয়ংক্রিয়।
Galera Cluster কনফিগারেশন উদাহরণ:
[mysqld]
wsrep_on = ON
wsrep_cluster_name = "my_cluster"
wsrep_cluster_address = "gcomm://node1_ip,node2_ip,node3_ip"
wsrep_node_name = "node1"
wsrep_node_address = "node1_ip"
wsrep_sst_method = rsync
৩. MariaDB MHA (Master High Availability)
MariaDB MHA একটি অত্যন্ত ব্যবহৃত টুল যা Master-Slave রিপ্লিকেশনকে কার্যকরভাবে পরিচালনা করে। এটি মূল সার্ভারের ব্যর্থতার সময় স্লেভ সার্ভারকে স্বয়ংক্রিয়ভাবে প্রমোশনের মাধ্যমে মূল সার্ভারে পরিণত করতে পারে।
MHA-এর বৈশিষ্ট্য:
- Automatic Failover: মূল সার্ভার ডাউন হলে স্লেভ সার্ভারকে প্রমোট করা হয়।
- Data Consistency: ব্যর্থতার পরে ডেটা সঠিকতা নিশ্চিত করা হয়।
- No Data Loss: ব্যর্থতার সময় ডেটা হারানোর সম্ভাবনা কম।
Scalability Techniques
Scalability বা স্কেলেবিলিটি হল সিস্টেমের ক্ষমতা, যা বৃদ্ধি বা কমানোর মাধ্যমে বিভিন্ন লোড বা ব্যবহারের চাহিদা মেটাতে সক্ষম হয়। MariaDB-তে Scalability অর্জন করার জন্য কয়েকটি কৌশল রয়েছে।
১. Vertical Scaling (Scale Up)
Vertical Scaling বা Scale Up কৌশলে একটি সার্ভারের হার্ডওয়্যার শক্তি বৃদ্ধি করা হয়, যেমন RAM, CPU এবং স্টোরেজ ক্ষমতা বাড়ানো। এটি সিস্টেমের ক্ষমতা বৃদ্ধি করতে সাহায্য করে।
Vertical Scaling ব্যবহার করার সুবিধা:
- দ্রুত ফলাফল এবং প্রক্রিয়াকরণ সক্ষমতা।
- কম কনফিগারেশন এবং প্রশাসনিক কাজ।
তবে, একটি নির্দিষ্ট হার্ডওয়্যার সীমা পর্যন্ত এই স্কেলিং কার্যকর থাকে এবং অতিরিক্ত লোড সহ্য করতে সমস্যা হতে পারে।
২. Horizontal Scaling (Scale Out)
Horizontal Scaling বা Scale Out হল একাধিক সার্ভারের মধ্যে লোড বিতরণ করার প্রক্রিয়া। MariaDB-তে Horizontal Scaling অর্জন করার জন্য সাধারণত Sharding বা Cluster পদ্ধতি ব্যবহার করা হয়।
a) Sharding
Sharding হল ডেটাবেসকে ছোট ছোট অংশে ভাগ করার কৌশল, যেখানে প্রতিটি অংশ বা "Shard" এক বা একাধিক সার্ভারে থাকে। এটি একটি সার্ভারের উপর লোড কমাতে সাহায্য করে।
- Horizontal Partitioning: ডেটা এমনভাবে বিভক্ত করা হয় যাতে একাধিক সার্ভার ডেটা ধারণ করতে পারে।
- Load Balancing: লোড সমানভাবে বিভিন্ন সার্ভারে বিতরণ করা হয়।
b) MariaDB Galera Cluster (Scalability)
MariaDB Galera Cluster শুধুমাত্র HA জন্য নয়, বরং Scalability নিশ্চিত করার জন্যও ব্যবহৃত হয়। একাধিক সার্ভারের মধ্যে সিঙ্ক্রোনাস ডেটা রিপ্লিকেশন এবং লোড ব্যালান্সিং এর মাধ্যমে উচ্চ স্কেলেবিলিটি অর্জন করা যায়।
৩. Replication with Load Balancing
Load balancing হল একাধিক সার্ভারের মধ্যে ডেটাবেস রিকোয়েস্টসমূহকে সমানভাবে বিতরণ করার প্রক্রিয়া, যাতে কোনো একটি সার্ভারে অতিরিক্ত লোড না পড়ে। MariaDB-তে লোড ব্যালান্সিংয়ের জন্য বিভিন্ন টুল এবং প্রযুক্তি যেমন ProxySQL বা HAProxy ব্যবহার করা হয়।
- ProxySQL: MariaDB বা MySQL সার্ভারের মধ্যে লোড ব্যালান্সিং, ক্যাশিং এবং ফিল্টারিং পরিচালনা করতে ব্যবহৃত হয়।
- HAProxy: একটি ওপেন-সোর্স প্রক্সি, যা MariaDB সার্ভারের জন্য লোড ব্যালান্সিং এবং ট্রাফিক ম্যানেজমেন্টে সাহায্য করে।
HA এবং Scalability কৌশলের মধ্যে পার্থক্য
| বৈশিষ্ট্য | High Availability (HA) | Scalability |
|---|---|---|
| প্রধান লক্ষ্য | সিস্টেমের ডাউনটাইম হ্রাস করা | সিস্টেমের ক্ষমতা বৃদ্ধি করা |
| টেকনিক | রিপ্লিকেশন, ক্লাস্টারিং, ফেইলোভার | ভার্টিক্যাল স্কেলিং, হরাইজেন্টাল স্কেলিং, শার্ডিং |
| ব্যবহার | মিশন-কৃতিকাল অ্যাপ্লিকেশন | বড়ো আকারের অ্যাপ্লিকেশন বা ডেটাবেস |
| সার্ভার সংখ্যা | একাধিক সার্ভার (স্লেভ সার্ভার) | একাধিক সার্ভার (লোড ব্যালান্সিং) |
| সিস্টেম পারফরম্যান্স | সিস্টেমের স্থিতিশীলতা নিশ্চিত করা | লোড এবং ব্যবহার বৃদ্ধির সাথে পারফরম্যান্স উন্নয়ন |
সারাংশ
MariaDB-তে High Availability এবং Scalability নিশ্চিত করার জন্য বিভিন্ন পদ্ধতি ব্যবহৃত হয়। HA অর্জনের জন্য MariaDB রিপ্লিকেশন, Galera Cluster এবং MHA ব্যবহার করা হয়, যা ডেটাবেসের অবিচ্ছিন্নতা এবং স্থিতিশীলতা নিশ্চিত করে। Scalability অর্জন করার জন্য Vertical Scaling, Horizontal Scaling, এবং Load Balancing ব্যবহৃত হয়, যা সিস্টেমের ক্ষমতা বৃদ্ধি এবং লোড সমানভাবে বিতরণ করতে সাহায্য করে। MariaDB-তে এই কৌশলগুলি ব্যবহারের মাধ্যমে বড়ো আকারের অ্যাপ্লিকেশন এবং মিশন-কৃতিকাল সিস্টেমে পারফরম্যান্স এবং স্থায়িত্ব বৃদ্ধি করা সম্ভব।
Read more