5.2. Red Hat Enterprise Linux 8 での MariaDB の使用

5.2.1. Red Hat Enterprise Linux 8 の MariaDB の概要

MariaDB サーバーは、MySQL テクノロジーをベースとしたオープンソースの高速で強力なデータベースサーバーです。

MariaDB は、データを構造化情報に変換して、データにアクセスする SQL インターフェースを提供するリレーショナルデータベースです。これには、複数のストレージエンジンとプラグイン、および地理的な情報システム (GIS) および JSON (JavaScript Object Notation) 機能が含まれます。

本セクションでは、「MariaDB のインストール」で、MariaDB サーバーをインストールする方法を説明します。また、「MariaDB 10.3 への移行」では、Red Hat Enterprise Linux 7 のデフォルトバージョンの MariaDB 5.5 から Red Hat Enterprise Linux 8 のデフォルトバージョンの MariaDB 10.3 に移行する方法について説明します。移行の前提条件として、「MariaDB データのバックアップ」で説明されているデータバックアップの実行があります。

5.2.2. MariaDB のインストール

MariaDB をインストールするには、以下の手順を行います。

  1. AppStream リポジトリーで利用可能な mariadb パッケージおよび mariadb-server パッケージが、必要なサーバーにインストールされていることを確認します。

    ~]# yum install mariadb mariadb-server
  2. mariadb サービスを起動します。

    ~]# systemctl start mariadb.service
  3. mariadb サービスが、システムの起動時に起動するようにします。

    ~]# systemctl enable mariadb.service
注記

RPM パッケージの競合により、データベースサーバー MariaDB および MySQL を Red Hat Enterprise Linux 8.0 で並行してインストールできないことに注意してください。Red Hat Enterprise Linux 6 および Red Hat Enterprise Linux 7 用の Red Hat Software Collections では、コンポーネントの同時インストールが可能です。Red Hat Enterprise Linux 8 では、コンテナーで異なるバージョンのデータベースサーバーを使用できます。

5.2.2.1. MariaDB インストールセキュリティーの改善

MariaDB のインストール時に mysql_secure_installation コマンドを実行すると、セキュリティーが強化されます。

~]# mysql_secure_installation

このコマンドは、プロセスの各ステップを要求する完全にインタラクティブなスクリプトを起動します。

このスクリプトを使用すると、次の方法でセキュリティーを改善できます。

  • root アカウントのパスワードの設定
  • 匿名ユーザーの削除
  • リモート (ローカルホスト外) の root ログインの拒否

5.2.3. MariaDB の設定

5.2.3.1. MariaDB サーバーのネットワーク設定

MariaDB サーバーをネットワーク用に設定するには、/etc/my.cnf.d/mariadb-server.cnf ファイルの [mysqld] セクションを使用します。ここには、以下の設定ディレクティブを設定できます。

  • bind-address

    bind-address は、サーバーがリッスンするアドレスです。

    可能なオプションは、ホスト名、IPv4 アドレス、または IPv6 アドレスです。

  • skip-networking +fna では、以下の値が利用できます。

    0 - すべてのクライアントをリッスンする

    1 - ローカルクライアントのみをリッスンする

  • port

    MariaDB が TCP/IP 接続をリッスンするポート。

5.2.4. MariaDB データのバックアップ

5.2.4.1. MariaDB バックアップのタイプ

MariaDB データベースからデータのバックアップを取得するには、以下の 2 つの方法があります。

  • 論理バックアップ
  • 物理バックアップ

論理バックアップ は、データの復元に必要な SQL ステートメントで構成されます。この種類のバックアップは、情報およびレコードをプレーンテキストファイルにエクスポートします。

物理バックアップに対する論理バックアップの主な利点は、移植性と柔軟性です。データは、物理バックアップではできない他のハードウェア構成である MariaDB バージョンまたはデータベース管理システム (DBMS) で復元できます。

mariadb.service が稼働している場合は、論理バックアップを実行できることに注意してください。論理バックアップには、ログと設定ファイルが含まれません。

物理バックアップ は、コンテンツを格納するファイルおよびディレクトリーのコピーで構成されます。

物理バックアップは、論理バックアップと比較して、以下の利点があります。

  • 出力が少なくなる。
  • バックアップのサイズが小さくなる。
  • バックアップおよび復元が速くなる。
  • バックアップには、ログファイルと設定ファイルが含まれる。

mariadb.service が実行していない場合や、データベースのすべてのテーブルがロックされていて、バックアップ中に変更しないようにする場合は、物理バックアップを実行する必要があります。

5.2.4.2. MariaDB のバックアップ方法

MariaDB データベースのデータのバックアップには、以下のいずれかの方法を使用できます。

5.2.4.3. mysqldump を使用した論理バックアップ

mysqldump クライアントはバックアップユーティリティーで、バックアップ目的でデータベースまたはデータベースの集合をダンプしたり、別のデータベースサーバーに転送したりできます。通常、mysqldump の出力は、テーブルの作成、テーブルの追加、またはテーブルの作成および追加を可能にする SQL ステートメントから構成されます。また、mysqldump は、CSV などのコンマ区切りテキスト形式、XML など、その他の形式のファイルも生成できます。

mysqldump を使用した論理バックアップの詳細は、MariaDB のドキュメント を参照してください。

mysqldump バックアップを実行するには、以下のいずれかのオプションを使用できます。

  • 選択したデータベースをバックアップする。
  • あるデータベースのテーブルのサブセットのバックアップを作成する。
  • 複数のデータベースをバックアップする。
  • すべてのデータベースをバックアップする。
5.2.4.3.1. mysqldump バックアップでよく使用されるコマンド
  • データベース全体のバックアップを取得するには、以下を実行します。

    ~]# mysqldump [options] db_name > backup-file.sql
  • あるデータベースで、テーブルのサブセットのバックアップを作成するには、コマンドの最後に選択したテーブルの一覧を追加します。

    ~]# mysqldump [options] db_name [tbl_name …​]
  • ダンプファイルをサーバーに読み込むには、次を実行します。

    ~]# mysql db_name < backup-file.sql

    または

    ~]# mysql -e "source /path-to-backup/backup-file.sql" db_name
  • データを MariaDB サーバー間でコピーしてデータベースを入力するには、以下を実行します。

    ~]# mysqldump --opt db_name | mysql --host=remote_host -C db_name
  • 複数のデータベースを一度にダンプするには、次のコマンドを実行します。

    ~]# mysqldump [options] --databases db_name1 [db_name2 …​] > my_databases.sql
  • すべてのデータベースをダンプするには、以下を実行します。

    ~]# mysqldump [options]--all-databases > all_databases.sql
  • mysqldump サポートするオプションの一覧を表示するには、以下を実行します。

    ~]$ mysqldump --help

5.2.4.4. Mariabackup ツールを使用した物理的なオンラインバックアップ

Mariabackup は、Percona Xtrabackup テクノロジーをベースとしたツールで、InnoDB、Aria、および MyISAM のテーブルの物理的なオンラインバックアップを実行できます。

AppStream リポジトリーの mariadb-backup パッケージが提供する Mariabackup は、MariaDB サーバーの完全バックアップ機能に対応します。これには、暗号化されたデータと圧縮データが含まれます。

Mariabackup をインストールするには、root で以下のコマンドを実行します。

~]# yum install mariadb-backup

Mariabackup を設定するには、作成する必要がある *.cnf 設定ファイル (/etc/my.cnf.d/mariabackup.cnf など) の [xtrabackup] セクションまたは [mysqld] セクションに以下の行を追加して、ユーザー名とパスワードを設定します。

[xtrabackup]
user=myuser
password=mypassword
重要

Mariabackup は、設定ファイルの [mariadb] セクションのオプションは読み込みません。MariaDB サーバーにデフォルト以外のデータディレクトリーが指定されている場合は、Mariabackup がデータディレクトリーを見つけることができるように、設定ファイルの [xtrabackup] セクションまたは [mysqld] セクションでこのディレクトリーを指定する必要があります。

このようなデータディレクトリーを指定するには、MariaDB 設定ファイルの [xtrabackup] セクションまたは [mysqld] セクションに以下の行を追加します。

datadir=/var/mycustomdatadir
注記

Mariabackup のユーザーがバックアップを操作するには、RELOADLOCK TABLES、および REPLICATION CLIENT の特権が必要です。

Mariabackup を使用してデータベースのバックアップを作成するには、以下のコマンドを実行します。

~]$ mariabackup --backup --target-dir <backup_directory> --user <backup_user> --password <backup_passwd>

target-dir オプションは、バックアップファイルを格納するディレクトリーを定義します。

完全バックアップを実行する場合は、ターゲットディレクトリーが空であるか、存在しない場合があることに注意してください。

Mariabackup によるバックアップの実行の詳細は、「Full Backup and Restore with Mariabackup」を参照してください。

5.2.4.5. ファイルシステムのバックアップ

ファイルシステムのバックアップを作成する場合は、データファイルを別の場所にコピーします。データファイルのコピー時に mariadb サービスが稼働していないことを確認してください。

MariaDB データファイルのファイルシステムのバックアップを作成するには、root で以下の手順を行います。

  1. mariadb サービスを停止します。

    ~]# systemctl stop mariadb.service
  2. データファイルを必要な場所にコピーします。

    ~]# cp -r /var/lib/mysql /backup-location
  3. mariadb サービスを起動します。

    ~]# systemctl start mariadb.service

5.2.4.6. レプリケーションをバックアップソリューションとして使用

レプリケーションは、マスターサーバー用の代替バックアップソリューションです。マスターサーバーの複製となるスレーブサーバーを作成すると、マスターに影響を与えずに、スレーブでバックアップを実行できます。

警告

レプリケーションは、バックアップソリューションとしては十分ではありません。レプリケーションは、ハードウェア障害からマスターサーバーを保護しますが、データ損失に対する保護は保証しないためです。

レプリケーションをバックアップソリューションとして使用する場合は、MariaDB ドキュメンテーション を参照してください。

5.2.5. MariaDB 10.3 への移行

Red Hat Enterprise Linux 7 には、MySQL データベースファミリーからのサーバーのデフォルトの実装として、MariaDB 5.5 が同梱されています。新しいバージョンの MariaDB データベースサーバーは、Red Hat Enterprise Linux 6 および Red Hat Enterprise Linux 7 の Software Collections として利用できます。Red Hat Enterprise Linux 8 は、MariaDB 10.3 および MySQL 8.0 を提供します。

5.2.5.1. RHEL 7 と RHEL 8 のバージョンの MariaDB の違い

MariaDB 5.5MariaDB 10.3 において最も重要な変更点を以下に示します。

  • 10.1 以降、同期マルチクラスターでもある MariaDB Galera Cluster が、MariaDB の標準に含まれるようになりました。
  • ARCHIVE ストレージエンジンはデフォルトで有効ではなくなるため、プラグインを明示的に有効にする必要があります。
  • BLACKHOLE ストレージエンジンはデフォルトで有効ではなくなるため、プラグインを明示的に有効にする必要があります。
  • InnoDB は、MariaDB 10.1 以前のバージョンで使用されていた XtraDB ではなく、デフォルトのストレージエンジンとして使用されます。

    詳細は、「Why does MariaDB 10.2 use InnoDB instead of XtraDB?」を参照してください。

  • 新しい mariadb-connector-c パッケージは、MySQL と MariaDB に共通のクライアントライブラリーを提供します。このライブラリーは、データベースサーバー MySQL および MariaDB のすべてのバージョンで使用できます。その結果、Red Hat Enterprise Linux 8 に同梱される MySQL サーバーまたは MariaDB サーバーのいずれかに構築されるアプリケーションの 1 つに接続できます。

MariaDB 5.5 から MariaDB 10.3 へ移行するには、「設定変更」の記載どおりに複数の設定を実行する必要があります。

5.2.5.2. 設定変更

MariaDB 5.5 から MariaDB 10.3 への推奨される移行パスは、最初に MariaDB 10.0 にアップグレードしてから、1 バージョンずつ順次アップグレードすることです。

MariaDB 5.5 から MariaDB 10.0 への移行時の設定の変更の詳細は、『Red Hat Software Collections』の「MariaDB 10.0 への移行」を参照してください。

以下の後続バージョンの MariaDB への以降と、必要な設定変更は、以下のドキュメントで説明します。

注記

MariaDB 5.5 から MariaDB 10.3 へ直接移行することもできますが、上記の移行ドキュメントに記載されている違いにより必要とされる設定変更をすべて実行する必要があります。

5.2.5.3. mysql_upgrade ツールを使用したインプレースアップグレード

データベースファイルを Red Hat Enterprise Linux 8 に移行するには、Red Hat Enterprise Linux 7 の MariaDB ユーザーが、mysql_upgrade ツールを使用してインプレースアップグレードを実行する必要があります。

インプレースアップグレードを実行するには、Red Hat Enterprise Linux 8 システムの /var/lib/mysql/ データディレクトリーにバイナリーデータファイルをコピーして、mysql_upgrade ツールを使用する必要があります。

この方法を使用すると、以下からデータを移行できます。

  • Red Hat Enterprise Linux 7 バージョンの MariaDB 5.5
  • Red Hat Software Collections のバージョンは、以下の通りです。

    • MariaDB 5.5 (サポート対象外になりました)
    • MariaDB 10.0 (サポート対象外になりました)
    • MariaDB 10.1
    • MariaDB 10.2

MariaDB 10.2 へのアップグレードは、バージョンごとに行うことが推奨されます。移行は、Red Hat Software Collections Release Notes で該当する章を参照してください。

注記

Red Hat Enterprise Linux 7 バージョンの MariaDB からアップグレードする場合、ソースデータは /var/lib/mysql/ ディレクトリーに保存されます。Red Hat Software Collections バージョンの MariaDB の場合、ソースデータディレクトリーは /var/opt/rh/<collection_name>/lib/mysql/ です (/opt/rh/mariadb55/root/var/lib/mysql/ データディレクトリーを使用する mariadb55 を除く)。

重要

アップグレードを実行する前に、「MariaDB データのバックアップ」の説明に従って、MariaDB データベースに保存されている全データのバックアップを作成します。

インプレースアップグレードを実行する場合は、root で以下を行います。

  1. Red Hat Enterprise Linux 8 システムに mariadb-server パッケージがインストールされていることを確認します。

    ~]# yum install mariadb-server
  2. データのコピー時に、mariadb デーモンがソースおよびターゲットのシステムで実行していないことを確認します。

    ~]# systemctl stop mariadb.service
  3. ソースの場所から、Red Hat Enterprise Linux 8 ターゲットシステムの /var/lib/mysql/ ディレクトリーにデータをコピーします。
  4. ターゲットシステムでコピーされたファイルに適切なパーミッションと SELinux コンテキストを設定します。

    ~]# restorecon -vr /var/lib/mysql
  5. ターゲットシステムで、MariaDB サーバーを起動します。

    ~]# systemctl start mariadb.service
  6. mysql_upgrade コマンドを実行して、内部テーブルをチェックし、修復します。

    ~]# systemctl mysql_upgrade
  7. アップグレードが完了したら、/etc/my.cnf.d/ ディレクトリーのすべての設定ファイルに MariaDB 10.3 の有効なオプションのみが含まれていることを確認してください。
重要

インプレースアップグレードに関連する特定のリスクと既知の問題があります。たとえば、一部のクエリーが動作しなかったり、アップグレード前とは異なる順序で実行される場合があります。これらのリスクと問題、およびインプレースアップグレードに関する全般的な情報は、『MariaDB 10.3 Release Notes』を参照してください。