コンテナを使用して AlloyDB Omni のマイナー バージョン アップグレードを実行する

ドキュメントのバージョンを選択してください。

データを移行せずにバグの修正、セキュリティ パッチ、マイナーな機能強化を適用するには、同じメジャー バージョン トラックの新しいマイナー バージョン イメージにコンテナ イメージを置き換えて、AlloyDB Omni のマイナー データベース バージョンをアップグレードします。マイナー バージョンのアップグレードでは、既存のホストデータ ディレクトリと構成ファイルが保持されます。アップグレードされたインストールを検証したり、必要に応じて以前のマイナー バージョンにロールバックしたりできます。

PostgreSQL のメジャー バージョン間でアップグレードするには、VM で AlloyDB Omni をアップグレードするをご覧ください。

このページの手順は、スタンドアロンの単一ノードデプロイと、マルチノード トポロジの個々のデータベース ノード(リードレプリカや高可用性スタンバイ ノードを使用したデプロイなど)に適用されます。設定に基づいて、次の考慮事項を確認してください。

  • 外部データ ディレクトリ: コンテナを停止して削除する前に、データベース データがコンテナにマウントされた永続ホスト ディレクトリ(-v DATA_DIR:/var/lib/postgresql/data など)に保存されていることを確認します。コンテナ ファイル システム内にのみデータを保存するコンテナを削除すると、データベース データが削除されます。詳細については、コンテナを使用して AlloyDB Omni をインストールするをご覧ください。
  • マルチノード トポロジ: プライマリ ノードをアップグレードする前に、すべてのレプリカノードとスタンバイ ノードをアップグレードします。高可用性設定では、コンテナを停止する前に自動フェイルオーバーまたは障害検出を一時停止し、以前のプライマリ ノードをアップグレードする前に、アップグレードされたスタンバイ ノードにスイッチオーバーします。
  • 拡張機能を含むカスタム コンテナ イメージ: PostGIS や Orafce などのサードパーティ拡張機能を含むカスタム コンテナ イメージをビルドした場合は、コンテナを再作成する前に、更新されたマイナー バージョンのベースイメージを使用してカスタム コンテナ イメージを再ビルドします。

始める前に

AlloyDB Omni をアップグレードする前に、次の手順を完了します。

  1. コンテナを交換するにはデータベース サービスを一時的に停止する必要があるため、メンテナンスの時間枠または短いサービス ダウンタイムを計画します。
  2. アップグレードを開始する前に、データベースのフル バックアップを取得します。詳細については、バックアップと復元の概要をご覧ください。
  3. マルチノード トポロジをアップグレードする場合は、現在のプライマリ ノードとすべてのスタンバイ ノードまたはレプリカノードを特定して、スタンバイ ノードとレプリカノードを最初にアップグレードできるようにします。
  4. 実行中のコンテナを検査して、現在のイメージ、ホストデータ ディレクトリのマウント、ポート マッピング、環境変数、ランタイム フラグを記録します。これにより、同じ構成でコンテナを再作成できます。

    Docker

    docker inspect CONTAINER_NAME

    Podman

    podman inspect CONTAINER_NAME

    CONTAINER_NAME は、AlloyDB Omni コンテナの名前に置き換えます(例: my-omni)。

  5. アップグレードする前に、現在の AlloyDB Omni データベース バージョンを確認します。

    Docker

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

更新されたコンテナ イメージを pull する

ターゲット マイナー バージョンのコンテナ イメージをホストマシンに pull します。

Docker

docker pull IMAGE_URI

Podman

podman pull IMAGE_URI

IMAGE_URI は、アップグレード先のコンテナ イメージ URI とマイナー バージョン タグに置き換えます。たとえば、Debian イメージの場合は google/alloydbomni:18.4.0、Red Hat Universal Base Image(UBI)の場合は google/alloydbomni:18.4.0-ubi9 に置き換えます。

デプロイで PostGIS や Orafce などの拡張機能を含むカスタム コンテナ イメージを使用している場合は、Dockerfile の FROM 命令または OMNI_VERSION ビルド引数を更新して、更新されたマイナー バージョン タグを参照します。その後、更新されたカスタム イメージをビルドしてから続行します。

AlloyDB Omni をアップグレードする

AlloyDB Omni のインストールを新しいマイナー バージョンにアップグレードするには、各ノードで次の手順を完了します。マルチノード トポロジでは、プライマリ ノードをアップグレードする前に、各スタンバイ ノードまたはレプリカノードで次の手順を完了します。

  1. 既存の AlloyDB Omni コンテナを停止して削除します。

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME

    コンテナを停止して削除しても、マウントされたホストデータ ディレクトリ内のデータベース ファイルには影響しません。

  2. 更新されたマイナー バージョン イメージを使用して、既存のホストデータ ディレクトリをマウントし、AlloyDB Omni コンテナを再作成して起動します。

    Docker

    docker run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      IMAGE_URI

    Podman

    podman run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      IMAGE_URI

    次のように置き換えます。

    • CONTAINER_NAME: AlloyDB Omni コンテナの名前(my-omni など)。
    • PASSWORD: コンテナの postgres ユーザーのパスワード。初期化済みの既存のデータ ディレクトリをマウントすると、コンテナはデータベースに構成されている既存のパスワードを保持します。
    • DATA_DIR: 既存のデータベース データが保存されているホスト ディレクトリ パス。
    • HOST_PORT: コンテナポート 5432 を公開するホストマシンの TCP ポート(例: 5432)。
    • IMAGE_URI: 更新されたマイナー バージョンのコンテナ イメージ URI(または再ビルドされたカスタム イメージ URI)(例: google/alloydbomni:18.4.0)。

    ホストデータ ディレクトリのファイル所有権がコンテナの postgres ユーザーと一致するように、以前のコンテナと同じベース OS イメージ バリアント(Debian または UBI)を使用します。以前のコンテナで --ulimit、--log-driver、--shm-size、-v /dev/shm:/dev/shm などの追加のランタイム フラグを使用していた場合は、コンテナを再作成するときにそれらのフラグを含めます。詳細については、本番環境用に AlloyDB Omni を設定するをご覧ください。

アップグレードを確認する

コンテナを再作成して起動したら、データベース サービスが更新されたマイナー バージョンを実行していることを確認します。

  1. AlloyDB Omni コンテナのステータスを確認し、ステータスが Up であることを確認します。

    Docker

    docker ps --filter "name=CONTAINER_NAME"

    Podman

    podman ps --filter "name=CONTAINER_NAME"
  2. データベースに接続し、アップグレードされたバージョンが有効であることを確認します。

    Docker

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

アップグレードをロールバックする

AlloyDB Omni のインストールを以前のマイナー バージョンに戻す必要がある場合は、アップグレードされたコンテナを停止して削除し、以前のマイナー バージョンのイメージを使用するコンテナを起動します。

  1. アップグレードされた AlloyDB Omni コンテナを停止して削除します。

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME
  2. 以前のマイナー バージョンのイメージを使用して、同じホストデータ ディレクトリをマウントして、コンテナを再作成して起動します。

    Docker

    docker run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      ROLLBACK_IMAGE_URI

    Podman

    podman run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      ROLLBACK_IMAGE_URI

    次のように置き換えます。

    • CONTAINER_NAME: AlloyDB Omni コンテナの名前(my-omni など)。
    • PASSWORD: コンテナの postgres ユーザーのパスワード。初期化済みの既存のデータ ディレクトリをマウントすると、コンテナはデータベースに構成されている既存のパスワードを保持します。
    • DATA_DIR: 既存のデータベース データが保存されているホスト ディレクトリ パス。
    • HOST_PORT: コンテナポート 5432 を公開するホストマシンの TCP ポート(例: 5432)。
    • ROLLBACK_IMAGE_URI: 以前のインストールのコンテナ イメージ URI とマイナー バージョン タグ(または以前のカスタム イメージ URI)(例: google/alloydbomni:18.1.0)。
  3. コンテナが実行されており、以前のデータベース バージョンがアクティブであることを確認します。

    Docker

    docker ps --filter "name=CONTAINER_NAME"
    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman ps --filter "name=CONTAINER_NAME"
    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

次のステップ