अपने पिछले ब्लॉग में हमने बताया था कि कैसे क्लोन प्लगिन, जो कि MySQL 8.0.17 में दिखाई गई नई सुविधाओं में से एक है, का उपयोग प्रतिकृति स्लेव के पुनर्निर्माण के लिए किया जा सकता है। वर्तमान में इसके लिए और साथ ही बैकअप के लिए जाने वाला टूल Xtrabackup है। हमने सोचा कि यह तुलना करना दिलचस्प है कि वे उपकरण कैसे काम करते हैं और कैसे व्यवहार करते हैं।
प्रदर्शन की तुलना करना
पहली चीज जिसे हमने परखने का फैसला किया, वह यह है कि जब डेटा की कॉपी को स्थानीय रूप से संग्रहीत करने की बात आती है तो दोनों कैसा प्रदर्शन करते हैं। हमने दो एनवीएमई एसएसडी के साथ एडब्ल्यूएस और एम5डी.मेटल इंस्टेंस का इस्तेमाल किया और हमने क्लोन को स्थानीय कॉपी में चलाया:
mysql> CLONE LOCAL DATA DIRECTORY='/mnt/clone/';
Query OK, 0 rows affected (2 min 39.77 sec)
फिर हमने एक्स्ट्राबैकअप का परीक्षण किया और स्थानीय प्रतिलिपि बनाई:
rm -rf /mnt/backup/ ; time xtrabackup --backup --target-dir=/mnt/backup/ --innodb-file-io-threads=8 --innodb-read-io-threads=8 --innodb-write-io-threads=8 --innodb-io-capacity=20000 --parallel=16
200120 13:12:28 completed OK!
real 2m38.407s
user 0m45.181s
sys 4m18.642s
जैसा कि आप देख सकते हैं, डेटा को कॉपी करने के लिए आवश्यक समय मूल रूप से समान था। दोनों ही मामलों में सीमा हार्डवेयर की थी, सॉफ्टवेयर की नहीं।
डेटा को किसी अन्य सर्वर पर स्थानांतरित करना दोनों उपकरणों के लिए सबसे आम उपयोग का मामला होगा। यह एक गुलाम हो सकता है जिसे आप प्रावधान या पुनर्निर्माण करना चाहते हैं। भविष्य में यह एक बैकअप हो सकता है, क्लोन प्लगइन में अभी तक ऐसी कार्यक्षमता नहीं है, लेकिन हमें पूरा यकीन है कि भविष्य में कोई इसे बैकअप टूल के रूप में उपयोग करना संभव बना देगा। यह देखते हुए कि हार्डवेयर दोनों ही मामलों में स्थानीय बैकअप के लिए सीमा है, हार्डवेयर भी पूरे नेटवर्क में डेटा स्थानांतरित करने के लिए एक सीमा होगी। आपके सेटअप के आधार पर, यह या तो नेटवर्क, डिस्क I/O या CPU हो सकता है।
एक I/O-गहन संचालन में CPU सबसे कम आम अड़चन है। यह डेटा सेट आकार में कमी के लिए कुछ CPU उपयोग का व्यापार करना काफी सामान्य बनाता है। आप इसे संपीड़न के माध्यम से पूरा कर सकते हैं। यदि यह मक्खी पर किया जाता है, तो आपको अभी भी उतनी ही मात्रा में डेटा पढ़ना होगा, लेकिन आप इसे कम (क्योंकि यह संपीड़ित है) नेटवर्क पर भेजते हैं। फिर, आपको इसे डीकंप्रेस करना होगा और इसे लिखना होगा। यह भी संभव है कि फ़ाइलें स्वयं संपीड़ित हों। उस स्थिति में आप डिस्क पर पढ़े, स्थानांतरित और लिखे गए डेटा की मात्रा को कम कर देते हैं।
क्लोन प्लगिन और एक्स्ट्राबैकअप दोनों ही ऑन-द-फ्लाई कम्प्रेशन के साथ आते हैं (हम केनी ग्रिप को धन्यवाद देना चाहते हैं, जिन्होंने हमें इस बिट में सुधार किया)। क्लोन प्लगइन में आप इसे क्लोन_इनेबल_कंप्रेशन के माध्यम से सक्षम कर सकते हैं, जो डिफ़ॉल्ट रूप से अक्षम है। Xtrabackup डेटा को संपीड़ित करने के लिए बाहरी उपकरणों का भी उपयोग कर सकता है। संकुचित InnoDB तालिकाओं के मामले में, बाहरी संपीड़न से बहुत अधिक फर्क नहीं पड़ेगा, इसलिए नेटवर्क बैंडविड्थ सीमित कारक होने की स्थिति में दोनों उपकरणों को समान तरीके से प्रदर्शन करना चाहिए।
उपयोगिता की तुलना करना
प्रदर्शन केवल एक चीज है जिसकी तुलना की जा सकती है, कई अन्य हैं जैसे कि उपयोग करने के लिए आसान उपकरण। दोनों ही मामलों में आपको कई कदम उठाने होंगे। क्लोन प्लगइन के लिए यह है:
- सभी नोड्स पर प्लगइन स्थापित करें
- दाता और प्राप्तकर्ता दोनों नोड्स पर उपयोगकर्ता बनाएं
- प्राप्तकर्ता पर दाता सूची सेट करें
उन तीन चरणों को एक बार करना है। जब वे सेट हो जाते हैं, तो आप डेटा कॉपी करने के लिए क्लोन प्लगइन का उपयोग कर सकते हैं। इनिट सिस्टम के आधार पर क्लोन प्रक्रिया पूरी होने के बाद आपको MySQL नोड शुरू करने की आवश्यकता हो सकती है। यह आवश्यक नहीं है, अगर सिस्टमड के मामले में, MySQL स्वचालित रूप से पुनरारंभ हो जाएगा।
Xtrabackup को काम पूरा करने के लिए कुछ और चरणों की आवश्यकता है।
- सॉफ़्टवेयर को सभी नोड्स पर इंस्टॉल करें
- दाता पर उपयोगकर्ता बनाएं
उन दो चरणों को एक बार निष्पादित करना होगा। प्रत्येक बैकअप के लिए आपको निम्न चरणों को निष्पादित करना होगा:
- नेटवर्क स्ट्रीमिंग कॉन्फ़िगर करें। SSH का उपयोग करने का सरल और सुरक्षित तरीका कुछ इस तरह होगा:
xtrabackup --backup --innodb-file-io-threads=8 --innodb-read-io-threads=8 --innodb-write-io-threads=8 --innodb-io-capacity=20000 --parallel=8 --stream=xbstream --target-dir=/mnt/backup/ | ssh [email protected] "xbstream -x -C /mnt/backup/"
हालांकि, हमने पाया कि तेज हार्डड्राइव के लिए सिंगल-थ्रेडेड SSH के साथ, CPU एक अड़चन बन जाता है। नेटकैट को सेट करने के लिए रिसीवर पर अतिरिक्त कदम की आवश्यकता होती है ताकि यह सुनिश्चित हो सके कि नेटकैट ऊपर है, ट्रैफ़िक को उचित सॉफ़्टवेयर (xbstream) पर सुन और पुनर्निर्देशित कर रहा है।
-
रिसीवर नोड पर MySQL को रोकें
-
एक्सट्राबैकअप चलाएं
-
InnoDB लॉग लागू करें
-
डेटा वापस कॉपी करें
-
रिसीवर नोड पर MySQL प्रारंभ करें
जैसा कि आप देख सकते हैं, एक्स्ट्राबैकअप को और कदम उठाने की जरूरत है।
सुरक्षा संबंधी बातें
क्लोन प्लगइन को डेटा ट्रांसफर के लिए एसएसएल का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है, भले ही डिफ़ॉल्ट रूप से यह सादे पाठ का उपयोग करता हो। एन्क्रिप्टेड टेबलस्पेस की क्लोनिंग संभव है लेकिन एन्क्रिप्ट करने का कोई विकल्प नहीं है, उदाहरण के लिए, स्थानीय क्लोन। क्लोन प्रक्रिया पूरी होने के बाद उपयोगकर्ता को इसे अलग से करना होगा।
Xtrabackup स्वयं कोई सुरक्षा प्रदान नहीं करता है। सुरक्षा इस बात से निर्धारित होती है कि आप डेटा को कैसे स्ट्रीम करते हैं। यदि आप स्ट्रीमिंग के लिए SSH का उपयोग करते हैं, तो ट्रांज़िट में डेटा एन्क्रिप्ट किया जाएगा। यदि आप नेटकैट का उपयोग करने का निर्णय लेते हैं, तो इसे एक सादे पाठ के रूप में भेजा जाएगा। बेशक, यदि डेटा टेबलस्पेस में एन्क्रिप्ट किया गया है, तो यह पहले से ही सुरक्षित है, जैसे कि क्लोन प्लगइन के मामले में। यह सुनिश्चित करने के लिए कि आपका डेटा आराम से भी एन्क्रिप्ट किया गया है, एक्स्ट्राबैकअप का उपयोग ऑन-द-फ्लाई एन्क्रिप्शन के साथ भी किया जा सकता है।
प्लगइन सुविधाएं
क्लोन प्लगिन एक नया उत्पाद है, जो अभी शिशु अवस्था में है। इसका प्राथमिक कार्य InnoDB क्लस्टर में नोड्स को प्रोविज़न करने के तरीके प्रदान करना है और यह ठीक ही करता है। अन्य कार्यों के लिए, जैसे बैकअप या प्रतिकृति दासों का प्रावधान, इसका उपयोग कुछ हद तक किया जा सकता है लेकिन यह कई सीमाओं से ग्रस्त है। हमने उनमें से कुछ को अपने पिछले ब्लॉग में कवर किया था, इसलिए हम इसे यहां नहीं दोहराएंगे, लेकिन सबसे गंभीर बात, जब प्रोविजनिंग और बैकअप के बारे में बात की जाती है, तो यह है कि केवल InnoDB टेबल क्लोन किए जाते हैं। यदि आप किसी अन्य स्टोरेज इंजन का उपयोग करते हैं, तो आप वास्तव में क्लोन प्लगइन का उपयोग नहीं कर सकते। दूसरी ओर, Xtrabackup सबसे अधिक उपयोग किए जाने वाले स्टोरेज इंजनों का खुशी से बैकअप और ट्रांसफर करेगा:InnoDB, MyISAM (दुर्भाग्य से, यह अभी भी कई जगहों पर उपयोग किया जाता है) और CSV। Xtrabackup टूल के एक सेट के साथ भी आता है जिसका उद्देश्य डेटा को नोड से नोड तक स्ट्रीम करने या यहां तक कि S3 बकेट में बैकअप स्ट्रीम करने में मदद करना है।
इसे संक्षेप में कहें तो, जब डेटा का बैकअप लेने और प्रतिकृति दासों का प्रावधान करने की बात आती है, तो xtrabackup सबसे लोकप्रिय पिक है और सबसे अधिक संभावना है। दूसरी ओर, क्लोन प्लगइन, सबसे अधिक संभावना है, सुधार और विकसित होगा। हम देखेंगे कि भविष्य में क्या होगा और एक साल में चीजें कैसी दिखेंगी।
यदि आपके पास क्लोन प्लगइन के बारे में कोई विचार है, तो हमें बताएं, हमें यह देखने में बहुत दिलचस्पी है कि इस नए टूल पर आपकी क्या राय है।