LVM का उपयोग करके गुलाम का पुनर्निर्माण
यहां वह विधि है जिसका उपयोग हम लिनक्स एलवीएम का उपयोग करके MySQL दासों के पुनर्निर्माण के लिए करते हैं। यह आपके स्वामी पर बहुत कम डाउनटाइम की आवश्यकता के दौरान एक सुसंगत स्नैपशॉट की गारंटी देता है।
मास्टर MySQL सर्वर पर शून्य से अधिकतम गंदे पृष्ठ प्रतिशत सेट करें। यह MySQL को डिस्क के सभी पृष्ठों को लिखने के लिए मजबूर करेगा जो पुनरारंभ को काफी तेज करेगा।
set global innodb_max_dirty_pages_pct = 0;
गंदे पृष्ठों की संख्या की निगरानी के लिए कमांड चलाएं
mysqladmin ext -i10 | grep dirty
एक बार संख्या कम हो जाने के बाद आप जारी रखने के लिए पहुँच गए हैं। अगली बार पुराने बिन लॉग / रिले लॉग को खाली करने के लिए मास्टर को रीसेट करें:
RESET MASTER;
LV पथ प्राप्त करने के लिए lvdisplay निष्पादित करें
lvdisplay
आउटपुट इस तरह दिखेगा
--- Logical volume ---
LV Path /dev/vg_mysql/lv_data
LV Name lv_data
VG Name vg_mysql
कमांड के साथ मास्टर डेटाबेस को बंद करें
service mysql stop
इसके बाद एक स्नैपशॉट लें, mysql_snapshot नया लॉजिकल वॉल्यूम नाम होगा। यदि बिनलॉग ओएस ड्राइव पर होते हैं, तो उन्हें स्नैपशॉट भी होना चाहिए।
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
यदि आपके पास मौजूदा MySQL गुलाम है तो आपको इसे रोकने की आवश्यकता है
service mysql stop
इसके बाद आपको MySQL डेटा फ़ोल्डर साफ़ करना होगा
cd /var/lib/mysql
rm -fr *
वापस मास्टर के पास। अब स्नैपशॉट को MySQL स्लेव में rsync करें
rsync --progress -harz /mnt/mysql_snapshot/ targethostname:/var/lib/mysql/
एक बार rsync पूरा हो जाने पर आप स्नैपशॉट को अनमाउंट कर सकते हैं और हटा सकते हैं
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
इसके बाद गुलाम MySQL शुरू करें
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;
सुनिश्चित करें कि गुलाम IO चल रहा है और कोई कनेक्शन त्रुटियाँ नहीं हैं। सौभाग्य!
बीआर, जुहा वाहनिया
मैंने हाल ही में अपने ब्लॉग पर यह लिखा है जो यहाँ पाया गया है ... वहाँ कुछ और विवरण हैं लेकिन कहानी समान है।
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