Getting Started with MyRocks
MariaDB starting with 10.2.5
The MyRocks storage engine was first released in MariaDB 10.2.5.
MyRocks is a storage engine that adds the RocksDB database to MariaDB. RocksDB is an LSM database with a great compression ratio that is optimized for flash storage.
The storage engine must be installed before it can be used.
Contents
Installing the Plugin's Package
The MyRocks storage engine's shared library is included in MariaDB packages as the ha_rocksdb.so
or ha_rocksdb.dll
shared library on systems where it can be built. The plugin was first included in MariaDB 10.2.5.
Installing on Linux
The MyRocks storage engine is included in binary tarballs on Linux.
Installing with a Package Manager
The MyRocks storage engine can also be installed via a package manager on Linux. In order to do so, your system needs to be configured to install from one of the MariaDB repositories.
You can configure your package manager to install it from MariaDB Corporation's MariaDB Package Repository by using the MariaDB Package Repository setup script.
You can also configure your package manager to install it from MariaDB Foundation's MariaDB Repository by using the MariaDB Repository Configuration Tool.
Installing with yum/dnf
On RHEL, CentOS, Fedora, and other similar Linux distributions, it is highly recommended to install the relevant RPM package from MariaDB's
repository using yum
or dnf
. Starting with RHEL 8 and Fedora 22, yum
has been replaced by dnf
, which is the next major version of yum
. However, yum
commands still work on many systems that use dnf
. For example:
sudo yum install MariaDB-rocksdb-engine
Installing with apt-get
On Debian, Ubuntu, and other similar Linux distributions, it is highly recommended to install the relevant DEB package from MariaDB's
repository using apt-get
. For example:
sudo apt-get install mariadb-plugin-rocksdb
Installing with zypper
On SLES, OpenSUSE, and other similar Linux distributions, it is highly recommended to install the relevant RPM package from MariaDB's repository using zypper
. For example:
sudo zypper install MariaDB-rocksdb-engine
Installing on Windows
The MyRocks storage engine is included in MSI and ZIP packages on Windows.
Installing the Plugin
Once the shared library is in place, the plugin is not actually installed by MariaDB by default. There are two methods that can be used to install the plugin with MariaDB.
The first method can be used to install the plugin without restarting the server. You can install the plugin dynamically by executing INSTALL SONAME
or INSTALL PLUGIN
. For example:
INSTALL SONAME 'ha_rocksdb';
The second method can be used to tell the server to load the plugin when it starts up. The plugin can be installed this way by providing the --plugin-load
or the --plugin-load-add
options. This can be specified as a command-line argument to mysqld
or it can be specified in a relevant server option group in an option file. For example:
[mariadb] ... plugin_load_add = ha_rocksdb
Note: When installed with a package manager, an option file that contains the --plugin-load-add
option may also be installed. The RPM package installs it as /etc/my.cnf.d/rocksdb.cnf
, and the DEB package installs it as /etc/mysql/mariadb.conf.d/rocksdb.cnf
Uninstalling the Plugin
You can uninstall the plugin dynamically by executing UNINSTALL SONAME
or UNINSTALL PLUGIN
. For example:
UNINSTALL SONAME 'ha_rocksdb';
If you installed the plugin by providing the --plugin-load
or the --plugin-load-add
options in a relevant server option group in an option file, then those options should be removed to prevent the plugin from being loaded the next time the server is restarted.
Verifying the Installation
After installing MyRocks you will see RocksDB in the list of plugins:
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_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 | ... +-------------------------------+----------+--------------------+---------------+---------+
Compression
Supported compression types are listed in the rocksdb_supported_compression_types variable. For example:
SHOW VARIABLES LIKE 'rocksdb_supported_compression_types'; +-------------------------------------+-------------+ | Variable_name | Value | +-------------------------------------+-------------+ | rocksdb_supported_compression_types | Snappy,Zlib | +-------------------------------------+-------------+
See MyRocks and Data Compression for more.
System and Status Variables
All MyRocks system variables and status variables are prefaced with "rocksdb", so you can query them with, for example:
SHOW VARIABLES LIKE 'rocksdb%'; SHOW STATUS LIKE 'rocksdb%';