MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Използване на MyRocks Storage Engine с MariaDB сървър

MariaDB Server е един от най-популярните сървъри за бази данни с отворен код. Създаден е от оригиналните разработчици на MySQL и стана популярен с това, че е бърз, мащабируем и здрав. MariaDB има богата екосистема от машини за съхранение, плъгини и други инструменти, които я правят много гъвкава за голямо разнообразие от случаи на употреба.

Изискванията за дисково пространство и I/O ефективност на нашите бази данни продължават да нарастват. Това е така, за да можем да управляваме правилно нарастването на информацията си.

Що се отнася до механизма за съхранение на MariaDB, имаме различни типове, от които да избирате, като XtraDB, InnoDB, Aria или MyISAM. От версията на MariaDB 10.2.5 се предлага и MyRocks. MyRocks е тип двигател за съхранение, който наистина може да ни помогне да изпълним изискванията, които споменахме по-рано.

В този блог ще научим повече информация за новия двигател MyRocks и как можем да го използваме в сървър на MariaDB.

Какво е MyRocks?

MyRocks е двигател за съхранение с отворен код, базиран на RocksDB, който първоначално е разработен от Facebook.

MyRocks може да бъде добро решение за съхранение, когато имате натоварвания, които изискват по-голяма компресия и I/O ефективност. Той използва архитектура на Log Structured Merge (LSM), която има по-добра компресия от алгоритмите на B-дървото, използвани от двигателя InnoDB (2 пъти по-добра компресия в сравнение с данните, компресирани от InnoDB). Освен това е оптимизирана за запис машина за съхранение (10 пъти по-малко усилване при запис в сравнение с InnoDB) и има по-бързо зареждане и репликация на данни. MyRocks записва данни директно на най-долното ниво, което избягва всички разходи за уплътняване, когато активирате по-бързото зареждане на данни за сесия.

LSM работи, като съхранява операции за промяна в буфер (memtable) и сортира и съхранява данните, когато този буфер е пълен.

По подразбиране таблиците и базите данни се съхраняват в директория #rocksdb вътре в MySQL datadir. Тази информация се съхранява в .sst файлове без разделяне по таблица.

MyRocks поддържа изолирани нива за ЧЕТЕНЕ COMMITTED и REPEATABLE READ и не поддържа SERIALIZABLE.

Как да внедрите MyRocks на сървър на MariaDB

Инсталиране

Първо, трябва да инсталираме MariaDB сървър. В този пример ще използваме CentOS Linux версия 7.6 като операционна система.

По подразбиране тази версия на ОС ще се опита да инсталира MariaDB 5.5, така че ще добавим хранилището на MariaDB, за да инсталираме MariaDB версия 10.3.

$ 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

След това ще инсталираме пакета MariaDB Server:

$ yum install MariaDB-server

Тази команда ще инсталира различни пакетни зависимости, не само 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)

По подразбиране сървърът MariaDB е инсталиран с InnoDB механизма за съхранение, така че трябва да инсталираме двигателя RocksDB, за да можем да го използваме.

$ 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)

Тази команда ще инсталира някои необходими зависимости и ще активира приставката на сървъра MariaDB. Той също така ще създаде конфигурационен файл в /etc/my.cnf.d/rocksdb.cnf:

[mariadb]
plugin-load-add=ha_rocksdb.so

Можем да проверим тази инсталация, като изпълним командата SHOW PLUGINS в сървъра MariaDB.

$ 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

Можем да намерим подробна информация за нашия RocksDB двигател, като използваме следната команда:

$ SHOW ENGINE ROCKSDB STATUS

Конфигурация

Относно конфигурационните файлове основният е /etc/my.cnf, който включва директорията /etc/my.cnf.d, където можем да намерим останалите конфигурационни файлове. В тази директория ще имаме следните конфигурационни файлове по подразбиране:

  • enable_encryption.preset:Ще активира криптирането на данни в покой.
  • mysql-clients.cnf:Тук има конфигурации за различни групи като [mysqladmin], [mysqlcheck], [mysqldump] и др.
  • rocksdb.cnf:В този файл ще добавим конкретната конфигурация за MyRocks, като default-storage-engine или 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     |
…
+----------------------------------------------------+-------+

Можете да намерите повече информация за състоянието и системните променливи на уебсайта на MariaDB.

Резервни копия за MariaDB с помощта на MyRocks

Архивите са задължителни във всички среди на база данни. Те са от съществено значение за възстановяване на системата, миграции, одит, тестване и други.

Можем да категоризираме архивите в два различни типа, логически и физически. Логическото архивиране се съхранява в четим от човека формат като SQL, а физическото архивиране съдържа допълнителните двоични данни.

За логически архиви на MariaDB с MyRocks като машина за база данни, най-често срещаният инструмент за архивиране е класическият mysqldump:

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

А за физическо архивиране можем да използваме Mariabackup, който е съвместим с MyRocks:

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

Друг вариант може да бъде myrocks_hotbackup, създаден от Facebook. Може да се използва за вземане на физическо копие от работещ екземпляр на MyRocks на локален или отдалечен сървър, без да спира изходния екземпляр.

Ограничения при използването на MyRocks за MariaDB

Нека разгледаме някои от ограниченията при използването на двигателя MyRocks...

  • Оптимистичната паралелна репликация на MariaDB може да не се поддържа
  • MyRocks не е наличен за 32-битови платформи
  • MariaDB Cluster (Galera Cluster) не работи с MyRocks (само InnoDB или XtraDB машини за съхранение)
  • Транзакцията трябва да се побере в паметта
  • Изисква специални настройки за зареждане на данни
  • SERIALIZABLE не се поддържа
  • Транспортируемо пространство за таблици, външен ключ, пространствен индекс и пълнотекстов индекс не се поддържат

Заключение

MyRocks е наличен в MariaDB от версии по-високи от 10.2.5. Както споменахме по-рано, този механизъм за съхранение може да ви бъде полезен, когато имате натоварвания, които изискват висока компресия на данни и по-високи нива на 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. Как MOD() работи в MariaDB

  2. MariaDB Единици за дата и време

  3. Как да наблюдавате MySQL контейнери с Prometheus - внедряване на самостоятелен и рояк::Част първа

  4. Как да настроите асинхронна репликация между MySQL Galera клъстери

  5. Как ACOS() работи в MariaDB