最新バージョンへのデータベースの移行

このセクションでは、PostgreSQLデータベースを最新バージョンにアップグレードする方法について説明します。 すでにPostgreSQL 14を使用している場合、この移行を実行する必要はありません。

最新バージョンのSUSE Managerにアップグレードする場合、基盤となるオペレーティングシステムに応じて、PostgreSQLバージョン13または14を使用する必要があります。

  • SUSE Linux Enterprise Server 15 SP4を実行している場合、PostgreSQL 14を使用します。

  • openSUSE Leap 15.4を実行している場合、PostgreSQL 14を使用します。

1. アップグレードの準備

アップグレードを開始する前に、既存のSUSE Managerサーバを準備して、データベースのバックアップを作成します。

PostgreSQLは/var/lib/pgsql/data/にデータを保存します。

プロシージャ: アップグレードの準備
  1. アクティブなPostgreSQLのバージョンを確認します。

    psql --version
  2. アクティブなsmdbaのバージョンを確認します。

    rpm -q smdba

    PostgreSQL 14ではsmdbaのバージョン1.7.6以降が必要です。

  3. データベースのバックアップを実行します。 バックアップの詳細については、バックアップと復元を参照してください。

2. PostgreSQLのアップグレード

移行を実行する前に、必ずデータベースのバックアップを作成してください。

PostgreSQLのアップグレードは、通常のアップグレードと高速アップグレードの2つの方法で実行できます。

通常のアップグレードでは、データベースの完全なコピーが作成されるため、既存のデータベースサイズの2倍の使用可能容量が必要になります。 通常のアップグレードは、データベースのサイズおよびストレージシステムの速度に応じて、長時間を要する場合があります。

高速アップグレードには数分しかかからず、追加のディスク容量はほぼ不要です。 しかし、高速アップグレードが失敗すると、データベースをバックアップから復元する必要があります。 高速アップグレードでは、ディスク容量を使い果たすリスクが軽減されますが、バックアップが存在しないまたは復元できないときにデータを失うリスクが高まります。 通常のアップグレードでは、ファイル間のハードリンクを作成する代わりに、データベースファイルをコピーします。

PostgreSQLは/var/lib/pgsql/data/にデータを保存します。

DBアップグレードを実行する前に、PostgreSQLユーザがシステムに存在することを確認してください。 /etc/passwdエントリは次のようになります。

postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
プロシージャ: 通常のアップグレードの実行
  1. データベースのバックアップを実行します。 バックアップの詳細については、バックアップと復元を参照してください。

  2. アップグレードを開始します。 次のスクリプトを実行します。

    /usr/lib/susemanager/bin/pg-migrate-x-to-y.sh
  3. アップグレードが正常に完了すると、古いデータベースのディレクトリを安全に削除して、使用されていたディスク容量を再利用できます。 古いディレクトリの名前は、開始したバージョンに応じて、/var/lib/pgsql/data-pg12または/var/lib/pgsql/data-pg10に変更されます。

pg-migrate-x-to-y.shスクリプトは次の操作を実行します。

  • spacewalkサービスを停止する

  • 実行中のデータベースをシャットダウンする

  • 最新のPostgreSQLがインストールされているかどうかを確認し、必要に応じてインストールする

  • 新しいデフォルトとして以前のバージョンのPostgreSQL から最新バージョンに切り替える

  • データベースの移行を開始する

  • SUSE Managerによる使用に合わせて調整されたPostgreSQL設定ファイルを作成する

  • データベースおよびspacewalkのサービスを開始する

アップグレードが失敗すると、移行スクリプトは、データベースを元の状態に復元しようとします。

プロシージャ: PostgreSQLの高速アップグレードの実行
  1. データベースのバックアップを実行します。 確認済みのデータベースのバックアップがない場合、高速アップグレードを開始しないでください。 バックアップの詳細については、バックアップと復元を参照してください。

  2. アップグレードを開始します。 スクリプトを実行します。

    /usr/lib/susemanager/bin/pg-migrate-x-to-y.sh -f
  3. アップグレードが正常に完了すると、古いデータベースのディレクトリを安全に削除して、使用されていたディスク容量を再利用できます。 古いディレクトリの名前は、開始したバージョンに応じて、/var/lib/pgsql/data-pg12または/var/lib/pgsql/data-pg10に変更されます。