मारियाडीबी सर्वर सबसे लोकप्रिय, ओपन सोर्स डेटाबेस सर्वरों में से एक है। यह 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 के बारे में अधिक जानने के लिए आप इसे देख सकते हैं।