উবুন্টু 18.04 এ কীভাবে মাইএসকিউএল মাস্টার-স্লেভ প্রতিলিপি সেটআপ করবেন


মাইএসকিউএল মাস্টার-স্লেভ রেপ্লিকেশন এমন একটি পদ্ধতি যা ডাটাবেস ফাইলগুলিকে একটি নেটওয়ার্কে এক বা একাধিক নোডের অনুলিপি করতে বা অনুলিপি করতে দেয়। এই সেটআপটি অপ্রয়োজনীয়তা এবং ত্রুটি সহিষ্ণুতা সরবরাহ করে যেমন মাস্টার নোডে ব্যর্থতার ক্ষেত্রে, স্লেভ নোডে ডাটাবেসগুলি এখনও পুনরুদ্ধার করা যায়। এটি ব্যবহারকারীদের মানসিক প্রশান্তি দেয় যে ডেটাবেসগুলির অনুলিপিটি অন্য একটি সার্ভার থেকে এখনও পুনরুদ্ধার করা যেতে পারে বলে সমস্ত ঘটনা হারিয়ে যাবে না।

এই গাইডটিতে আপনি কীভাবে একটি উবুন্টু 18.04 সিস্টেমে মাইএসকিউএল ডাটাবেস মাস্টার-স্লেভ প্রতিলিপি সম্পাদন করবেন তা শিখতে চলেছেন।

সেটআপে, আমরা নিম্নলিখিত আইপি অ্যাড্রেসগুলির সাথে উবুন্টু 18.04 চলছে এমন দুটি সার্ভার রাখতে যাচ্ছি।

Master server: 10.128.0.28
Slave server: 10.128.0.29

আসুন এখন ডুব দিন এবং দেখুন আমরা কীভাবে উবুন্টুতে মাস্টার-স্লেভ রেপ্লিকেশন সেটআপটি কনফিগার করতে পারি।

পদক্ষেপ 1: মাস্টার এবং স্লেভ নোডগুলিতে মাইএসকিউএল ইনস্টল করুন

উবুন্টু সংগ্রহস্থলগুলিতে মাইএসকিউএল এর 5.7 সংস্করণ রয়েছে। যে কোনও নতুন বৈশিষ্ট্যের সুবিধা নিতে এবং সম্ভাব্য সমস্যাগুলি এড়াতে আপনার সর্বশেষতম মাইএসকিউএল সংস্করণ ইনস্টল করা উচিত। তবে প্রথমে নীচের অ্যাপটি কমান্ডটি ব্যবহার করে দুটি নোড আপডেট করা যাক।

$ sudo apt update

উভয় নোডে মাইএসকিউএল ইনস্টল করতে কমান্ডটি কার্যকর করুন।

$ sudo apt install mysql-server mysql-client

এরপরে, mysql কনফিগারেশন ফাইলটি খুলুন।

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

মাস্টার নোডে, নীচে প্রদর্শিত হিসাবে বাইন্ড ঠিকানা বৈশিষ্ট্যটি স্ক্রোল করুন এবং সন্ধান করুন।

bind-address 	 =127.0.0.1

মাস্টার নোডের আইপি ঠিকানার সাথে মেলে লুপব্যাকের ঠিকানাটি পরিবর্তন করুন।

bind-address  	=10.128.0.28

এরপরে [mysqld] বিভাগে সার্ভার-আইডি বৈশিষ্ট্যের জন্য একটি মান নির্দিষ্ট করুন। আপনার চয়ন করা নম্বরটি অন্য কোনও সার্ভার-আইডি সংখ্যার সাথে মেলে না। আসুন 1 মান নির্ধারণ করি।

server-id	 =1

কনফিগারেশন ফাইলের একেবারে শেষে, নীচের লাইনগুলি অনুলিপি করুন এবং আটকান।

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

মাস্টার নোডে পরিবর্তনগুলি কার্যকর করতে কনফিগারেশন ফাইল থেকে প্রস্থান করুন এবং মাইএসকিউএল পরিষেবাটি পুনরায় চালু করুন।

$ sudo systemctl restart mysql

প্রত্যাশা অনুযায়ী মাইএসকিউএল সার্ভার চলছে কিনা তা যাচাই করতে, কমান্ডটি জারি করুন।

$ sudo systemctl status mysql

পারফেক্ট! মাইএসকিউএল সার্ভারটি প্রত্যাশা মতো চলছে!

পদক্ষেপ 2: মাস্টার নোডে প্রতিলিপি জন্য একটি নতুন ব্যবহারকারী তৈরি করুন

এই বিভাগে, আমরা মাস্টার নোডে একটি প্রতিলিপি ব্যবহারকারী তৈরি করতে যাচ্ছি। এটি অর্জন করতে, প্রদর্শিত হিসাবে মাইএসকিউএল সার্ভারে লগ ইন করুন।

$ sudo mysql -u root -p

এরপরে, প্রতিলিপি ব্যবহারকারী তৈরি করতে এবং প্রতিরূপ দাসটিতে অ্যাক্সেস দেওয়ার জন্য নীচে অনুসন্ধানগুলি চালিয়ে যান। আপনার আইপি ঠিকানা ব্যবহার করতে ভুলবেন না।

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

এরপরে, নিম্নলিখিত কমান্ডটি চালান।

mysql> SHOW MASTER STATUS\G

আউটপুটটি যা আপনি নীচে দেখতে পাচ্ছেন তার সমান হওয়া উচিত।

আগ্রহী হন এবং mysql-bin.000002 মান এবং অবস্থান আইডি 1643 নোট করুন। দাস সার্ভার সেট আপ করার সময় এই মানগুলি গুরুত্বপূর্ণ।

পদক্ষেপ 3: মাইএসকিউএল স্লেভ সার্ভার কনফিগার করুন

স্লেভ সার্ভারের দিকে এগিয়ে যান এবং যেমন আমরা মাস্টার সার্ভারটি দিয়েছিলাম, মাইএসকিউএল কনফিগারেশন ফাইলটি খুলুন।

$ sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

মাস্টার সার্ভারের মতো, নিম্নলিখিত লাইনগুলি সম্পাদনা করতে এগিয়ে যান।

bind-address           = 10.128.0.29

আগের মতো, [mysqld] বিভাগে সার্ভার-আইডি বৈশিষ্ট্যের জন্য একটি মান নির্দিষ্ট করুন। এবার আলাদা মান নির্বাচন করুন। আসুন 2 নিয়ে যান।

server-id		=2 

আবার, কনফিগারেশন ফাইলের একেবারে শেষে নীচের লাইনগুলি আটকান।

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

পরবর্তী স্লেভ নোডে মাইএসকিউএল সার্ভার পুনরায় আরম্ভ করুন।

$ sudo systemctl restart mysql

একবার হয়ে গেলে, সংরক্ষণ করুন এবং পাঠ্য সম্পাদকটি প্রস্থান করুন

এরপরে, প্রদর্শিত হিসাবে মাইএসকিউএল শেলটিতে লগ ইন করুন।

$ sudo mysql -u root -p

এই পদক্ষেপে, আপনাকে কিছু কনফিগারেশন তৈরি করতে হবে যা স্লেভ সার্ভারকে মাস্টার সার্ভারের সাথে সংযোগ করার অনুমতি দেবে। তবে প্রথমে প্রদর্শিত দাস থ্রেডগুলি বন্ধ করুন।

mysql> STOP SLAVE; 

দাস সার্ভারকে মাস্টার সার্ভারের প্রতিরূপ তৈরি করতে, কমান্ডটি চালান run

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='[email ', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

আপনি যদি যথেষ্ট আগ্রহী হন তবে আপনি লক্ষ্য করবেন যে আমরা স্লেভ প্রতিলিপি ব্যবহারকারী তৈরি করার পরে mysql-bin.00002 মান এবং অবস্থান আইডি 1643 ব্যবহার করেছি observe

অতিরিক্তভাবে, মাস্টার সার্ভারের আইপি ঠিকানা, প্রতিলিপি ব্যবহারকারী এবং পাসওয়ার্ড ব্যবহার করা হয়েছে।

পরে, আপনি যে থ্রেডটি থামিয়েছিলেন তা শুরু করুন।

mysql> START SLAVE;

পদক্ষেপ 4: মাইএসকিউএল মাস্টার-স্লেভ প্রতিলিপিটি যাচাই করুন

সেটআপটি বাস্তবে প্রত্যাশার মতো কাজ করছে কিনা তা পরীক্ষা করতে, আমরা মাস্টারের উপর একটি নতুন ডাটাবেস তৈরি করতে যাচ্ছি এবং এটি মাইএসকিউএল স্লেভ সার্ভারে প্রতিলিপি করা হয়েছে কিনা তা পরীক্ষা করে দেখতে যাচ্ছি।

মাস্টার সার্ভারে মাইএসকিউএল এ লগ ইন করুন।

$ sudo mysql -u root -p

আসুন একটি পরীক্ষা ডেটাবেস তৈরি করি। এই ক্ষেত্রে, আমরা রেপ্লিকেশন_ডিবি নামে একটি ডাটাবেস তৈরি করব।

mysql> CREATE DATABASE replication_db;

এখন, স্লেভ সার্ভারে আপনার মাইএসকিউএল উদাহরণটিতে লগ ইন করুন।

$ sudo mysql -u root -p

এখন ক্যোয়ারী ব্যবহার করে ডাটাবেসগুলি তালিকাভুক্ত করুন।

mysql> SHOW DATABASES;

আপনি মাস্টারে তৈরি করা ডাটাবেসটি স্লেভের উপর প্রতিলিপি করা হয়েছে তা লক্ষ্য করবেন। অসাধারণ ! আপনার মাইএসকিউএল মাস্টার-স্লেভ প্রতিলিপি প্রত্যাশার মতো কাজ করছে! আপনি এখন আশ্বস্ত থাকতে পারেন যে কোনও ব্যর্থতার ক্ষেত্রে, ডাটাবেস ফাইলগুলির অনুলিপি স্লেভ সার্ভারে প্রতিলিপি করা হবে।

এই গাইডটিতে আপনি কীভাবে উবুন্টু 18.04 এ একটি মাইএসকিউএল মাস্টার-স্লেভ রেপ্লিকেশন সেটআপ সেটআপ করবেন তা শিখলেন।