MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Menggunakan Mesin Penyimpanan MyRocks dengan Server MariaDB

MariaDB Server adalah salah satu server database open source yang paling populer. Itu dibuat oleh pengembang asli MySQL dan menjadi populer karena cepat, terukur, dan kuat. MariaDB memiliki ekosistem yang kaya dari mesin penyimpanan, plugin, dan alat lain yang membuatnya sangat serbaguna untuk berbagai kasus penggunaan.

Persyaratan ruang disk dan efisiensi I/O dari database kami terus bertambah tinggi. Ini agar kami dapat mengelola pertumbuhan informasi kami dengan cara yang benar.

Adapun mesin penyimpanan MariaDB, kami memiliki berbagai jenis untuk dipilih seperti XtraDB, InnoDB, Aria, atau MyISAM. Sejak MariaDB 10.2.5 versi MyRocks juga telah tersedia. MyRocks adalah jenis mesin penyimpanan yang benar-benar dapat membantu kami memenuhi persyaratan yang kami sebutkan sebelumnya.

Di blog ini, kita akan mempelajari lebih banyak informasi tentang mesin MyRocks baru dan bagaimana kita dapat menggunakannya di Server MariaDB.

Apa itu MyRocks?

MyRocks adalah mesin penyimpanan sumber terbuka berdasarkan RocksDB yang awalnya dikembangkan oleh Facebook.

MyRocks dapat menjadi solusi penyimpanan yang baik ketika Anda memiliki beban kerja yang membutuhkan kompresi dan efisiensi I/O yang lebih besar. Ini menggunakan arsitektur Log Structured Merge (LSM) yang memiliki kompresi lebih baik daripada algoritma B-tree yang digunakan oleh mesin InnoDB (kompresi 2x lebih baik dibandingkan dengan data yang dikompresi oleh InnoDB). Ini juga merupakan mesin penyimpanan yang dioptimalkan untuk penulisan (amplifikasi tulis 10x lebih sedikit jika dibandingkan dengan InnoDB) dan memiliki pemuatan dan replikasi data yang lebih cepat. MyRocks menulis data langsung ke tingkat paling bawah, yang menghindari semua overhead pemadatan saat Anda mengaktifkan pemuatan data yang lebih cepat untuk suatu sesi.

LSM bekerja dengan menyimpan operasi modifikasi dalam buffer (memtable) dan, menyortir dan menyimpan data saat buffer ini penuh.

Secara default, tabel dan database disimpan dalam direktori #rocksdb di dalam direktori data MySQL. Informasi ini disimpan dalam file .sst tanpa pemisahan per tabel.

MyRocks mendukung READ COMMITTED dan REPEATABLE READ level terisolasi dan tidak mendukung SERIALIZABLE.

Cara Menerapkan MyRocks di Server MariaDB

Pemasangan

Pertama, kita perlu menginstal server MariaDB. Dalam contoh ini, kami akan menggunakan CentOS Linux rilis 7.6 sebagai sistem operasinya.

Secara default, versi OS ini akan mencoba menginstal MariaDB 5.5, jadi kami akan menambahkan repositori MariaDB untuk menginstal MariaDB versi 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

Dan kemudian, kita akan menginstal paket Server MariaDB:

$ yum install MariaDB-server

Perintah ini akan menginstal dependensi paket yang berbeda, tidak hanya Server MariaDB.

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

Secara default, Server MariaDB diinstal dengan mesin penyimpanan InnoDB, jadi kita harus menginstal mesin RocksDB untuk dapat menggunakannya.

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

Perintah ini akan menginstal beberapa dependensi yang diperlukan dan akan mengaktifkan plugin di Server MariaDB. Itu juga akan membuat file konfigurasi di /etc/my.cnf.d/rocksdb.cnf:

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

Kami dapat memverifikasi instalasi ini dengan menjalankan perintah SHOW PLUGINS ke dalam Server 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     |
+-------------------------------+----------+--------------------+---------------+---------+

Jika karena alasan tertentu plugin tidak diaktifkan, kita dapat menginstalnya secara dinamis dengan menjalankan perintah INSTALL SONAME atau INSTALL PLUGIN:

$ MariaDB> INSTALL SONAME 'ha_rocksdb';

Pilihan lain bisa me-restart layanan database. Tindakan ini harus membaca file /etc/my.cnf.d/rocksdb.cnf dan mengaktifkan plugin.

$ service mariadb restart

Kami dapat menemukan informasi rinci tentang mesin RocksDB kami dengan menggunakan perintah berikut:

$ SHOW ENGINE ROCKSDB STATUS

Konfigurasi

Tentang file konfigurasi, yang utama adalah /etc/my.cnf, yang mencakup direktori /etc/my.cnf.d di mana kita dapat menemukan file konfigurasi lainnya. Di direktori ini, kita akan memiliki file konfigurasi berikut secara default:

  • enable_encryption.preset:Ini akan mengaktifkan enkripsi data saat istirahat.
  • mysql-clients.cnf:Di sini ada konfigurasi untuk grup yang berbeda seperti [mysqladmin], [mysqlcheck], [mysqldump] dan banyak lagi.
  • rocksdb.cnf:Dalam file ini, kita akan menambahkan konfigurasi khusus untuk MyRocks, seperti default-storage-engine atau rocksdb_block_size.
  • server.cnf:Disini kita memiliki konfigurasi yang berhubungan dengan database server seperti bind-address dan binlog_format.

Semua variabel sistem MyRocks dan variabel status diawali dengan "rocksdb". Mari kita lihat ini.

Variabel sistem:

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

Variabel status:

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

Anda dapat menemukan informasi lebih lanjut tentang status dan variabel sistem di situs web MariaDB.

Cadangan untuk MariaDB Menggunakan MyRocks

Cadangan adalah suatu keharusan di semua lingkungan basis data. Mereka penting untuk pemulihan sistem, migrasi, audit, pengujian, dan banyak lagi.

Kami dapat mengkategorikan cadangan dalam dua jenis yang berbeda, logis dan fisik. Cadangan logis disimpan dalam format yang dapat dibaca manusia seperti SQL, dan cadangan fisik berisi data biner tambahan.

Untuk pencadangan logis di MariaDB dengan MyRocks sebagai mesin basis data, alat pencadangan yang paling umum adalah mysqldump klasik:

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

Dan untuk backup fisik, kita bisa menggunakan Mariabackup yang kompatibel dengan MyRocks:

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

Pilihan lain bisa myrocks_hotbackup, dibuat oleh Facebook. Ini dapat digunakan untuk mengambil salinan fisik dari instance MyRocks yang sedang berjalan ke server lokal atau jauh, tanpa menghentikan instance sumber.

Batasan Menggunakan MyRocks untuk MariaDB

Mari kita lihat beberapa batasan penggunaan mesin MyRocks...

  • Replikasi paralel optimis MariaDB mungkin tidak didukung
  • MyRocks tidak tersedia untuk platform 32-bit
  • Cluster MariaDB (Cluster Galera) tidak berfungsi dengan MyRocks (Hanya mesin penyimpanan InnoDB atau XtraDB)
  • Transaksi harus sesuai dengan memori
  • Memerlukan pengaturan khusus untuk memuat data
  • SERIALIZABLE tidak didukung
  • Ruang Tabel yang Dapat Diangkut, Kunci Asing, Indeks Spasial, dan Indeks Teks Lengkap tidak didukung

Kesimpulan

MyRocks tersedia di MariaDB dari versi yang lebih tinggi dari 10.2.5. Seperti yang kami sebutkan sebelumnya, mesin penyimpanan ini mungkin berguna bagi Anda saat Anda memiliki beban kerja yang memerlukan kompresi data tinggi dan tingkat efisiensi I/O yang lebih tinggi. Untuk mempelajari lebih lanjut tentang MyRocks, Anda dapat melihat ini.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB LENGTHB() Dijelaskan

  2. Cara Mengidentifikasi Masalah Kinerja MySQL dengan Query Lambat

  3. 4 Fungsi untuk Mengembalikan Bulan dari Tanggal di MariaDB

  4. 2 Cara Mengembalikan Baris yang Hanya Mengandung Karakter Alfanumerik di MariaDB

  5. Bagaimana LOG() Bekerja di MariaDB