sql >> データベース >  >> RDS >> MariaDB

MariaDBサーバーでのMyRocksストレージエンジンの使用

    MariaDBサーバーは、最も人気のあるオープンソースデータベースサーバーの1つです。これはMySQLの最初の開発者によって作成され、高速、スケーラブル、および堅牢であることが一般的になりました。 MariaDBには、ストレージエンジン、プラグイン、その他のツールの豊富なエコシステムがあり、さまざまなユースケースに対応できます。

    データベースのディスク容量とI/O効率の要件は、ますます高くなっています。これにより、情報の増加を正しい方法で管理できるようになります。

    MariaDBストレージエンジンに関しては、XtraDB、InnoDB、Aria、MyISAMなどのさまざまなタイプから選択できます。 MariaDB 10.2.5バージョン以降、MyRocksも利用可能になりました。 MyRocksは、前述の要件を満たすのに本当に役立つタイプのストレージエンジンです。

    このブログでは、新しいMyRocksエンジンの詳細と、MariaDBサーバーでの使用方法について説明します。

    MyRocksとは何ですか?

    MyRocksは、もともとFacebookによって開発されたRocksDBに基づくオープンソースのストレージエンジンです。

    MyRocksは、より高い圧縮とI/O効率を必要とするワークロードがある場合に優れたストレージソリューションになる可能性があります。これは、InnoDBエンジンで使用されるBツリーアルゴリズムよりも優れた圧縮を備えたログ構造化マージ(LSM)アーキテクチャを使用します(InnoDBで圧縮されたデータと比較して2倍優れた圧縮)。また、書き込みが最適化されたストレージエンジン(InnoDBと比較して書き込み増幅が10分の1)であり、データの読み込みとレプリケーションが高速です。 MyRocksはデータを最下位レベルに直接書き込みます。これにより、セッションでより高速なデータ読み込みを有効にした場合に、すべての圧縮オーバーヘッドが回避されます。

    LSMは、変更操作をバッファー(memtable)に格納し、このバッファーがいっぱいになったときにデータを並べ替えて格納することで機能します。

    デフォルトでは、テーブルとデータベースはMySQLデータディレクトリ内の#rocksdbディレクトリに保存されます。この情報は、テーブルごとに分離せずに.sstファイルに保存されます。

    MyRocksは、READCOMMITTEDおよびREPEATABLEREADの分離レベルをサポートしており、SERIALIZABLEはサポートしていません。

    MariaDBサーバーにMyRocksを実装する方法

    インストール

    まず、MariaDBサーバーをインストールする必要があります。この例では、オペレーティングシステムとしてCentOSLinuxリリース7.6を使用します。

    デフォルトでは、このOSバージョンは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サーバーパッケージをインストールします:

    $ yum install MariaDB-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)

    デフォルトでは、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

    このインストールを確認するには、コマンドSHOWPLUGINSを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     |
    +-------------------------------+----------+--------------------+---------------+---------+

    何らかの理由でプラグインが有効になっていない場合は、INSTALLSONAMEまたはINSTALLPLUGINコマンドを実行してプラグインを動的にインストールできます。

    $ 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:このファイルでは、default-storage-engineやrocksdb_block_sizeなどのMyRocksの特定の構成を追加します。
    • server.cnf:ここにbind-addressや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のWebサイトを参照してください。

    MyRocksを使用したMariaDBのバックアップ

    バックアップは、すべてのデータベース環境で必須です。これらは、システムのリカバリ、移行、監査、テストなどに不可欠です。

    バックアップは、論理と物理の2つの異なるタイプに分類できます。論理バックアップはSQLのような人間が読める形式で保存され、物理バックアップには追加のバイナリデータが含まれます。

    MyRocksをデータベースエンジンとして使用するMariaDBでの論理バックアップの場合、最も一般的なバックアップツールは従来のmysqldumpです。

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

    また、物理バックアップには、MyRocksと互換性のあるMariabackupを使用できます。

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

    もう1つのオプションは、Facebookによって作成されたmyrocks_hotbackupです。ソースインスタンスを停止することなく、実行中のMyRocksインスタンスからローカルサーバーまたはリモートサーバーに物理コピーを取得するために使用できます。

    MariaDBでのMyRocksの使用の制限

    MyRocksエンジンを使用する際の制限のいくつかを見てみましょう...

    • MariaDBの楽観的な並列レプリケーションはサポートされていない可能性があります
    • MyRocksは32ビットプラットフォームでは使用できません
    • MariaDBクラスター(Galeraクラスター)はMyRocksでは機能しません(InnoDBまたはXtraDBストレージエンジンのみ)
    • トランザクションはメモリに収まる必要があります
    • データの読み込みには特別な設定が必要です
    • SERIALIZABLEはサポートされていません
    • トランスポータブル表スペース、外部キー、空間インデックス、およびフルテキストインデックスはサポートされていません

    結論

    MyRocksは、10.2.5以降のバージョンからMariaDBで利用できます。前述したように、このストレージエンジンは、高いデータ圧縮とより高いレベルのI/O効率を必要とするワークロードがある場合に役立つことがあります。 MyRocksの詳細については、こちらをご覧ください。


    1. postgresで最大接続数を増やす方法は?

    2. SQLServerのI/Oパフォーマンスの分析

    3. MySQLmy.iniの場所

    4. これら2つの結合テーブルアプローチの違いは?