H2 ডেটাবেজ মূলত একটি এমবেডেড ডেটাবেজ হিসেবে পরিচিত, তবে এটি Cluster মোডে কাজ করতেও সক্ষম। H2 ডেটাবেজের ক্লাস্টার কনফিগারেশন মূলত হাই অ্যাভেইলেবিলিটি (High Availability) এবং লোড ব্যালান্সিং (Load Balancing) এর জন্য ব্যবহৃত হয়, যেখানে একাধিক নোড (তথা সার্ভার) একে অপরের সাথে সংযুক্ত থাকে এবং একে অপরের ডেটার কপি শেয়ার করে। এই কনফিগারেশন বড় সিস্টেমে ব্যাপক ব্যবহৃত হয় যেখানে ডেটাবেজের পারফরম্যান্স এবং স্কেলেবিলিটি বৃদ্ধি করতে হয়।
H2 ডেটাবেজের ক্লাস্টার কনফিগারেশন করার জন্য, আপনাকে কিছু নির্দিষ্ট পদক্ষেপ অনুসরণ করতে হবে। ক্লাস্টার কনফিগারেশনে একাধিক H2 সার্ভার একটি ডেটাবেস শেয়ার করে এবং লগ রিপ্লিকেশন বা ডেটা রিপ্লিকেশন এর মাধ্যমে তথ্য সিঙ্ক্রোনাইজ রাখে।
H2 ডেটাবেজে ক্লাস্টার সেটআপ করতে হলে সাধারণত কয়েকটি H2 সার্ভার একই ডেটাবেসের উপর কাজ করবে এবং তাদের মধ্যে ডেটা সিঙ্ক্রোনাইজেশন চলতে থাকবে। H2 ক্লাস্টার কনফিগারেশন করার সময়, একটি প্রধান সার্ভার (Master Server) থাকবে, এবং অন্যান্য গোল্ড সার্ভার (Slave Servers) থাকবে যারা মূল সার্ভারের ডেটা অনুসরণ করবে।
H2 ডেটাবেজে ক্লাস্টার কনফিগারেশন করতে হলে আপনাকে কিছু পদক্ষেপ অনুসরণ করতে হবে। ক্লাস্টারিং করতে হলে TCP/IP এবং JDBC প্রোটোকল ব্যবহার করতে হয়।
প্রথমে আপনাকে H2 সার্ভার মোডে চালাতে হবে। H2 সার্ভার মোডে কাজ করার জন্য আপনাকে h2.jar
ফাইলটি চালাতে হবে। নীচের কমান্ডটি সার্ভার মোডে H2 চালাবে:
java -cp h2-1.4.200.jar org.h2.tools.Server
এই কমান্ডটি H2 সার্ভার চালু করবে। এখন আপনার সার্ভারটি TCP/IP বা JDBC প্রোটোকল এর মাধ্যমে একাধিক ক্লায়েন্টের সাথে যোগাযোগ করতে পারবে।
H2 ক্লাস্টারে একাধিক সার্ভার একে অপরের সাথে সংযুক্ত হয়। প্রথমে আপনাকে একটি মূল ডেটাবেস সার্ভার (Master) তৈরি করতে হবে এবং তারপর সেটিকে অন্য সার্ভার (Slaves) এর সাথে কনফিগার করতে হবে।
Master সার্ভারটি ডেটাবেসের প্রধান সার্ভার হবে। এটিকে TCP/IP মাধ্যমে H2 সার্ভারে শুরু করতে হবে। উদাহরণস্বরূপ:
java -cp h2-1.4.200.jar org.h2.tools.Server -tcp -tcpAllowOthers -tcpPort 9092
এটি TCP পোর্ট 9092-এ H2 সার্ভার চালু করবে, এবং -tcpAllowOthers
কমান্ডটি সার্ভারটিকে অন্য ক্লায়েন্ট দ্বারা অ্যাক্সেস করার অনুমতি দেবে।
Slave সার্ভারগুলি Master সার্ভারের ডেটা অনুসরণ করবে এবং তা সিঙ্ক্রোনাইজড রাখবে। আপনি স্লেভ সার্ভার হিসেবে H2 চালানোর জন্য নিচের কমান্ডটি ব্যবহার করতে পারেন:
java -cp h2-1.4.200.jar org.h2.tools.Server -tcp -tcpAllowOthers -tcpPort 9093
এটি একই সার্ভারের অন্য একটি ইনস্ট্যান্স শুরু করবে, তবে পোর্ট 9093-এ, যাতে এটি Master সার্ভারের সাথে সংযোগ করতে পারে।
H2 ক্লাস্টারের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হল Replication। এটি মূল সার্ভার এবং স্লেভ সার্ভারের মধ্যে ডেটা শেয়ার করে। ক্লাস্টারিং সেটআপের সময়, Replication এর জন্য নিম্নলিখিত কনফিগারেশন ব্যবহার করা হয়:
BACKUP TO 'tcp://localhost:9092/backup.zip';
এটি Master সার্ভারের ব্যাকআপ নিয়ে স্লেভ সার্ভারে রিপ্লিকেশন শুরু করবে। যখন Master সার্ভারের ডেটাতে পরিবর্তন হবে, তখন স্লেভ সার্ভার সেই পরিবর্তন সিঙ্ক্রোনাইজ করবে।
JDBC URL কনফিগার করে আপনি Master এবং Slave সার্ভারের মধ্যে ডেটা শেয়ার এবং যোগাযোগ করতে পারেন। H2 JDBC URL কনফিগারেশন এমন হতে পারে:
Master Server JDBC URL:
jdbc:h2:tcp://localhost:9092/~/test;
Slave Server JDBC URL:
jdbc:h2:tcp://localhost:9093/~/test;
H2 ডেটাবেজে ক্লাস্টার কনফিগারেশনের সময়, নিরাপত্তা নিশ্চিত করা গুরুত্বপূর্ণ। আপনাকে TCP সংযোগের জন্য পাসওয়ার্ড এবং ইউজার অ্যাক্সেস নিয়ন্ত্রণের জন্য প্রয়োজনীয় কনফিগারেশন করতে হবে। উদাহরণস্বরূপ:
SET PASSWORD 'your_secure_password';
এটি সার্ভারে একটি নিরাপদ পাসওয়ার্ড কনফিগার করবে যাতে সিস্টেমে অ্যাক্সেসের নিয়ন্ত্রণ থাকতে পারে।
H2 ডেটাবেজে ক্লাস্টার কনফিগারেশন একটি শক্তিশালী এবং কার্যকরী প্রক্রিয়া, যা ডেটাবেজের স্কেলেবিলিটি এবং পারফরম্যান্স বৃদ্ধি করতে সাহায্য করে। এই কনফিগারেশনটি বিশেষভাবে বড় এবং স্কেলেবল অ্যাপ্লিকেশনগুলির জন্য উপযোগী, যেখানে হাই অ্যাভেইলেবিলিটি এবং লোড ব্যালান্সিং প্রয়োজন। H2 ক্লাস্টার কনফিগারেশন সম্পূর্ণরূপে সেটআপ করা হলে, এটি সার্ভার ব্যর্থতা বা লোডের কারণে ডেটাবেজের কর্মক্ষমতায় বিঘ্ন ঘটার ঝুঁকি কমিয়ে দেয়।
common.read_more