Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

ClusterControl के साथ अपने MySQL और MariaDB बैकअप को कैसे अनुकूलित करें

ClusterControl की केंद्रीकृत बैकअप प्रबंधन सुविधा, MariaDB द्वारा प्रदान किए गए मानक mysqldump, Percona Xtrabackup बैकअप और Mariabackup का समर्थन करती है। हम मानते हैं कि संबंधित विधियों के लिए चुने गए कमांड लाइन तर्क अधिकांश डेटाबेस वर्कलोड के लिए इष्टतम हैं, और MySQL बैकअप सर्वोत्तम प्रथाओं का अनुपालन करते हैं। DBA और sysadmins के साथ काम करते समय, हम वर्षों से प्राप्त सभी फीडबैक पर खुद को आधारित करते हैं। हालाँकि, कुछ परिस्थितियों में कॉन्फ़िगरेशन पर्याप्त नहीं हो सकता है। संबंधित बैकअप विधि का उपयोग करके आप अभी भी इसे अपने परिवेश के अनुरूप अनुकूलित करना चाह सकते हैं। इस पोस्ट में, हम आपको दिखाएंगे कि यह कैसे करना है।

mysqldump

ClusterControl UI से बैकअप करने के लिए, ClusterControl -> सेलेक्ट क्लस्टर -> बैकअप सेक्शन पर जाएँ। यहां आप जेनरेट किए गए बैकअप देख सकते हैं और आप एक नया बना या शेड्यूल कर सकते हैं।

ClusterControl UI से, हमारे पास बैकअप लेने के लिए कुछ भिन्न विकल्प हैं। हम प्रत्येक डेटाबेस के लिए एक डंपफाइल बना सकते हैं, आंशिक बैकअप सक्षम कर सकते हैं, बैकअप को नोड पर या क्लस्टरकंट्रोल सर्वर पर स्टोर कर सकते हैं; हम बैकअप निर्देशिका और उपनिर्देशिका निर्दिष्ट कर सकते हैं, या हम क्लाउड अपलोड सुविधा का उपयोग करके बैकअप को स्वचालित रूप से क्लाउड (AWS, Google क्लाउड या Azure) में संग्रहीत कर सकते हैं।

साथ ही, हम संपीड़न का उपयोग कर सकते हैं, अपने बैकअप को एन्क्रिप्ट कर सकते हैं और अवधारण अवधि निर्दिष्ट कर सकते हैं।

डिफ़ॉल्ट रूप से, ClusterControl हमें बैकअप करने के लिए 4 अलग-अलग डंप प्रकारों के बीच चयन करने की अनुमति देता है:

  • स्कीमा और डेटा:डेटाबेस स्कीमा और डेटा
  • केवल स्कीमा:डेटाबेस स्कीमा
  • केवल डेटा:डेटाबेस डेटा
  • केवल MySQL Db:MySQL सिस्टम डेटाबेस

मान लें कि हमारे पास 5 डेटाबेस हैं और हमने उन सभी का बैकअप लेना चुना है। यहाँ बताया गया है कि mysqldump विधि का उपयोग करके बैकअप निष्पादित करते समय ClusterControl क्या निष्पादित करेगा (आदेश पठनीयता के लिए बैकस्लैश के साथ ट्रिम किए गए हैं):

  • स्कीमा और डेटा
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --single-transaction \
    --skip-lock-tables \
    --triggers \
    --routines \
    --events \
    --set-gtid-purged=OFF \
    --databases mysql proxydemo sakila sbtest mydb \
    --ignore-table='mysql.innodb_index_stats' \
    --ignore-table='mysql.innodb_table_stats' \
    |gzip -6 -c > /root/backups/BACKUP-1/mysqldump_2018-11-06_203010_schemaanddata.sql.gz'.
  • केवल स्कीमा
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --no-data \
    --add-drop-table \
    --triggers \
    --routines \
    --events \
    --single-transaction \
    --skip-comments \
    --skip-lock-tables \
    --set-gtid-purged=OFF \
    --databases mysql proxydemo sakila sbtest mydb \
    |gzip -6 -c > /root/backups/BACKUP-2/mysqldump_2018-11-06_210040_schemaonly.sql.gz'.
  • केवल डेटा
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --no-create-info \
    --single-transaction \
    --skip-comments \
    --skip-lock-tables \
    --skip-triggers \
    --skip-add-locks \
    --set-gtid-purged=OFF \
    --databases mysql proxydemo sakila sbtest mydb \
    --ignore-table='mysql.innodb_index_stats' \
    --ignore-table='mysql.innodb_table_stats' \
    |gzip -6 -c > /root/backups/BACKUP-3/mysqldump_2018-11-06_210445_dataonly.sql.gz'.
  • MySQL DB केवल
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --single-transaction \
    --skip-comments \
    --skip-lock-tables \
    --skip-add-locks \
    --set-gtid-purged=OFF mysql \
    |gzip -6 -c > /root/backups/BACKUP-5/mysqldump_2018-11-06_211135_mysqldbonly.sql.gz'.

यदि हमारा MySQL नोड बाइनरी लॉग उत्पन्न कर रहा है, तो हमारे पास पैरामीटर मास्टर-डेटा =2 उपरोक्त कमांड में शामिल होगा और 1 अतिरिक्त डंप प्रकार उपलब्ध होगा:

  • पूर्ण PITR-संगत
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --master-data=1 \
    --single-transaction \
    --skip-lock-tables \
    --skip-lock-tables \
    --triggers \
    --routines \
    --events \
    --all-databases \
    |gzip -6 -c > /root/backups/BACKUP-6/mysqldump_2018-11-06_211451_complete.sql.gz'.

उपरोक्त कमांड लाइन से, हम देख सकते हैं कि प्रत्येक mysqldump कमांड पर, ClusterControl MySQL कॉन्फ़िगरेशन फ़ाइल को इसके --defaults-file तर्क में शामिल करता है। इसके होने से, mysqldump प्रक्रिया mysqldump निर्देश की सामग्री को पढ़ने में सक्षम है। डिफ़ॉल्ट रूप से ClusterControl बैकअप उपयोगकर्ता क्रेडेंशियल को /etc/my.cnf.d/secrets-backup.cnf और my.cnf में max_allowed_packet में एक अलग फ़ाइल में कॉन्फ़िगर करता है, जो निम्न के जैसा है:

$ my.cnf

[mysqldump]
max_allowed_packet = 512M
# default_character_set = utf8

$ secrets-backup.cnf

[mysqldump]
user=backupuser
password=ETgAG5VnpvuyXniE

इसका फायदा यह है कि हम mysqldump के लिए कुछ अतिरिक्त विकल्प शामिल कर सकते हैं। दुर्भाग्य से, --defaults-file तर्क को केवल सबसे प्रमुख तर्क के रूप में निर्दिष्ट किया जा सकता है। ध्यान दें कि बाद के कमांड लाइन तर्कों को my.cnf के अंदर [mysqldump] निर्देश के तहत कॉन्फ़िगर किए गए क्रम के आधार पर प्राथमिकता दी जाती है। उदाहरण के लिए, यदि हम my.cnf के अंदर स्किप-टिप्पणियां =0 जोड़ते हैं, जबकि mysqldump कमांड के अंत में, एक --स्किप-टिप्पणियां (या --स्किप-टिप्पणियां =1) है, पूर्व को अनदेखा कर दिया जाएगा और बाद वाले का उपयोग किया जाएगा।

फिर भी, हम अभी भी अन्य mysqldump बैकअप विकल्पों का उपयोग करके इसे अपने बैकअप अनुकूलन के भाग के रूप में उपयोग कर सकते हैं। उदाहरण के लिए, हम अनदेखा-तालिका पैरामीटर ("डेटाबेस.टेबल" स्वरूपण के साथ) का उपयोग करके उन तालिकाओं को बाहर कर सकते हैं जिनका हम बैकअप नहीं लेना चाहते हैं। MySQL कॉन्फ़िगरेशन फ़ाइल में निम्न पंक्तियाँ जोड़ें:

[mysqldump]
max_allowed_packet = 512M
# default_character_set = utf8
ignore-table=sbtest.sbtest9
ignore-table=sbtest.sbtest10
ignore-table=sbtest.sbtest1

एक बार कॉन्फ़िगर करने के बाद, हम बस ClusterControl से एक नया mysqldump कार्य ट्रिगर कर सकते हैं और हमारे पास उन तालिकाओं को mysqldump द्वारा छोड़ दिया जाएगा। किसी MySQL पुनरारंभ की आवश्यकता नहीं है।

अधिक जानकारी के लिए आप mysqldump दस्तावेज़ देख सकते हैं।

पेरकोना एक्स्ट्राबैकअप

ClusterControl आपके द्वारा चुने गए विकल्पों के आधार पर Xtrabackup निष्पादित करता है। यह पूर्ण या वृद्धिशील हो सकता है और आप ClusterControl UI से कई चर चुन सकते हैं। निम्नलिखित पर विचार करें:

इस चरण में आप कुछ वेरिएबल्स चुन सकते हैं जिनका उल्लेख हमने पहले mysqldump सेक्शन में किया था, और फिर:

हम कुछ विवरण निर्दिष्ट कर सकते हैं जैसे बैकअप के दौरान desync नोड, एक्स्ट्राबैकअप पैरेलल कॉपी थ्रेड, और बहुत कुछ।

उपरोक्त विकल्पों के आधार पर, पूरा Xtrabackup कमांड होगा:

$ ulimit -n 256000 && LC_ALL=C /usr/bin/innobackupex --defaults-file=/etc/mysql/my.cnf  --galera-info --parallel 1 --stream=xbstream --no-timestamp . | gzip -6 - | socat - TCP4:192.168.100.110:9999 ) 2>&1.

पहला आदेश "ulimit -n 256000" यह सुनिश्चित करने के लिए है कि Percona Xtrabackup के पास बड़ी संख्या में फ़ाइल डिस्क्रिप्टर तक पहुंचने के लिए पर्याप्त विशेषाधिकार हैं (यदि डेटाबेस में कई टेबल हैं)। --defaults-file=/etc/mysql/my.cnf पर ध्यान दें, जो mysqldump के समान है, जहां innobackupex निम्नलिखित निर्देशों और चरों पर MySQL कॉन्फ़िगरेशन की सामग्री को पढ़ता है:

[mysqld]
datadir=[physical path to MySQL data directory]
tmpdir=[path to temporary directory]
[xtrabackup]
user=backupuser
password=[random password]

यदि आप Percona Xtrabackup के लिए बैकअप विकल्पों को अनुकूलित करना चाहते हैं, तो आप उन्हें सीधे [xtrabackup] निर्देश के तहत जोड़ सकते हैं। उदाहरण के लिए, मान लें कि हम चाहते हैं कि बैकअप लेने पर Xtrabackup बाइनरी लॉग स्थिति को प्रिंट करे, हम कुछ इस तरह जोड़ सकते हैं:

[xtrabackup]
user=backupuser
password=[random password]
slave-info=1

xtrabackup कार्य को ट्रिगर करने के बाद xtrabackup_slave_info फ़ाइल नामक फ़ाइल शामिल होगी। किसी MySQL पुनरारंभ की आवश्यकता नहीं है।

यह कैसे काम करता है, इसके बारे में अधिक जानकारी के लिए आप पेरकोना दस्तावेज़ देख सकते हैं।

मारियाबैकअप

मारियाबैकअप पेरकोना एक्स्ट्राबैकअप का एक कांटा है जिसमें मारियाडीबी 10.1 संपीड़न और डेटा-एट-रेस्ट एन्क्रिप्शन के लिए अतिरिक्त समर्थन है। इसे मारियाडीबी 10.1.23 और बाद के संस्करण के साथ शामिल किया गया है।

बैकअप विधि पूर्ण या वृद्धिशील हो सकती है और आप उन्हीं चरों का चयन कर सकते हैं जो आपके पास Percona XtraBackup के लिए हैं, जैसे संपीड़न, Xtrabackup समानांतर प्रतिलिपि थ्रेड या एन्क्रिप्शन।

मारियाबैकअप कमांड होगी:

$ /usr/bin/mariabackup \
--defaults-file=/etc/my.cnf \
--backup \
--galera-info \
--parallel 1 \
--stream=xbstream \
--no-timestamp \
| gzip -6 - > /root/backups/BACKUP-8/backup-full-2018-11-07_015807.xbstream.gz ) 2>&1.

मारियाबैकअप पेरकोना एक्स्ट्राबैकअप पर आधारित है, इसलिए यह उसी जानकारी का उपयोग करता है जो पेरकोना बैकअप करने के लिए करती है। डिफ़ॉल्ट रूप से, ClusterControl my.cnf फ़ाइल में निम्न पंक्तियाँ जोड़ता है:

[xtrabackup]
databases-exclude=lost+found
# ssl_mode = DISABLED
ssl = 0

और रहस्य-बैकअप.cnf फ़ाइल में क्रेडेंशियल:

[xtrabackup]
user=backupuser
password=[random password]

यदि आप कुछ चर जोड़ना चाहते हैं, तो आप इसे [xtrabackup] अनुभाग में जोड़ सकते हैं।

आप किस पैरामीटर को जोड़ना है, इसके बारे में अधिक जानकारी के लिए आप MariaDB दस्तावेज़ देख सकते हैं।

प्रत्येक मामले में, आप क्लस्टरकंट्रोल UI पर बैकअप अनुभाग से अपने बैकअप की जांच कर सकते हैं:

हमें उम्मीद है कि इससे आपको अपने MySQL बैकअप को बेहतर ढंग से कॉन्फ़िगर करने में मदद मिलेगी - आप हमारी वेबसाइट से ClusterControl डाउनलोड कर सकते हैं (यह मुफ़्त है)।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जावा में युग को mySQL टाइमस्टैम्प में कैसे बदलें

  2. मैं OUTFILE में चयन के साथ MySQL Errcode 13 को कैसे प्राप्त कर सकता हूं?

  3. क्या MySQL में ट्री स्ट्रक्चर टेबल को एक ही क्वेरी में, किसी भी गहराई तक क्वेरी करना संभव है?

  4. CHAR () MySQL में उदाहरण

  5. Neo4j - Cypher . का उपयोग करके एक इंडेक्स ड्रॉप करें