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.