MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Używanie silnika pamięci masowej MyRocks z serwerem MariaDB

MariaDB Server to jeden z najpopularniejszych serwerów bazodanowych typu open source. Został stworzony przez oryginalnych programistów MySQL i stał się popularny ze względu na szybkość, skalowalność i niezawodność. MariaDB ma bogaty ekosystem silników pamięci masowej, wtyczek i innych narzędzi, dzięki czemu jest bardzo wszechstronna i nadaje się do wielu różnych zastosowań.

Wymagania dotyczące przestrzeni dyskowej i wydajności we/wy naszych baz danych stale rosną. Dzieje się tak, abyśmy byli w stanie prawidłowo zarządzać naszym wzrostem informacji.

Jeśli chodzi o silnik pamięci masowej MariaDB, mamy do wyboru różne typy, takie jak XtraDB, InnoDB, Aria lub MyISAM. Od wersji MariaDB 10.2.5 dostępny jest również MyRocks. MyRocks to rodzaj silnika pamięci masowej, który może naprawdę pomóc nam spełnić wymagania, o których wspomnieliśmy wcześniej.

W tym blogu dowiemy się więcej informacji o nowym silniku MyRocks i o tym, jak możemy go używać na serwerze MariaDB.

Co to jest MyRocks?

MyRocks to silnik pamięci masowej typu open source oparty na RocksDB, który został pierwotnie opracowany przez Facebooka.

MyRocks może być dobrym rozwiązaniem do przechowywania, gdy masz obciążenia wymagające większej kompresji i wydajności we/wy. Wykorzystuje architekturę Log Structured Merge (LSM), która ma lepszą kompresję niż algorytmy B-drzewa używane przez silnik InnoDB (2x lepsza kompresja w porównaniu do danych skompresowanych przez InnoDB). Jest to również zoptymalizowany pod kątem zapisu silnik pamięci masowej (10x mniejsze wzmocnienie zapisu w porównaniu z InnoDB) i zapewnia szybsze ładowanie i replikację danych. MyRocks zapisuje dane bezpośrednio na najniższym poziomie, co pozwala uniknąć wszelkich ogólnych kosztów kompaktowania, gdy włączysz szybsze ładowanie danych dla sesji.

LSM działa poprzez przechowywanie operacji modyfikacji w buforze (zapamiętywanym) oraz sortowanie i przechowywanie danych, gdy ten bufor jest pełny.

Domyślnie tabele i bazy danych są przechowywane w katalogu #rocksdb w katalogu danych MySQL. Te informacje są przechowywane w plikach .sst bez rozdzielania według tabeli.

MyRocks obsługuje izolowane poziomy ODCZYTU POWTARZALNEGO i ODCZYTU POWTARZALNEGO i nie obsługuje SERIALIZABLE.

Jak zaimplementować MyRocks na serwerze MariaDB

Instalacja

Najpierw musimy zainstalować serwer MariaDB. W tym przykładzie użyjemy CentOS Linux w wersji 7.6 jako systemu operacyjnego.

Domyślnie ta wersja systemu operacyjnego będzie próbowała zainstalować MariaDB 5.5, więc dodamy repozytorium MariaDB, aby zainstalować MariaDB w wersji 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

A następnie zainstalujemy pakiet MariaDB Server:

$ yum install MariaDB-server

To polecenie zainstaluje różne zależności pakietów, nie tylko 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)

Domyślnie serwer MariaDB jest instalowany z silnikiem pamięci masowej InnoDB, więc musimy zainstalować silnik RocksDB, aby móc z niego korzystać.

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

To polecenie zainstaluje niektóre wymagane zależności i włączy wtyczkę na serwerze MariaDB. Utworzy również plik konfiguracyjny w /etc/my.cnf.d/rocksdb.cnf:

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

Możemy zweryfikować tę instalację, uruchamiając polecenie SHOW PLUGINS na serwerze 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     |
+-------------------------------+----------+--------------------+---------------+---------+

Jeśli z jakiegoś powodu nie mamy włączonej wtyczki, możemy zainstalować ją dynamicznie, wykonując polecenie INSTALL SONAME lub INSTALL PLUGIN:

$ MariaDB> INSTALL SONAME 'ha_rocksdb';

Inną opcją może być ponowne uruchomienie usług bazy danych. Ta akcja powinna odczytać plik /etc/my.cnf.d/rocksdb.cnf i włączyć wtyczkę.

$ service mariadb restart

Szczegółowe informacje o naszym silniku RocksDB możemy znaleźć za pomocą następującego polecenia:

$ SHOW ENGINE ROCKSDB STATUS

Konfiguracja

Jeśli chodzi o pliki konfiguracyjne, głównym z nich jest /etc/my.cnf, który zawiera katalog /etc/my.cnf.d, w którym możemy znaleźć resztę plików konfiguracyjnych. W tym katalogu domyślnie będziemy mieć następujące pliki konfiguracyjne:

  • enable_encryption.preset:Włączy szyfrowanie danych w stanie spoczynku.
  • mysql-clients.cnf:Tutaj są konfiguracje dla różnych grup, takich jak [mysqladmin], [mysqlcheck], [mysqldump] i inne.
  • rocksdb.cnf:W tym pliku dodamy specyficzną konfigurację dla MyRocks, taką jak default-storage-engine lub rocksdb_block_size.
  • server.cnf:Tutaj mamy konfigurację związaną z serwerem bazy danych, taką jak bind-address i binlog_format.

Wszystkie zmienne systemowe i zmienne stanu MyRocks są poprzedzone słowem „rocksdb”. Rzućmy okiem na to.

Zmienne systemowe:

$ 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                                     |
…
+-------------------------------------------------+------------------------------------------+

Zmienne stanu:

$ 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     |
…
+----------------------------------------------------+-------+

Więcej informacji o stanie i zmiennych systemowych można znaleźć w witrynie MariaDB.

Kopie zapasowe dla MariaDB przy użyciu MyRocks

Kopie zapasowe są koniecznością we wszystkich środowiskach baz danych. Są niezbędne do odzyskiwania systemu, migracji, audytu, testowania i nie tylko.

Możemy podzielić kopie zapasowe na dwa różne typy, logiczne i fizyczne. Logiczna kopia zapasowa jest przechowywana w formacie czytelnym dla człowieka, takim jak SQL, a fizyczna kopia zapasowa zawiera dodatkowe dane binarne.

W przypadku logicznych kopii zapasowych w MariaDB z MyRocks jako silnikiem bazy danych, najpopularniejszym narzędziem do tworzenia kopii zapasowych jest klasyczny mysqldump:

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

A do fizycznej kopii zapasowej możemy użyć Mariabackup, która jest kompatybilna z MyRocks:

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

Inną opcją może być myrocks_hotbackup, stworzony przez Facebooka. Może być używany do przenoszenia fizycznej kopii z działającej instancji MyRocks na lokalny lub zdalny serwer, bez zatrzymywania instancji źródłowej.

Ograniczenia korzystania z MyRocks dla MariaDB

Przyjrzyjmy się niektórym ograniczeniom korzystania z silnika MyRocks...

  • Optymistyczna replikacja równoległa MariaDB może nie być obsługiwana
  • MyRocks nie jest dostępny dla platform 32-bitowych
  • Klaster MariaDB (klaster Galera) nie działa z MyRocks (tylko silniki pamięci masowej InnoDB lub XtraDB)
  • Transakcja musi zmieścić się w pamięci
  • Wymaga specjalnych ustawień do ładowania danych
  • SERIALIZABLE nie jest obsługiwane
  • Przenośna przestrzeń tabel, klucz obcy, indeks przestrzenny i indeks pełnotekstowy nie są obsługiwane

Wniosek

MyRocks jest dostępny w MariaDB od wersji wyższych niż 10.2.5. Jak wspomnieliśmy wcześniej, ten aparat magazynu może być przydatny, gdy masz obciążenia wymagające wysokiej kompresji danych i wyższych poziomów wydajności we/wy. Aby dowiedzieć się więcej o MyRocks, możesz to sprawdzić.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa funkcja COALESCE() w MariaDB

  2. Jak dodać AM/PM do wartości czasu lub daty i godziny w MariaDB?

  3. Jak zatrzymać lub dławić operację SST w klastrze Galera?

  4. Odkrywanie różnych sposobów szyfrowania danych MariaDB

  5. Przenoszenie do MariaDB Backup