第5章 移行

この章では、Red Hat Software Collections 3.8 に含まれるコンポーネントのバージョンへの移行に関する情報を提供します。

5.1. MariaDB 10.5 への移行

rh-mariadb105 Software Collection は、デフォルトの MySQL 実装として MariaDB 5.5 を含む Red Hat Enterprise Linux 7 で利用できます。
rh-mariadb105 Software Collection は、コアシステムの mysql または mariadb パッケージと競合しません。*-syspaths パッケージがインストールされていない限り (下記参照)、mysql パッケージまたは mariadb パッケージとともに rh-mariadb105 Software Collection をインストールできます。特定のリソースが競合しないようにするため、両方のバージョンを同時に実行することもできますが、ポート番号と my.cnf ファイルのソケットを変更する必要があります。さらに、rh-mariadb103 Collection がインストールされ、実行中でも、rh-mariadb105 Software Collection をインストールすることもできます。
rh-mariadb105 Software Collection には、バイナリー、スクリプト、man ページなどのシステム全体のラッパーを提供するパッケージをインストールする rh-mariadb105-syspaths パッケージが含まれます。rh-mariadb105*-syspaths パッケージのインストール後に、rh-mariadb105* パッケージによって提供されるバイナリーおよびスクリプトが正しく動作するかを scl enable コマンドを使用して確認する必要はありません。*-syspaths パッケージは、ベースの Red Hat Enterprise Linux システムと、rh-mariadb103 および rh-mysql80 Software Collections からの対応するパッケージと競合することに注意してください。syspaths の詳細は、Red Hat Software Collections パッケージガイドを参照してください。
MariaDB 5.5 から MariaDB 10.5 への推奨される移行パスは、最初に MariaDB 10.0 にアップグレードしてから、1 バージョンずつ順次アップグレードすることです。詳細は、以前の Red Hat Software Collections リリースノートの手順 (Migrating to MariaDB 10.0Migrating to MariaDB 10.1Migrating to MariaDB 10.2、および Migrating to MariaDB 10.3) を参照してください。MariaDB 10.4 は Software Collection として利用できないため、rh-mariadb103 から rh-mariadb105 に直接移行する必要があります。
注記
rh-mariadb105 Software Collection では、NFS によるマウントやscl registerコマンドによる動的登録はサポートしていません。

5.1.1. rh-mariadb103 および rh-mariadb105 Software Collections 間の主な相違点

MariaDB 10.3MariaDB 10.5 の間の重要な変更点には以下が含まれます。
  • MariaDB はデフォルトで unix_socket 認証プラグインを使用するようになりました。このプラグインを使用すると、ローカルの UNIX ソケットファイルを介して MariaDB に接続する際に、オペレーティングシステムの資格情報を使用できます。
  • MariaDB は、mariadb-* という名前のバイナリーと、mariadb-* バイナリーを指す mysql* シンボリックリンクを追加します。たとえば、mysqladminmysqlaccess、および mysqlshow のシンボリックリンクは、mariadb-adminmariadb-access、および mariadb-show のバイナリーをそれぞれポイントします。
  • 各ユーザーロールに合わせて、SUPER 特権が複数の特権に分割されました。その結果、一部のステートメントが必要な特権が変更されました。
  • 並列レプリケーションでは、slave_parallel_modeoptimistic にデフォルト設定されるようになりました。
  • InnoDB ストレージエンジンでは、以下の変数のデフォルトが変更されました。innodb_adaptive_hash_indexOFFinnodb_checksum_algorithmfull_crc32
  • MariaDB は、以前使用された readline ライブラリーではなく、MariaDB コマンド履歴 (.mysql_history ファイル) を管理する基盤となるソフトウェアの libedit 実装を使用するようになりました。この変更は、.mysql_history ファイルを直接使用しているユーザーに影響します。.mysql_historyMariaDB または MySQL アプリケーションによって管理されるファイルであるため、ユーザーは直接ファイルでは機能しないことに注意してください。人間が判読可能な外観は偶然です。
    注記
    セキュリティーを強化するために、履歴ファイルの維持を考慮することができます。コマンド履歴の記録を無効にするには、以下を実行します。
    1. 存在する場合は、.mysql_history ファイルを削除します。
    2. 以下のいずれかの方法を使用します。
      • MYSQL_HISTFILE 変数を /dev/null に設定し、これをシェルの起動ファイルに追加します。
      • .mysql_history ファイルを /dev/null へのシンボリックリンクに変更します。
        ln -s /dev/null $HOME/.mysql_history
MariaDB Galera クラスター がバージョン 4 にアップグレードされ、以下の主な変更点が加えられました。
  • Galera は、サイズ制限なしのトランザクションの複製をサポートする、新しいストリーミングレプリケーション機能を追加します。ストリーミングレプリケーションの実行時に、クラスターは小さなフラグメントでトランザクションを複製します。
  • Galera がグローバルトランザクション ID (GTID) に完全に対応するようになりました。
  • /etc/my.cnf.d/galera.cnf ファイルの wsrep_on オプションのデフォルト値が 1 から 0 に変更され、エンドユーザーが必要な追加オプションを設定せずに wsrep レプリケーションを開始できないようにします。
MariaDB 10.5 の PAM プラグインへの変更には、以下が含まれます。
  • MariaDB 10.5 は、PAM (Pluggable Authentication Modules) プラグインの新バージョンを追加します。PAM プラグインバージョン 2.0 は、個別の setuid root ヘルパーバイナリーを使用して PAM 認証を実行します。これにより MariaDB が追加の PAM モジュールを使用できるようになります。
  • ヘルパーバイナリーは、mysql グループのユーザーによってのみ実行できます。デフォルトでは、グループには mysql ユーザーのみが含まれます。Red Hat では、このヘルパーユーティリティーを介してスロットルまたはログの記録をせずにパスワード推測攻撃を防ぐために、管理者が mysql グループにユーザーをさらに追加しないことを推奨しています。
  • MariaDB 10.5 では、PAM (Pluggable Authentication Modules) プラグインとその関連ファイルが新しいサブパッケージ mariadb-pam に移動しました。したがって、MariaDB に PAM 認証を使用しないシステムに、新しい setuid root バイナリーが導入されることはありません。
  • rh-mariadb105-mariadb-pam パッケージには PAM プラグインバージョンの両方が含まれています。バージョン 2.0 はデフォルトで、バージョン 1.0 は auth_pam_v1 共有オブジェクトライブラリーとして利用できます。
  • MariaDB サーバーでは、デフォルトで rh-mariadb105-mariadb-pam パッケージがインストールされないことに注意してください。MariaDB 10.5 で PAM 認証プラグインを利用できるようにするには、rh-mariadb105-mariadb-pam パッケージを手動でインストールします。
詳細は、MariaDB 10.4 の変更および MariaDB 10.5 の変更に関するアップストリームドキュメントを参照してください。MariaDB 10.4 へのアップグレードおよび MariaDB 10.5 へのアップグレードに関するアップストリーム情報も参照してください。

5.1.2. rh-mariadb103 から rh-mariadb105 Software Collection へのアップグレード

重要
アップグレードする前に、MariaDB データベースを含むすべてのデータのバックアップを作成します。
  1. rh-mariadb103 データベースサーバーが実行している場合は停止します。
    サーバーを停止する前に、innodb_fast_shutdown オプションを 0 に設定し、InnoDB が完全なパージや挿入バッファーマージを含む低速なシャットダウンを実行します。アップストリームのドキュメント で、このオプションの詳細を参照してください。この操作は、通常のシャットダウンの場合よりも長い時間がかかる可能性があります。
    mysql -uroot -p -e "SET GLOBAL innodb_fast_shutdown = 0"
    rh-mariadb103 サーバーを停止します。
    systemctl stop rh-mariadb103-mariadb.service
  2. mysql_upgrade ユーティリティーを提供するサブパッケージを含む rh-mariadb105 Software Collection をインストールします。
    yum install rh-mariadb105-mariadb-server rh-mariadb105-mariadb-server-utils
    これらの Collections が競合しないため、rh-mariadb105 Software Collection のインストール中は rh-mariadb103 Software Collection をインストールすることができることに注意してください。
  3. /etc/opt/rh/rh-mariadb105/my.cnf ファイルおよび /etc/ opt/rh/rh-mariadb105/my.cnf.d/ ディレクトリーに保存されている rh-mariadb105 の設定を検証します。これを /etc/opt/rh/rh-mariadb103/my.cnf および /etc/opt/rh/rh-mariadb103/my.cnf.d/ に保存されている rh-mariadb103 の設定と比較して、必要に応じて調整します。
  4. rh-mariadb103 Software Collection のすべてのデータは、異なる設定しない限り、/var/opt/rh/rh-mariadb103/lib/mysql/ ディレクトリーに保存されます。このディレクトリーのすべての内容を /var/opt/rh/rh-mariadb105/lib/mysql/ にコピーします。コンテンツを移動することはできますが、アップグレードを続行する前にデータをバックアップすることを忘れないようにしてください。データが mysql ユーザーによって所有され、SELinux コンテキストが正しいことを確認します。
  5. rh-mariadb105 データベースサーバーを起動します。
    systemctl start rh-mariadb105-mariadb.service
  6. データ移行を実行します。MDEV-14637 で導入されたアップストリームの変更により、mysql_upgrade コマンドを実行する必要があることに注意してください。
    scl enable rh-mariadb105 mysql_upgrade
    root ユーザーに空ではないパスワードが定義されている場合 (パスワードを定義しておく必要あり) は、-p オプションを指定して mysql_upgrade ユーティリティーを呼び出してパスワードを指定する必要があります。
    scl enable rh-mariadb105 -- mysql_upgrade -p
    rh-mariadb105*-syspaths パッケージのインストール時には、scl enable コマンドは必要ありません。ただし、*-syspaths パッケージは、ベースの Red Hat Enterprise Linux システムと、rh-mariadb103 および rh-mysql80 Software Collections からの対応するパッケージと競合します。

5.2. MySQL 8.0 への移行

rh-mysql80 Software Collection は、デフォルトの MySQL 実装として MariaDB 5.5 を含む Red Hat Enterprise Linux 7 で利用できます。
rh-mysql80 Software Collection は、*-syspaths パッケージがインストールされていない限り、コアシステムの mysql パッケージまたは mariadb パッケージ、rh-mysql* または rh-mariadb* Software Collections と競合しません (以下を参照)。また、複数のバージョンを同時に実行することも可能ですが、特定リソースが競合しないようにするため、ポート番号と my.cnf ファイルのソケットを変更する必要があります。
MySQL 5.7 からのみ MySQL 8.0 にアップグレードできることに注意してください。以前のバージョンからアップグレードする必要がある場合は、最初に MySQL 5.7 にアップグレードしてください。手順は、Migration to MySQL 5.7 を参照してください。

5.2.1. MySQL 5.7 と MySQL 8.0 間の主な相違点

rh-mysql80 ソフトウェアの収集に固有の相違点

  • Red Hat Enterprise Linux 7 のクライアントツールおよびライブラリーは、アップストリームの MySQL 8.0 バージョンでデフォルトで使用されている caching_sha2_password メソッドと互換性がないため、rh-mysql80 Software Collection が提供する MySQL 8.0 サーバーは、mysql_native_password をデフォルトの認証プラグインとして使用します。
    デフォルトの認証プラグインを caching_sha2_password に変更するには、/etc/opt/rh/rh-mysql80/my.cnf.d/mysql-default-authentication-plugin.cnf ファイルを次のように変更します。
    [mysqld]
    default_authentication_plugin=caching_sha2_password
    caching_sha2_password 認証プラグインの詳細は、アップストリームのドキュメント を参照してください。
  • rh-mysql80 Software Collection には、rh-mysql80-mysql-config-syspaths パッケージ、rh-mysql80-mysql-server-syspaths パッケージ、および rh-mysql80-mysql-syspaths パッケージをインストールする rh-mysql80-syspaths パッケージが含まれます。これらのサブパッケージは、バイナリー、スクリプト、man ページなどのシステム全体のラッパーを提供します。rh-mysql80*-syspaths パッケージのインストール後に、rh-mysql80* パッケージによって提供されるバイナリーおよびスクリプトが正しく動作するかを scl enable コマンドを使用して確認する必要はありません。*-syspaths パッケージは、ベースの Red Hat Enterprise Linux システムと、rh-mariadb103 および rh-mariadb105 Software Collections からの対応するパッケージと競合することに注意してください。syspaths の詳細は、Red Hat Software Collections Packaging Guide を参照してください。

MySQL 8.0 の一般的な変更点

  • バイナリーロギングは、サーバーの起動時にデフォルトで有効になります。--log-bin オプションが指定されていない場合でも、log_bin システム変数はデフォルトで ON に設定されます。バイナリーロギングを無効にするには、起動時に --skip-log-bin または --disable-log-bin オプションを指定します。
  • CREATE FUNCTION ステートメントを許可するには、DETERMINISTICNO SQL、または READS SQL DATA のキーワードの中から少なくとも 1 つを明示的に指定する必要があります。指定しない場合は、エラーが発生します。
  • アカウント管理に関連する特定の機能が削除されました。つまり、GRANT ステートメントを使用して、認証、SSL、リソース制限などの特権割り当て以外のアカウントプロパティーを変更できなくなりました。アカウント作成時にに上記のプロパティーを確立するには、CREATE USER ステートメントを使用します。これらのプロパティーを変更するには、ALTER USER ステートメントを使用します。
  • クライアント側で一部の SSL 関連のオプションが削除されました。--ssl =1 または --enable-ssl の代わりに --ssl-mode=REQUIRED オプションを使用します。--ssl=0--skip-ssl、または --disable-ssl の代わりに --ssl-mode=DISABLED オプションを使用してください。--ssl- verify-server-cert オプションの代わりに --ssl-mode=VERIFY_IDENTITY オプションを使用してください。このオプションは、サーバー側では変更されないままになることに注意してください。
  • デフォルトの文字セットが、latin1 から utf8mb4 に変更しました。
  • utf8 文字セットは現時点で utf8mb3 のエイリアスになりますが、今後は utf8mb4 への参照となります。曖昧さを防ぐには、utf8 ではなく文字セット参照に utf8mb4 を明示的に指定します。
  • SET 以外のステートメントでユーザー変数を設定することが非推奨になりました。
  • 以前エラーログをシステムログに記録した log_syslog 変数は削除されました。
  • 空間データのサポートに対する互換性のない変更がいくつか導入されています。
  • GROUP BY 句の非推奨の ASC または DESC 修飾子が削除されました。特定のソート順序を生成するには、ORDER BY 句を指定します。
以前のバージョンと比較した MySQL 8.0 における詳細な変更については、アップストリームのドキュメントWhat Is New in MySQL 8.0およびChanges Affecting Upgrades to MySQL 8.0を参照してください。

5.2.2. rh-mysql80 Software Collection へのアップグレード

重要
アップグレードする前に、MySQL データベースを含むすべてのデータのバックアップを作成します。
  1. rh-mysql80 Software Collection をインストールします。
    yum install rh-mysql80-mysql-server
  2. /etc/opt/rh/rh-mysql80/my.cnf ファイルおよび /etc/opt/rh/rh-mysql80/my.cnf.d/ ディレクトリーに保存されている rh-mysql80 の設定を検証します。これを /etc/opt/rh/rh-mysql57/my.cnf/etc/opt/rh/rh-mysql57/my.cnf.d/ に保存されている rh-mysql57 の設定と比較して、必要に応じて調整します。
  3. rh-mysql57 データベースサーバーが実行している場合は停止します。
    systemctl stop rh-mysql57-mysqld.service
  4. rh-mysql57 Software Collection のすべてのデータは /var/opt/rh/rh-mysql57/lib/mysql/ ディレクトリーに保存されます。このディレクトリーのすべての内容を /var/opt/rh/rh-mysql80/lib/mysql/ にコピーします。コンテンツを移動することもできますが、アップグレードを続行する前にデータのバックアップを作成することを忘れないようにしてください。
  5. rh-mysql80 データベースサーバーを起動します。
    systemctl start rh-mysql80-mysqld.service
  6. データ移行を実行します。
    scl enable rh-mysql80 mysql_upgrade
    root ユーザーに空ではないパスワードが定義されている場合 (パスワードを定義しておく必要あり) は、-p オプションを指定して mysql_upgrade ユーティリティーを呼び出してパスワードを指定する必要があります。
    scl enable rh-mysql80 -- mysql_upgrade -p
    rh-mysql80*-syspaths パッケージのインストール時には、scl enable コマンドは必要ありません。ただし、*-syspaths パッケージは、ベースの Red Hat Enterprise Linux システムと、rh-mariadb103 および rh-mariadb105 Software Collections からの対応するパッケージと競合します。

5.3. PostgreSQL 13 への移行

Red Hat Software Collections 3.8 には PostgreSQL 13 が同梱されており、Red Hat Enterprise Linux 7 でのみ利用できます。rh-postgresql13 Software Collection は、PostgreSQL または PostgreSQL Software Collection のベースの Red Hat Enterprise Linux システムバージョンと並行して、同じマシンに安全にインストールできます。複数のバージョンの PostgreSQL を同時にマシン上で実行することもできますが、別のポートまたは IP アドレスを使用し、SELinux ポリシーを調整する必要があります。
rh-postgresql13 Software Collection には、バイナリー、スクリプト、man ページなどのシステム全体のラッパーを提供するパッケージをインストールする rh-postgresql13-syspaths パッケージが含まれます。rh-postgresql13*-syspaths パッケージのインストール後に、rh-postgresql13* パッケージによって提供されるバイナリーおよびスクリプトが正しく動作するかを scl enable コマンドを使用して確認する必要はありません。*-syspaths パッケージは、ベースの Red Hat Enterprise Linux システムと対応するパッケージと競合することに注意してください。syspaths の詳細は、Red Hat Software Collections パッケージガイドを参照してください。
重要
PostgreSQL 13 に移行する前に、アップストリームによる PostgreSQL 13 の互換性に関する注意事項を参照してください。
コンテナーで PostgreSQL データベースをアップグレードする場合は、コンテナー固有の手順を参照してください。
以下の表は、postgresql パッケージが提供する PostgreSQL の Red Hat Enterprise Linux 7 システムバージョン、ならびに rh-postgresql12 および rh-postgresql13 Software Collection の異なるパスの概要を示しています。

表5.1 PostgreSQL パスの相違点

コンテンツpostgresqlrh-postgresql12rh-postgresql13
実行ファイル/usr/bin//opt/rh/rh-postgresql12/root/usr/bin//opt/rh/rh-postgresql13/root/usr/bin/
ライブラリー/usr/lib64//opt/rh/rh-postgresql12/root/usr/lib64//opt/rh/rh-postgresql13/root/usr/lib64/
資料/usr/share/doc/postgresql/html//opt/rh/rh-postgresql12/root/usr/share/doc/postgresql/html//opt/rh/rh-postgresql13/root/usr/share/doc/postgresql/html/
PDF ドキュメント/usr/share/doc/postgresql-docs//opt/rh/rh-postgresql12/root/usr/share/doc/postgresql-docs//opt/rh/rh-postgresql13/root/usr/share/doc/postgresql-docs/
Contrib ドキュメント/usr/share/doc/postgresql-contrib//opt/rh/rh-postgresql12/root/usr/share/doc/postgresql-contrib//opt/rh/rh-postgresql13/root/usr/share/doc/postgresql-contrib/
ソース未インストール未インストール未インストール
データ/var/lib/pgsql/data//var/opt/rh/rh-postgresql12/lib/pgsql/data//var/opt/rh/rh-postgresql13/lib/pgsql/data/
バックアップエリア/var/lib/pgsql/backups//var/opt/rh/rh-postgresql12/lib/pgsql/backups//var/opt/rh/rh-postgresql13/lib/pgsql/backups/
テンプレート/usr/share/pgsql//opt/rh/rh-postgresql12/root/usr/share/pgsql//opt/rh/rh-postgresql13/root/usr/share/pgsql/
手順言語/usr/lib64/pgsql//opt/rh/rh-postgresql12/root/usr/lib64/pgsql//opt/rh/rh-postgresql13/root/usr/lib64/pgsql/
開発ヘッダー/usr/include/pgsql//opt/rh/rh-postgresql12/root/usr/include/pgsql//opt/rh/rh-postgresql13/root/usr/include/pgsql/
他の共有データ/usr/share/pgsql//opt/rh/rh-postgresql12/root/usr/share/pgsql//opt/rh/rh-postgresql13/root/usr/share/pgsql/
リグレッションテスト/usr/lib64/pgsql/test/regress/ (-test パッケージ内)/opt/rh/rh-postgresql12/root/usr/lib64/pgsql/test/regress/ (-test パッケージ内)/opt/rh/rh-postgresql13/root/usr/lib64/pgsql/test/regress/ (-test パッケージ内)

5.3.1. Red Hat Enterprise Linux システムバージョンの PostgreSQL から PostgreSQL 13 Software Collection への移行

Red Hat Enterprise Linux 7 には PostgreSQL 9.2 が同梱されています。PostgreSQL の Red Hat Enterprise Linux システムバージョンから rh-postgresql13 Software Collection にデータを移行するには、pg_upgrade ツール (推奨) を使用して高速アップグレードを実行するか、SQL コマンドでデータベースデータをテキストファイルにダンプし、新しいデータベースにインポートします。2 つ目の方法は、通常大幅に遅くなるため、手動で修正が必要になる場合があります。このアップグレード方法の詳細は、PostgreSQL ドキュメント を参照してください。
重要
Red Hat Enterprise Linux システムバージョンの PostgreSQL から PostgreSQL 13 にデータを移行する前に、デフォルトで /var/lib/pgsql/data/ ディレクトリーに格納される PostgreSQL データベースファイルを含む、すべてのデータをバックアップしてください。

手順5.1 pg_upgrade ツールを使用した高速アップグレード

PostgreSQL サーバーの高速アップグレードを実行するには、以下の手順を実行します。
  1. 古い PostgreSQL サーバーを停止し、データが一貫性のない状態にあることを確認します。これを行うには、root で次のコマンドを実行します。
    systemctl stop postgresql.service
    サーバーが起動していないことを確認するには、以下を入力します。
    systemctl status postgresql.service
  2. 古いディレクトリー /var/lib/pgsql/data/ が存在することを確認します。
    file /var/lib/pgsql/data/
    データのバックアップを作成します。
  3. 新しいデータディレクトリー /var/opt/rh/rh-postgresql13/lib/pgsql/data/ が存在しないことを確認します。
    file /var/opt/rh/rh-postgresql13/lib/pgsql/data/
    PostgreSQL 13 の新規インストールを実行している場合は、このディレクトリーはシステムに存在しないはずです。その場合は、root で以下のコマンドを実行してバックアップを作成します。
    mv /var/opt/rh/rh-postgresql13/lib/pgsql/data{,-scl-backup}
  4. root で以下のコマンドを実行して、新しいサーバーのデータベースデータをアップグレードします。
    scl enable rh-postgresql13 -- postgresql-setup --upgrade
    または、/opt/rh/rh-postgresql13/root/usr/bin/postgresql-setup --upgrade コマンドを使用できます。
    別のバージョンの PostgreSQL からアップグレードする場合には、--upgrade-from オプションを使用できます。可能なアップグレードシナリオのリストは、--upgrade-ids オプションを使用して利用できます。
    作成された /var/lib/pgsql/upgrade_rh-postgresql13-postgresql.log ログファイルを読み取り、アップグレード中に問題が発生したかどうかを確認することが推奨されます。
  5. root で新しいサーバーを起動します。
    systemctl start rh-postgresql13-postgresql.service
    また、以下のように analyze_new_cluster.sh スクリプトを実行することが推奨されます。
    su - postgres -c 'scl enable rh-postgresql13 ~/analyze_new_cluster.sh'
  6. 必要に応じて、システムの起動時に PostgreSQL 13 サーバーが自動的に起動するように設定できます。古いシステム PostgreSQL サーバーを無効にするには、root で以下のコマンドを入力します。
    chkconfig postgresql off
    PostgreSQL 13 サーバーを有効にするには、root で以下を入力します。
    chkconfig rh-postgresql13-postgresql on
  7. デフォルトの設定と異なる場合は、設定ファイル (特に /var/opt/rh/rh-postgresql13/lib/pgsql/data/pg_hba.conf 設定ファイル) を必ず更新してください。それ以外の場合は、postgres ユーザーのみがデータベースにアクセスできます。

手順5.2 ダンプおよびリストアアップグレードの実行

PostgreSQL サーバーのダンプおよび復元アップグレードを実行するには、以下の手順を実行します。
  1. シェルプロンプトで、root で以下を入力し、古い PostgreSQL サーバーが実行中であることを確認します。
    systemctl start postgresql.service
  2. PostgreSQL データベースの全データをスクリプトファイルにダンプします。root で以下のコマンドを実行します。
    su - postgres -c 'pg_dumpall > ~/pgdump_file.sql'
  3. root で以下のコマンドを実行して、古いサーバーを停止します。
    systemctl stop postgresql.service
  4. 新規サーバーのデータディレクトリーを root として初期化します。
    scl enable rh-postgresql13 -- postgresql-setup initdb
  5. root で新しいサーバーを起動します。
    systemctl start rh-postgresql13-postgresql.service
  6. 以前に作成した SQL ファイルからデータをインポートします。
    su - postgres -c 'scl enable rh-postgresql13 "psql -f ~/pgdump_file.sql postgres"'
  7. 必要に応じて、システムの起動時に PostgreSQL 13 サーバーが自動的に起動するように設定できます。古いシステム PostgreSQL サーバーを無効にするには、root で以下のコマンドを入力します。
    chkconfig postgresql off
    PostgreSQL 13 サーバーを有効にするには、root で以下を入力します。
    chkconfig rh-postgresql13-postgresql on
  8. デフォルトの設定と異なる場合は、設定ファイル (特に /var/opt/rh/rh-postgresql13/lib/pgsql/data/pg_hba.conf 設定ファイル) を必ず更新してください。それ以外の場合は、postgres ユーザーのみがデータベースにアクセスできます。

5.3.2. PostgreSQL 12 Software Collection から PostgreSQL 13 Software Collection への移行

データを rh-postgresql12 Software Collection から rh-postgresql13 コレクションに移行するには、pg_upgrade ツール (推奨) を使用して高速アップグレードを実行するか、SQL コマンドでデータベースデータをテキストファイルにダンプして新しいデータベースにインポートします。2 つ目の方法は、通常大幅に遅くなるため、手動で修正が必要になる場合があります。このアップグレード方法の詳細は、PostgreSQL ドキュメント を参照してください。
重要
データを PostgreSQL 12 から PostgreSQL 13 に移行する前に、デフォルトで /var/opt/rh/rh-postgresql12/lib/pgsql/data/ ディレクトリーにある PostgreSQL データベースファイルを含む、すべてのデータのバックアップを作成してください。

手順5.3 pg_upgrade ツールを使用した高速アップグレード

PostgreSQL サーバーの高速アップグレードを実行するには、以下の手順を実行します。
  1. 古い PostgreSQL サーバーを停止し、データが一貫性のない状態にあることを確認します。これを行うには、root で次のコマンドを実行します。
    systemctl stop rh-postgresql12-postgresql.service
    サーバーが起動していないことを確認するには、以下を入力します。
    systemctl status rh-postgresql12-postgresql.service
  2. 古いディレクトリー /var/opt/rh/rh-postgresql12/lib/pgsql/data/ が存在することを確認します。
    file /var/opt/rh/rh-postgresql12/lib/pgsql/data/
    データのバックアップを作成します。
  3. 新しいデータディレクトリー /var/opt/rh/rh-postgresql13/lib/pgsql/data/ が存在しないことを確認します。
    file /var/opt/rh/rh-postgresql13/lib/pgsql/data/
    PostgreSQL 13 の新規インストールを実行している場合は、このディレクトリーはシステムに存在しないはずです。その場合は、root で以下のコマンドを実行してバックアップを作成します。
    mv /var/opt/rh/rh-postgresql13/lib/pgsql/data{,-scl-backup}
  4. root で以下のコマンドを実行して、新しいサーバーのデータベースデータをアップグレードします。
    scl enable rh-postgresql13 -- postgresql-setup --upgrade --upgrade-from=rh-postgresql12-postgresql
    または、/opt/rh/rh-postgresql13/root/usr/bin/postgresql-setup --upgrade --upgrade-from=rh-postgresql12-postgresql コマンドを使用できます。
    別のバージョンの PostgreSQL からアップグレードする場合には、--upgrade-from オプションを使用できます。可能なアップグレードシナリオのリストは、--upgrade-ids オプションを使用して利用できます。
    作成された /var/lib/pgsql/upgrade_rh-postgresql13-postgresql.log ログファイルを読み取り、アップグレード中に問題が発生したかどうかを確認することが推奨されます。
  5. root で新しいサーバーを起動します。
    systemctl start rh-postgresql13-postgresql.service
    また、以下のように analyze_new_cluster.sh スクリプトを実行することが推奨されます。
    su - postgres -c 'scl enable rh-postgresql13 ~/analyze_new_cluster.sh'
  6. 必要に応じて、システムの起動時に PostgreSQL 13 サーバーが自動的に起動するように設定できます。古い PostgreSQL 12 サーバーを無効にするには、root で以下のコマンドを入力します。
    chkconfig rh-postgresql12-postgreqsql off
    PostgreSQL 13 サーバーを有効にするには、root で以下を入力します。
    chkconfig rh-postgresql13-postgresql on
  7. デフォルトの設定と異なる場合は、設定ファイル (特に /var/opt/rh/rh-postgresql13/lib/pgsql/data/pg_hba.conf 設定ファイル) を必ず更新してください。それ以外の場合は、postgres ユーザーのみがデータベースにアクセスできます。

手順5.4 ダンプおよびリストアアップグレードの実行

PostgreSQL サーバーのダンプおよび復元アップグレードを実行するには、以下の手順を実行します。
  1. シェルプロンプトで、root で以下を入力し、古い PostgreSQL サーバーが実行中であることを確認します。
    systemctl start rh-postgresql12-postgresql.service
  2. PostgreSQL データベースの全データをスクリプトファイルにダンプします。root で以下のコマンドを実行します。
    su - postgres -c 'scl enable rh-postgresql12 "pg_dumpall > ~/pgdump_file.sql"'
  3. root で以下のコマンドを実行して、古いサーバーを停止します。
    systemctl stop rh-postgresql12-postgresql.service
  4. 新規サーバーのデータディレクトリーを root として初期化します。
    scl enable rh-postgresql13 -- postgresql-setup initdb
  5. root で新しいサーバーを起動します。
    systemctl start rh-postgresql13-postgresql.service
  6. 以前に作成した SQL ファイルからデータをインポートします。
    su - postgres -c 'scl enable rh-postgresql13 "psql -f ~/pgdump_file.sql postgres"'
  7. 必要に応じて、システムの起動時に PostgreSQL 13 サーバーが自動的に起動するように設定できます。古い PostgreSQL 12 サーバーを無効にするには、root で以下のコマンドを入力します。
    chkconfig rh-postgresql12-postgresql off
    PostgreSQL 13 サーバーを有効にするには、root で以下を入力します。
    chkconfig rh-postgresql13-postgresql on
  8. デフォルトの設定と異なる場合は、設定ファイル (特に /var/opt/rh/rh-postgresql13/lib/pgsql/data/pg_hba.conf 設定ファイル) を必ず更新してください。それ以外の場合は、postgres ユーザーのみがデータベースにアクセスできます。

5.4. nginx 1.20 への移行

rh-nginx120 Software Collection のルートディレクトリーは /opt/rh/rh-nginx120/root/ にあります。エラーログは、デフォルトで /var/opt/rh/rh-nginx120/log/nginx に保存されます。
設定ファイルは /etc/opt/rh/rh-nginx120/nginx/ ディレクトリーに保存されます。nginx 1.20 の設定ファイルは、これまでの nginx Software Collections と同じ構文で、ほぼ同じフォーマットになっています。
/etc/opt/rh/rh-nginx120/nginx/default.d/ ディレクトリーの設定ファイル (.conf 拡張子) は、ポート 80 のデフォルトのサーバーブロック設定に含まれます。
重要
nginx 1.18 から nginx 1.20 にアップグレードする前に、/opt/rh/nginx118/root/ ツリーにある Web ページ、および /etc/opt/rh/nginx118/nginx/ ツリーにある設定ファイルを含むすべてのデータのバックアップを作成します。
設定ファイルの変更や Web アプリケーションのセットアップなど、特定の変更を加えた場合、/opt/rh/nginx118/root/ ツリーでこれらの変更を新しい /opt/rh/rh-nginx120/root/ ディレクトリーおよび /etc/opt/rh/rh-nginx120/nginx/ ディレクトリーに対して複製します。
この手順に従って、 nginx 1.16 から nginx 1.20 へ直接アップグレードできます。この場合は、適切なパスを使用してください。
nginx の公式ドキュメントは、http://nginx.org/en/docs/を参照してください。

5.5. Redis 6 への移行

rh-redis5 Software Collection で提供される Redis 5.0 は、主に Redis 6.0 の狭義のサブセットです。したがって、バージョン 5.0 からバージョン 6.0 へのアップグレード時には、主要な問題が発生しません。
Redis Cluster をバージョン 6.0 にアップグレードするには、全インスタンスを大量に再起動する必要になります。

互換性に関する注意事項

  • セットキーが存在しない場合は、SPOP <count> コマンドは null を返しなくなりました。Redis 6 では、コマンドは、このシナリオでは空のセットを返します。これは、引数 0 で呼び出された場合と同様です。
  • 後方互換性のないマイナーな変更は、アップストリームのリリースノート を参照してください。