2.7. MariaDB 10.5 への移行
RHEL 8 では、バージョン 10.3、10.5、および 10.11 の MariaDB サーバーを利用できます。各バージョンは、それぞれ別のモジュールストリームによって提供されます。RHEL 9 では、MariaDB 10.5、MariaDB 10.11、および MySQL 8.0 を使用できます。
ここでは、RHEL 8 バージョンの MariaDB 10.3 から RHEL 9 バージョンの MariaDB 10.5. への移行を説明します。
2.7.1. MariaDB 10.3 と MariaDB 10.5 の主な相違点
MariaDB 10.3 と MariaDB 10.5 の間の重要な変更点には以下が含まれます。
-
MariaDB がデフォルトで
unix_socket
認証プラグインを使用するようになりました。このプラグインにより、ユーザーがローカルの UNIX ソケットファイルを介して MariaDB に接続するときにオペレーティングシステムの認証情報を使用できるようになります。 -
MariaDB
に、mariadb-*
という名前のバイナリーと、mariadb-*
バイナリーを参照するmysql*
シンボリックリンクが追加されました。たとえば、mysqladmin
、mysqlaccess
、およびmysqlshow
のシンボリックリンクは、mariadb-admin
、mariadb-access
、およびmariadb-show
のバイナリーをそれぞれポイントします。 -
各ユーザーロールに合わせて、
SUPER
特権が複数の特権に分割されました。その結果、一部のステートメントで必要な特権が変更されました。 -
並列のレプリケーションでは、
slave_parallel_mode
はデフォルトでoptimistic
に設定されるようになりました。 -
InnoDB ストレージエンジンで、変数のデフォルトが変更されました (
innodb_adaptive_hash_index
はOFF
へ、innodb_checksum_algorithm
はfull_crc32
へ変更)。 MariaDB は、以前使用された
readline
ライブラリーではなく、MariaDB コマンド履歴 (.mysql_history
ファイル) を管理する基盤となるソフトウェアのlibedit
実装を使用するようになりました。この変更は、.mysql_history
ファイルを直接使用しているユーザーに影響します。.mysql_history
は MariaDB または MySQL アプリケーションによって管理されるファイルであるため、ユーザーは直接ファイルでは機能しないことに注意してください。人間が判読可能な外観は偶然です。注記セキュリティーを強化するために、履歴ファイルの維持を考慮することができます。コマンド履歴の記録を無効にするには、以下を実行します。
-
存在する場合は、
.mysql_history
ファイルを削除します。 以下のいずれかの方法を使用します。
-
MYSQL_HISTFILE
変数を/dev/null
に設定し、これをシェルの起動ファイルに追加します。 .mysql_history
ファイルを/dev/null
へのシンボリックリンクに変更します。$ ln -s /dev/null $HOME/.mysql_history
-
-
存在する場合は、
MariaDB Galera クラスター がバージョン 4 にアップグレードされ、以下の主な変更点が加えられました。
- Galera は、サイズ制限なしのトランザクションの複製をサポートする、新しいストリーミングレプリケーション機能を追加します。ストリーミングレプリケーションの実行時に、クラスターは小さなフラグメントでトランザクションを複製します。
- Galera が Global Transaction ID (GTID) に完全に対応するようになりました。
-
/etc/my.cnf.d/galera.cnf
ファイルのwsrep_on
オプションのデフォルト値が1
から0
に変更され、エンドユーザーが必要な追加オプションを設定せずにwsrep
レプリケーションを開始できないようにします。
MariaDB 10.5 の PAM プラグインが次のように変更されました。
-
MariaDB 10.5 で、Pluggable Authentication Modules (PAM) プラグインの新しいバージョンが追加されました。PAM プラグインバージョン 2.0 は、個別の
setuid root
ヘルパーバイナリーを使用して PAM 認証を実行します。これにより、MariaDB が追加の PAM モジュールを使用できるようになります。 -
ヘルパーバイナリーは、
mysql
グループのユーザーによってのみ実行できます。デフォルトでは、グループにはmysql
ユーザーのみが含まれます。Red Hat では、このヘルパーユーティリティーを介してスロットルまたはログの記録をせずにパスワード推測攻撃を防ぐために、管理者がmysql
グループにユーザーをさらに追加しないことを推奨しています。 -
MariaDB 10.5 で、Pluggable Authentication Modules (PAM) プラグインとその関連ファイルが新しいパッケージ
mariadb-pam
に移動しました。したがって、MariaDB
に PAM 認証を使用しないシステムに、新しいsetuid root
バイナリーが導入されることはありません。 -
mariadb-pam
パッケージには、両方の PAM プラグインバージョンが含まれています。バージョン 2.0 はデフォルトで、バージョン 1.0 はauth_pam_v1
共有オブジェクトライブラリーとして利用できます。 -
MariaDB サーバーでは、
mariadb-pam
パッケージはデフォルトでインストールされません。MariaDB 10.5 で PAM 認証プラグインを利用できるようにするには、mariadb-pam
パッケージを手動でインストールします。
2.7.2. RHEL 8 バージョンの MariaDB 10.3 から、RHEL 9 バージョンの MariaDB 10.5 への移行
この手順では、mariadb-upgrade
ユーティリティーを使用して、MariaDB 10.3 から MariaDB 10.5 に移行する方法を説明します。
mariadb-upgrade
ユーティリティーは、mariadb-server-utils
サブパッケージにより提供され、mariadb-server
パッケージの依存関係としてインストールされます。
前提条件
- アップグレードを実行する前に、MariaDB データベースに保存されている全データのバックアップを作成します。
手順
mariadb-server
パッケージが RHEL9 システムにインストールされていることを確認します。# dnf install mariadb-server
データのコピー時に、
mariadb
サービスがソースおよびターゲットのシステムで稼働していないことを確認します。# systemctl stop mariadb.service
-
ソースの場所から RHEL 9 ターゲットシステムの
/var/lib/mysql/
ディレクトリーにデータをコピーします。 ターゲットシステムでコピーされたファイルに適切なパーミッションと SELinux コンテキストを設定します。
# restorecon -vr /var/lib/mysql
mysql:mysql
が/var/lib/mysql
ディレクトリー内のすべてのデータの所有者であることを確認してください。# chown -R mysql:mysql /var/lib/mysql
-
/etc/my.cnf.d/
にあるオプションファイルに MariaDB 10.5 に対して有効なオプションのみが含まれるように、設定を調整します。詳細は、MariaDB 10.4 および MariaDB 10.5 のアップストリームドキュメントを参照してください。 ターゲットシステムで、MariaDB サーバーを起動します。
スタンドアロンを実行しているデータベースをアップグレードする場合:
# systemctl start mariadb.service
Galera クラスターノードをアップグレードする場合:
# galera_new_cluster
mariadb
サービスが自動的に起動します。
mariadb-upgrade ユーティリティーを実行して、内部テーブルをチェックし、修復します。
スタンドアロンを実行しているデータベースをアップグレードする場合:
$ mariadb-upgrade
Galera クラスターノードをアップグレードする場合:
$ mariadb-upgrade --skip-write-binlog
インプレースアップグレードには、特定のリスクと既知の問題があります。たとえば、一部のクエリーが動作しなかったり、アップグレード前とは異なる順序で実行される場合があります。これらのリスクと問題、およびインプレースアップグレードに関する全般的な情報は、MariaDB 10.5 Release Notes を参照してください。