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

मारियाडीबी सर्वर के साथ मायरॉक्स स्टोरेज इंजन का उपयोग करना

मारियाडीबी सर्वर सबसे लोकप्रिय, ओपन सोर्स डेटाबेस सर्वरों में से एक है। यह MySQL के मूल डेवलपर्स द्वारा बनाया गया था और यह तेज, स्केलेबल और मजबूत होने के लिए लोकप्रिय हो गया। MariaDB के पास स्टोरेज इंजन, प्लगइन्स और अन्य टूल्स का एक समृद्ध पारिस्थितिकी तंत्र है जो इसे विभिन्न प्रकार के उपयोग के मामलों के लिए बहुत बहुमुखी बनाता है।

हमारे डेटाबेस की डिस्क स्थान और I/O दक्षता आवश्यकताएं लगातार बढ़ती जा रही हैं। ऐसा इसलिए है कि हम अपनी सूचना वृद्धि को सही तरीके से प्रबंधित करने में सक्षम हैं।

मारियाडीबी स्टोरेज इंजन के लिए, हमारे पास चुनने के लिए विभिन्न प्रकार हैं जैसे कि XtraDB, InnoDB, Aria, या MyISAM। चूंकि MariaDB 10.2.5 संस्करण MyRocks भी उपलब्ध है। MyRocks एक प्रकार का स्टोरेज इंजन है जो वास्तव में हमारे द्वारा पहले बताई गई आवश्यकताओं को पूरा करने में हमारी मदद कर सकता है।

इस ब्लॉग में, हम नए MyRocks इंजन के बारे में और मारियाडीबी सर्वर में इसका उपयोग कैसे कर सकते हैं, इसके बारे में अधिक जानकारी जानेंगे।

मायरॉक्स क्या है?

MyRocks, RocksDB पर आधारित एक ओपन सोर्स स्टोरेज इंजन है जिसे मूल रूप से Facebook द्वारा विकसित किया गया था।

MyRocks एक अच्छा भंडारण समाधान हो सकता है जब आपके पास वर्कलोड होता है जिसके लिए अधिक संपीड़न और I/O दक्षता की आवश्यकता होती है। यह एक लॉग स्ट्रक्चर्ड मर्ज (LSM) आर्किटेक्चर का उपयोग करता है जिसमें InnoDB इंजन द्वारा उपयोग किए जाने वाले B-ट्री एल्गोरिदम की तुलना में बेहतर संपीड़न होता है (InnoDB द्वारा संपीड़ित डेटा की तुलना में 2x बेहतर संपीड़न)। यह एक राइट-ऑप्टिमाइज़्ड स्टोरेज इंजन भी है (InnoDB की तुलना में 10x कम राइट एम्प्लीफिकेशन) और इसमें तेज़ डेटा लोडिंग और प्रतिकृति है। MyRocks सीधे सबसे निचले स्तर पर डेटा लिखता है, जो किसी सत्र के लिए तेज़ डेटा लोडिंग सक्षम करने पर सभी संघनन ओवरहेड्स से बचता है।

एक एलएसएम एक बफर (मेमटेबल) में संशोधित संचालन को संग्रहीत करके और इस बफर के पूर्ण होने पर डेटा को सॉर्ट और संग्रहीत करके काम करता है।

डिफ़ॉल्ट रूप से, तालिकाओं और डेटाबेस को MySQL डेटादिर के अंदर #rocksdb निर्देशिका में संग्रहीत किया जाता है। यह जानकारी प्रति-तालिका पृथक्करण के बिना .sst फ़ाइलों में संग्रहीत है।

MyRocks रीड कमिटेड और रिपीटेबल रीड को अलग-अलग स्तरों का समर्थन करता है और यह SERIALIZABLE का समर्थन नहीं करता है।

MariaDB सर्वर पर MyRocks कैसे लागू करें

इंस्टॉलेशन

सबसे पहले, हमें मारियाडीबी सर्वर स्थापित करने की आवश्यकता है। इस उदाहरण में, हम ऑपरेटिंग सिस्टम के रूप में CentOS Linux रिलीज़ 7.6 का उपयोग करेंगे।

डिफ़ॉल्ट रूप से, यह OS संस्करण MariaDB 5.5 को स्थापित करने का प्रयास करेगा, इसलिए हम MariaDB संस्करण 10.3 को स्थापित करने के लिए MariaDB रिपॉजिटरी जोड़ेंगे।

$ cat > /etc/yum.repos.d/MariaDB.repo <<- EOF
# MariaDB 10.3 CentOS repository
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

और फिर, हम मारियाडीबी सर्वर पैकेज स्थापित करेंगे:

$ yum install MariaDB-server

यह आदेश न केवल मारियाडीबी सर्वर, बल्कि विभिन्न पैकेज निर्भरताएं स्थापित करेगा।

==========================================================================================================================================================================================================
 Package                                                 Arch                                   Version                                                     Repository                               Size
==========================================================================================================================================================================================================
Installing:
 MariaDB-server                                          x86_64                                 10.3.15-1.el7.centos                                        mariadb                                  24 M
Installing for dependencies:
 MariaDB-client                                          x86_64                                 10.3.15-1.el7.centos                                        mariadb                                  11 M
 MariaDB-common                                          x86_64                                 10.3.15-1.el7.centos                                        mariadb                                  78 k
 MariaDB-compat                                          x86_64                                 10.3.15-1.el7.centos                                        mariadb                                 2.8 M
 boost-program-options                                   x86_64                                 1.53.0-27.el7                                               base                                    156 k
 galera                                                  x86_64                                 25.3.26-1.rhel7.el7.centos                                  mariadb                                 8.1 M
 libaio                                                  x86_64                                 0.3.109-13.el7                                              base                                     24 k
 lsof                                                    x86_64                                 4.87-6.el7                                                  base                                    331 k
 make                                                    x86_64                                 1:3.82-23.el7                                               base                                    420 k
 openssl                                                 x86_64                                 1:1.0.2k-16.el7_6.1                                         updates                                 493 k
 perl-Compress-Raw-Bzip2                                 x86_64                                 2.061-3.el7                                                 base                                     32 k
 perl-Compress-Raw-Zlib                                  x86_64                                 1:2.061-4.el7                                               base                                     57 k
 perl-DBI                                                x86_64                                 1.627-4.el7                                                 base                                    802 k
 perl-Data-Dumper                                        x86_64                                 2.145-3.el7                                                 base                                     47 k
 perl-IO-Compress                                        noarch                                 2.061-2.el7                                                 base                                    260 k
 perl-Net-Daemon                                         noarch                                 0.48-5.el7                                                  base                                     51 k
 perl-PlRPC                                              noarch                                 0.2020-14.el7                                               base                                     36 k

Transaction Summary
==========================================================================================================================================================================================================
Install  1 Package (+16 Dependent packages)

डिफ़ॉल्ट रूप से, मारियाडीबी सर्वर इनो डीबी स्टोरेज इंजन के साथ स्थापित है, इसलिए इसका उपयोग करने में सक्षम होने के लिए हमें रॉक्सडीबी इंजन स्थापित करना होगा।

$ yum install MariaDB-rocksdb-engine
==========================================================================================================================================================================================================
 Package                                                  Arch                                     Version                                                Repository                                 Size
==========================================================================================================================================================================================================
Installing:
 MariaDB-rocksdb-engine                                   x86_64                                   10.3.15-1.el7.centos                                   mariadb                                   4.4 M
Installing for dependencies:
 libzstd                                                  x86_64                                   1.3.4-1.el7                                            mariadb                                   211 k
 snappy                                                   x86_64                                   1.1.0-3.el7                                            base                                       40 k

Transaction Summary
==========================================================================================================================================================================================================
Install  1 Package (+2 Dependent packages)

यह आदेश कुछ आवश्यक निर्भरताएँ स्थापित करेगा और यह मारियाडीबी सर्वर पर प्लगइन को सक्षम करेगा। यह /etc/my.cnf.d/rocksdb.cnf:

में एक कॉन्फ़िगरेशन फ़ाइल भी बनाएगा।
[mariadb]
plugin-load-add=ha_rocksdb.so

हम मारियाडीबी सर्वर में SHOW PLUGINS कमांड चलाकर इस इंस्टॉलेशन को सत्यापित कर सकते हैं।

$ MariaDB> SHOW PLUGINS;
+-------------------------------+----------+--------------------+---------------+---------+
| Name                          | Status   | Type               | Library       | License |
+-------------------------------+----------+--------------------+---------------+---------+
...
| ROCKSDB                       | ACTIVE   | STORAGE ENGINE     | ha_rocksdb.so | GPL     |
| ROCKSDB_CFSTATS               | ACTIVE   | INFORMATION SCHEMA | ha_rocksdb.so | GPL     |
| ROCKSDB_DBSTATS               | ACTIVE   | INFORMATION SCHEMA | ha_rocksdb.so | GPL     |
| ROCKSDB_PERF_CONTEXT          | ACTIVE   | INFORMATION SCHEMA | ha_rocksdb.so | GPL     |
| ROCKSDB_PERF_CONTEXT_GLOBAL   | ACTIVE   | INFORMATION SCHEMA | ha_rocksdb.so | GPL     |
| ROCKSDB_CF_OPTIONS            | ACTIVE   | INFORMATION SCHEMA | ha_rocksdb.so | GPL     |
| ROCKSDB_COMPACTION_STATS      | ACTIVE   | INFORMATION SCHEMA | ha_rocksdb.so | GPL     |
| ROCKSDB_GLOBAL_INFO           | ACTIVE   | INFORMATION SCHEMA | ha_rocksdb.so | GPL     |
| ROCKSDB_DDL                   | ACTIVE   | INFORMATION SCHEMA | ha_rocksdb.so | GPL     |
| ROCKSDB_SST_PROPS             | ACTIVE   | INFORMATION SCHEMA | ha_rocksdb.so | GPL     |
| ROCKSDB_INDEX_FILE_MAP        | ACTIVE   | INFORMATION SCHEMA | ha_rocksdb.so | GPL     |
| ROCKSDB_LOCKS                 | ACTIVE   | INFORMATION SCHEMA | ha_rocksdb.so | GPL     |
| ROCKSDB_TRX                   | ACTIVE   | INFORMATION SCHEMA | ha_rocksdb.so | GPL     |
| ROCKSDB_DEADLOCK              | ACTIVE   | INFORMATION SCHEMA | ha_rocksdb.so | GPL     |
+-------------------------------+----------+--------------------+---------------+---------+

यदि किसी कारण से हमारे पास प्लगइन सक्षम नहीं है, तो हम INSTALL SONAME या INSTALL PLUGIN कमांड निष्पादित करके इसे गतिशील रूप से स्थापित कर सकते हैं:

$ MariaDB> INSTALL SONAME 'ha_rocksdb';

एक अन्य विकल्प डेटाबेस सेवाओं को पुनरारंभ करना हो सकता है। इस क्रिया को /etc/my.cnf.d/rocksdb.cnf फ़ाइल को पढ़ना चाहिए और प्लगइन को सक्षम करना चाहिए।

$ service mariadb restart

हम निम्नलिखित कमांड का उपयोग करके अपने रॉक्सडीबी इंजन के बारे में विस्तृत जानकारी प्राप्त कर सकते हैं:

$ SHOW ENGINE ROCKSDB STATUS

कॉन्फ़िगरेशन

विन्यास फाइलों के बारे में, मुख्य है /etc/my.cnf, जिसमें निर्देशिका /etc/my.cnf.d शामिल है जहां हम बाकी विन्यास फाइल पा सकते हैं। इस निर्देशिका में, हमारे पास डिफ़ॉल्ट रूप से निम्न कॉन्फ़िगरेशन फ़ाइलें होंगी:

  • enable_encryption.preset:यह बाकी एन्क्रिप्शन पर डेटा को सक्षम करेगा।
  • mysql-clients.cnf:यहां [mysqladmin], [mysqlcheck], [mysqldump] और अन्य जैसे विभिन्न समूहों के लिए कॉन्फ़िगरेशन हैं।
  • rocksdb.cnf:इस फ़ाइल में, हम MyRocks के लिए विशिष्ट कॉन्फ़िगरेशन जोड़ेंगे, जैसे कि डिफ़ॉल्ट-स्टोरेज-इंजन या Rocksdb_block_size।
  • server.cnf:यहां हमारे पास डेटाबेस सर्वर से संबंधित कॉन्फ़िगरेशन है जैसे बाइंड-एड्रेस और binlog_format।

सभी MyRocks सिस्टम चर और स्थिति चर "rocksdb" के साथ पहले से तैयार हैं। आइए इस पर एक नजर डालते हैं।

सिस्टम चर:

$ MariaDB> SHOW VARIABLES LIKE 'rocksdb%';
+-------------------------------------------------+------------------------------------------+
| Variable_name                                   | Value                                    |
+-------------------------------------------------+------------------------------------------+
| rocksdb_access_hint_on_compaction_start         | 1                                        |
| rocksdb_advise_random_on_open                   | ON                                       |
| rocksdb_allow_concurrent_memtable_write         | OFF                                      |
| rocksdb_allow_mmap_reads                        | OFF                                      |
| rocksdb_allow_mmap_writes                       | OFF                                      |
| rocksdb_allow_to_start_after_corruption         | OFF                                      |
| rocksdb_blind_delete_primary_key                | OFF                                      |
| rocksdb_block_cache_size                        | 536870912                                |
| rocksdb_block_restart_interval                  | 16                                       |
| rocksdb_block_size                              | 4096                                     |
…
+-------------------------------------------------+------------------------------------------+

स्थिति चर:

$ MariaDB> SHOW STATUS LIKE 'rocksdb%';
+----------------------------------------------------+-------+
| Variable_name                                      | Value |
+----------------------------------------------------+-------+
| Rocksdb_rows_deleted                               | 0     |
| Rocksdb_rows_inserted                              | 0     |
| Rocksdb_rows_read                                  | 0     |
| Rocksdb_rows_updated                               | 0     |
| Rocksdb_rows_deleted_blind                         | 0     |
| Rocksdb_rows_expired                               | 0     |
| Rocksdb_rows_filtered                              | 0     |
| Rocksdb_system_rows_deleted                        | 0     |
| Rocksdb_system_rows_inserted                       | 0     |
| Rocksdb_system_rows_read                           | 0     |
…
+----------------------------------------------------+-------+

आप मारियाडीबी वेबसाइट पर स्थिति और सिस्टम चर के बारे में अधिक जानकारी प्राप्त कर सकते हैं।

MyRocks का उपयोग करके MariaDB के लिए बैकअप

सभी डेटाबेस वातावरण में बैकअप आवश्यक हैं। वे सिस्टम पुनर्प्राप्ति, माइग्रेशन, ऑडिटिंग, परीक्षण आदि के लिए आवश्यक हैं।

हम बैकअप को दो अलग-अलग प्रकारों में वर्गीकृत कर सकते हैं, तार्किक और भौतिक। तार्किक बैकअप को SQL जैसे मानव-पठनीय प्रारूप में संग्रहीत किया जाता है, और भौतिक बैकअप में अतिरिक्त बाइनरी डेटा होता है।

डेटाबेस इंजन के रूप में MyRocks के साथ MariaDB पर तार्किक बैकअप के लिए, सबसे सामान्य बैकअप टूल क्लासिक mysqldump है:

$ mysqldump -hHOST -uUSER -p DATABASE > FILE.SQL

और भौतिक बैकअप के लिए, हम मारियाबैकअप का उपयोग कर सकते हैं जो MyRocks के साथ संगत है:

$ mariabackup --backup --target-dir=/backup/ --user=USER --password=PASSWORD --host=HOST

एक अन्य विकल्प फेसबुक द्वारा बनाया गया myrocks_hotbackup हो सकता है। इसका उपयोग स्रोत इंस्टेंस को रोके बिना, चल रहे MyRocks इंस्टेंस से स्थानीय या दूरस्थ सर्वर पर एक भौतिक प्रतिलिपि लेने के लिए किया जा सकता है।

MariaDB के लिए MyRocks के उपयोग की सीमाएं

आइए MyRocks इंजन के उपयोग की कुछ सीमाओं को देखें...

  • MariaDB की आशावादी समानांतर प्रतिकृति समर्थित नहीं हो सकती है
  • 32-बिट प्लेटफॉर्म के लिए MyRocks उपलब्ध नहीं है
  • मारियाडीबी क्लस्टर (गैलेरा क्लस्टर) MyRocks (केवल InnoDB या XtraDB स्टोरेज इंजन) के साथ काम नहीं करता है
  • लेनदेन स्मृति में फिट होना चाहिए
  • डेटा लोड करने के लिए विशेष सेटिंग्स की आवश्यकता है
  • SERIALIZABLE समर्थित नहीं है
  • परिवहन योग्य तालिका स्थान, विदेशी कुंजी, स्थानिक अनुक्रमणिका, और पूर्ण पाठ अनुक्रमणिका समर्थित नहीं हैं

निष्कर्ष

MyRocks 10.2.5 से ऊपर के संस्करणों से MariaDB में उपलब्ध है। जैसा कि हमने पहले उल्लेख किया है, यह स्टोरेज इंजन आपके लिए तब उपयोगी हो सकता है जब आपके पास वर्कलोड हो जिसके लिए उच्च डेटा संपीड़न और I/O दक्षता के उच्च स्तर की आवश्यकता होती है। MyRocks के बारे में अधिक जानने के लिए आप इसे देख सकते हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मारियाडीबी CURRENT_DATE() समझाया गया

  2. अपने MySQL या MariaDB डेटाबेस को AWS और Google क्लाउड पर अत्यधिक उपलब्ध कैसे करें

  3. मारियाडीबी NULLIF () समझाया गया

  4. मारियाडीबी में यूनियन का उपयोग करते समय "त्रुटि 1222 (21000):उपयोग किए गए चयन कथनों में कॉलम की एक अलग संख्या होती है" ठीक करें

  5. मारियाडीबी में लाइक ऑपरेटर कैसे काम करता है?