Galera Cluster হল একটি সিঙ্ক্রোনাস রেপ্লিকেশন প্রযুক্তি যা MariaDB ডেটাবেসের উচ্চতর উপলভ্যতা (HA) এবং স্কেলেবিলিটি নিশ্চিত করে। এটি আপনাকে একাধিক MariaDB সার্ভারকে একটি ক্লাস্টারে একত্রিত করে একযোগভাবে ডেটা রেপ্লিকেট করতে সাহায্য করে, যেখানে সমস্ত নোডে একই ডেটা থাকে। Galera Cluster-এ, কোনো একটি নোড ব্যর্থ হলে অন্য নোডগুলি ডেটাবেস সার্ভিস প্রদান করতে সক্ষম থাকে, যা আপনার অ্যাপ্লিকেশনকে ক্র্যাশ না হওয়ার সুবিধা দেয়।
এই গাইডে, আমরা MariaDB Galera Cluster ডেপ্লয়মেন্টের একটি সাধারণ উদাহরণ দেখব, যেখানে তিনটি নোডের ক্লাস্টার তৈরি করা হবে।
Galera Cluster ডেপ্লয়মেন্টের জন্য প্রস্তুতি
Galera Cluster সেটআপ করার জন্য কিছু প্রাথমিক প্রস্তুতি নিতে হবে:
- MariaDB Galera ক্লাস্টার প্যাকেজ ইনস্টলেশন
- নেটওয়ার্ক কনফিগারেশন
- নোডগুলির মধ্যে সংযোগের জন্য প্রয়োজনীয় পোর্ট খোলা
১. MariaDB Galera Cluster প্যাকেজ ইনস্টলেশন
প্রতিটি নোডে MariaDB এবং Galera ইনস্টল করা
প্রথমেই MariaDB এবং Galera Cluster প্যাকেজ ইনস্টল করতে হবে। এটি Ubuntu বা CentOS-এর মতো লিনাক্স ডিস্ট্রিবিউশনগুলির জন্য আলাদা হতে পারে।
Ubuntu (প্রতি নোডে)
sudo apt-get update
sudo apt-get install mariadb-server mariadb-client galera-4
CentOS (প্রতি নোডে)
sudo yum install mariadb-server mariadb galera-4
এটি MariaDB এবং Galera এর প্রয়োজনীয় উপাদান ইনস্টল করবে।
২. MariaDB Galera Cluster কনফিগারেশন
এবার আপনি MariaDB কনফিগারেশন ফাইল my.cnf এ কিছু প্রয়োজনীয় সেটিংস করতে হবে।
MariaDB কনফিগারেশন ফাইলটি (my.cnf) এডিট করুন
my.cnf ফাইলটি সাধারণত /etc/mysql/my.cnf অথবা /etc/my.cnf অবস্থানে থাকে। ফাইলটি খুলে নিচের কনফিগারেশন যোগ করুন।
[mysqld]
# Galera Specific Configurations
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://node1_ip,node2_ip,node3_ip"
wsrep_node_address="nodeX_ip" # এই নোডের IP
wsrep_node_name="nodeX" # এই নোডের নাম
wsrep_sst_method=rsync
wsrep_sst_auth="sstuser:password"
# Basic MariaDB configurations
bind-address = 0.0.0.0
max_connections = 1000
innodb_buffer_pool_size = 512M
wsrep_cluster_address
এটি ক্লাস্টারের অন্য নোডগুলির IP অ্যাড্রেস উল্লেখ করে। এখানে তিনটি নোড থাকলে, তাদের IP গুলো গুলো node1_ip,node2_ip,node3_ip আকারে লিখবেন।
wsrep_node_address
এটি নির্দিষ্ট নোডের IP অ্যাড্রেস হবে। প্রতিটি নোডের জন্য আলাদা IP ব্যবহার করতে হবে।
wsrep_sst_auth
এটি SST (State Snapshot Transfer) প্রক্রিয়ায় ব্যবহারকারী নাম এবং পাসওয়ার্ডের জন্য। ক্লাস্টারের মধ্যে ডেটা ট্রান্সফার করতে একটি ব্যবহারকারী এবং পাসওয়ার্ড তৈরি করতে হবে।
৩. SST ইউজার এবং পাসওয়ার্ড তৈরি করা
SST (State Snapshot Transfer) হল Galera Cluster-এ ডেটা সিঙ্ক্রোনাইজেশনের জন্য ব্যবহৃত প্রক্রিয়া। এটি কার্যকরভাবে ক্লাস্টারের নতুন নোডে ডেটা সরবরাহ করে। এই প্রক্রিয়ার জন্য একটি SST ব্যবহারকারী এবং পাসওয়ার্ড প্রয়োজন।
MariaDB-তে একটি SST ব্যবহারকারী তৈরি করুন:
CREATE USER 'sstuser'@'%' IDENTIFIED BY 'password';
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'%';
FLUSH PRIVILEGES;
এটি একটি ব্যবহারকারী তৈরি করবে যার নাম sstuser এবং পাসওয়ার্ড password হবে, যা SST প্রক্রিয়ায় ব্যবহৃত হবে।
৪. Galera Cluster-এ প্রথম নোড (Initial Node) চালানো
এখন প্রথম নোড চালানোর জন্য, প্রথম নোডকে গ্যালেরা ক্লাস্টার চালানোর জন্য bootstrap করতে হবে। এটি ক্লাস্টারের প্রথম নোড, এবং অন্য নোডগুলি এটিতে যোগ দেবে।
sudo systemctl stop mariadb
sudo galera_new_cluster
sudo systemctl start mariadb
এটি প্রথম নোড চালু করবে এবং এটি ক্লাস্টারের মাস্টার হিসেবে কাজ করবে। প্রথম নোড সফলভাবে চালু হলে, আপনি MariaDB এ লগইন করতে পারেন:
mysql -u root -p
৫. অন্য নোডে Galera Cluster যোগ করা
এবার দ্বিতীয় এবং তৃতীয় নোডে গ্যালেরা ক্লাস্টার যোগ করতে হবে। প্রতিটি নোডে MariaDB চালু করুন এবং ক্লাস্টারের সাথে সংযোগ করুন:
sudo systemctl start mariadb
এই নোডগুলি স্বয়ংক্রিয়ভাবে প্রথম নোডের সাথে সিঙ্ক্রোনাইজ হয়ে যাবে। লগইন করতে পারেন:
mysql -u root -p
wsrep_cluster_address কনফিগারেশন অনুসারে, সমস্ত নোড একে অপরের সাথে সংযুক্ত হবে এবং একটি সফল Galera Cluster তৈরি হবে।
৬. Cluster স্ট্যাটাস চেক করা
Galera Cluster এর স্ট্যাটাস চেক করতে নিচের SQL কমান্ড ব্যবহার করুন:
SHOW STATUS LIKE 'wsrep%';
এটি ক্লাস্টারের স্ট্যাটাস প্রদর্শন করবে, যেমন কুয়েরি করা নোডের নাম, সিঙ্ক্রোনাইজেশন অবস্থা ইত্যাদি।
৭. ক্লাস্টারের মধ্যে রেপ্লিকেশন এবং ডেটা সিঙ্ক্রোনাইজেশন
Galera Cluster সিঙ্ক্রোনাস রেপ্লিকেশন ব্যবহার করে, অর্থাৎ কোনো একটি নোডে ডেটা পরিবর্তন হলে, তা সব নোডে একযোগভাবে আপডেট হয়। এটি ক্লাস্টারের মধ্যে সবসময় একে অপরের সাথে সমন্বিত ডেটাবেস তৈরি করে।
আপনি একটি টেবিল তৈরি বা ডেটা ইনসার্ট করার পর সমস্ত নোডে এই পরিবর্তনটি দেখতে পাবেন।
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE example (id INT, name VARCHAR(50));
INSERT INTO example VALUES (1, 'test');
এটি এক নোডে ইনসার্ট করার পর অন্যান্য নোডগুলিতে স্বয়ংক্রিয়ভাবে সিঙ্ক্রোনাইজ হবে।
সারাংশ
MariaDB Galera Cluster ডেপ্লয়মেন্টের মাধ্যমে, আপনি একাধিক সার্ভারের মধ্যে সিঙ্ক্রোনাস রেপ্লিকেশন বাস্তবায়ন করতে পারবেন, যা উচ্চ উপলভ্যতা এবং ডেটাবেসের পারফরম্যান্স বৃদ্ধি করবে। এই গাইডে আমরা তিনটি নোডের একটি গ্যালেরা ক্লাস্টার সেটআপ করার প্রক্রিয়া দেখেছি, যার মধ্যে ছিল MariaDB ইনস্টলেশন, কনফিগারেশন, SST ইউজার তৈরি এবং ক্লাস্টার স্ট্যাটাস চেক করা। Galera Cluster সফলভাবে সেটআপ হলে, এটি আপনাকে উন্নত রিলায়েবিলিটি এবং স্কেলেবিলিটি প্রদান করবে।
Read more