এলভিএম ব্যবহার করে দাসটিকে পুনর্নির্মাণ করা হচ্ছে
লিনাক্স এলভিএম ব্যবহার করে আমরা মাইএসকিউএল ক্রীতদাসগুলি পুনর্নির্মাণের জন্য এই পদ্ধতিটি ব্যবহার করি। আপনার মাস্টারে খুব কম ন্যূনতম ডাউনটাইমের প্রয়োজন হলে এটি একটি সামঞ্জস্যপূর্ণ স্ন্যাপশটের গ্যারান্টি দেয়।
মাস্টার মাইএসকিউএল সার্ভারে ইনোডাব সর্বাধিক নোংরা পৃষ্ঠাগুলি শতাংশ শূন্যে সেট করুন। এটি মাইএসকিউএলকে ডিস্কে সমস্ত পৃষ্ঠাগুলি লিখতে বাধ্য করবে যা পুনরায় আরম্ভের ক্ষেত্রে উল্লেখযোগ্যভাবে গতি আনবে।
set global innodb_max_dirty_pages_pct = 0;
নোংরা পৃষ্ঠাগুলির সংখ্যা নিরীক্ষণ করতে কমান্ডটি চালান
mysqladmin ext -i10 | grep dirty
একবার সংখ্যা হ্রাস বন্ধ হয়ে গেলে আপনি চালিয়ে যাওয়ার পয়েন্টে পৌঁছে যান। পুরানো বিন লগগুলি / রিলে লগগুলি সাফ করতে পরবর্তী মাস্টারটিকে পুনরায় সেট করুন:
RESET MASTER;
এলভি পাথ পেতে lvdisplay সম্পাদন করুন
lvdisplay
আউটপুট এর মত দেখতে হবে
--- Logical volume ---
LV Path /dev/vg_mysql/lv_data
LV Name lv_data
VG Name vg_mysql
কমান্ড দিয়ে মাস্টার ডাটাবেস বন্ধ করুন
service mysql stop
এরপরে একটি স্ন্যাপশট নিন, mysql_snaphot হবে নতুন লজিকাল ভলিউমের নাম। ওএস ড্রাইভে যদি বিনলোগগুলি স্থান করে থাকে তবে সেগুলি স্ন্যাপশটও হওয়া দরকার।
lvcreate --size 10G --snapshot --name mysql_snapshot /dev/vg_mysql/lv_data
কমান্ড দিয়ে আবার মাস্টার শুরু করুন
service mysql start
মলিন পৃষ্ঠাগুলিকে ডিফল্টে পুনরুদ্ধার করুন
set global innodb_max_dirty_pages_pct = 75;
স্ন্যাপশটটি সেখানে উপস্থিত এবং দৃশ্যমান তা নিশ্চিত করতে আবার lvdisplay চালান
lvdisplay
আউটপুট:
--- Logical volume ---
LV Path /dev/vg_mysql/mysql_snapshot
LV Name mysql_snapshot
VG Name vg_mysql
স্ন্যাপশট মাউন্ট করুন
mkdir /mnt/mysql_snapshot
mount /dev/vg_mysql/mysql_snapshot /mnt/mysql_snapshot
আপনার যদি বিদ্যমান মাইএসকিউএল স্লেভ চলমান থাকে তবে আপনার এটি বন্ধ করা দরকার
service mysql stop
এর পরে আপনাকে মাইএসকিউএল ডেটা ফোল্ডার সাফ করতে হবে
cd /var/lib/mysql
rm -fr *
মাস্টার ফিরে। এখন স্ন্যাপশটটি মাইএসকিউএল স্লেভ-এ সজ্জিত করুন
rsync --progress -harz /mnt/mysql_snapshot/ targethostname:/var/lib/mysql/
আরএসসিএনসি শেষ হয়ে গেলে আপনি স্ন্যাপশটটি আনমাউন্ট করে মুছে ফেলতে পারেন
umount /mnt/mysql_snapshot
lvremove -f /dev/vg_mysql/mysql_snapshot
যদি পুরানো প্রতিলিপি ব্যবহারকারীর উপস্থিতি বা পাসওয়ার্ড অজানা থাকে তবে মাস্টারে প্রতিলিপি ব্যবহারকারী তৈরি করুন
GRANT REPLICATION SLAVE on *.* to 'replication'@'[SLAVE IP]' identified by 'YourPass';
/ Var / lib / mysql ডেটা ফাইলগুলি mysql ব্যবহারকারীর মালিকানাধীন রয়েছে কিনা তা যাচাই করুন যদি আপনি নীচের আদেশটি বাদ দিতে পারেন:
chown -R mysql:mysql /var/lib/mysql
এরপরে বিনলগ অবস্থান রেকর্ড করুন
ls -laF | grep mysql-bin
এরকম কিছু দেখতে পাবেন
..
-rw-rw---- 1 mysql mysql 1073750329 Aug 28 03:33 mysql-bin.000017
-rw-rw---- 1 mysql mysql 1073741932 Aug 28 08:32 mysql-bin.000018
-rw-rw---- 1 mysql mysql 963333441 Aug 28 15:37 mysql-bin.000019
-rw-rw---- 1 mysql mysql 65657162 Aug 28 16:44 mysql-bin.000020
এখানে মাস্টার লগ ফাইলটি সিকোয়েন্সের সর্বোচ্চ ফাইল নম্বর এবং বিন লগ অবস্থান ফাইলের আকার। এই মানগুলি রেকর্ড করুন:
master_log_file=mysql-bin.000020
master_log_post=65657162
পরবর্তী স্লেভ মাইএসকিউএল শুরু করুন
service mysql start
নিম্নলিখিতটি সম্পাদন করে দাসের উপর মাস্টার কমান্ড পরিবর্তন করুন:
CHANGE MASTER TO
master_host="10.0.0.12",
master_user="replication",
master_password="YourPass",
master_log_file="mysql-bin.000020",
master_log_pos=65657162;
অবশেষে দাসটি শুরু করুন
SLAVE START;
দাসের স্থিতি পরীক্ষা করুন:
SHOW SLAVE STATUS;
নিশ্চিত করুন যে স্লেভ আইও চলছে এবং কোনও সংযোগের ত্রুটি নেই। শুভকামনা!
বিআর, জুহা ভেহনিয়া
আমি সম্প্রতি আমার ব্লগে এটি লিখেছিলাম যা এখানে পাওয়া যায় ... সেখানে আরও কয়েকটি বিশদ রয়েছে তবে গল্পটি একই।
http://www.juhavehnia.com/2015/05/rebuilding-mysql-slave-using-linux-lvm.html
--opt --single-transaction --comments --hex-blob --dump-date --no-autocommit --all-databases