PostgreSQL のメジャー バージョン間でアップグレードするには、VM で AlloyDB Omni をアップグレードするをご覧ください。
このページの手順は、スタンドアロンの単一ノードデプロイと、マルチノード トポロジの個々のデータベース ノード(リードレプリカや高可用性スタンバイ ノードを使用したデプロイなど)に適用されます。設定に基づいて、次の考慮事項を確認してください。
- 外部データ ディレクトリ: コンテナを停止して削除する前に、データベース データがコンテナにマウントされた永続ホスト ディレクトリ(
-v DATA_DIR:/var/lib/postgresql/dataなど)に保存されていることを確認します。コンテナ ファイル システム内にのみデータを保存するコンテナを削除すると、データベース データが削除されます。詳細については、コンテナを使用して AlloyDB Omni をインストールするをご覧ください。 - マルチノード トポロジ: プライマリ ノードをアップグレードする前に、すべてのレプリカノードとスタンバイ ノードをアップグレードします。高可用性設定では、コンテナを停止する前に自動フェイルオーバーまたは障害検出を一時停止し、以前のプライマリ ノードをアップグレードする前に、アップグレードされたスタンバイ ノードにスイッチオーバーします。
- 拡張機能を含むカスタム コンテナ イメージ: PostGIS や Orafce などのサードパーティ拡張機能を含むカスタム コンテナ イメージをビルドした場合は、コンテナを再作成する前に、更新されたマイナー バージョンのベースイメージを使用してカスタム コンテナ イメージを再ビルドします。
始める前に
AlloyDB Omni をアップグレードする前に、次の手順を完了します。
- コンテナを交換するにはデータベース サービスを一時的に停止する必要があるため、メンテナンスの時間枠または短いサービス ダウンタイムを計画します。
- アップグレードを開始する前に、データベースのフル バックアップを取得します。詳細については、バックアップと復元の概要をご覧ください。
- マルチノード トポロジをアップグレードする場合は、現在のプライマリ ノードとすべてのスタンバイ ノードまたはレプリカノードを特定して、スタンバイ ノードとレプリカノードを最初にアップグレードできるようにします。
実行中のコンテナを検査して、現在のイメージ、ホストデータ ディレクトリのマウント、ポート マッピング、環境変数、ランタイム フラグを記録します。これにより、同じ構成でコンテナを再作成できます。
Docker
docker inspect CONTAINER_NAMEPodman
podman inspect CONTAINER_NAMECONTAINER_NAMEは、AlloyDB Omni コンテナの名前に置き換えます(例:my-omni)。アップグレードする前に、現在の 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_URIPodman
podman pull IMAGE_URIIMAGE_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 のインストールを新しいマイナー バージョンにアップグレードするには、各ノードで次の手順を完了します。マルチノード トポロジでは、プライマリ ノードをアップグレードする前に、各スタンバイ ノードまたはレプリカノードで次の手順を完了します。
既存の AlloyDB Omni コンテナを停止して削除します。
Docker
docker container stop CONTAINER_NAME docker container rm CONTAINER_NAMEPodman
podman container stop CONTAINER_NAME podman container rm CONTAINER_NAMEコンテナを停止して削除しても、マウントされたホストデータ ディレクトリ内のデータベース ファイルには影響しません。
更新されたマイナー バージョン イメージを使用して、既存のホストデータ ディレクトリをマウントし、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_URIPodman
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 を設定するをご覧ください。
アップグレードを確認する
コンテナを再作成して起動したら、データベース サービスが更新されたマイナー バージョンを実行していることを確認します。
AlloyDB Omni コンテナのステータスを確認し、ステータスが
Upであることを確認します。Docker
docker ps --filter "name=CONTAINER_NAME"Podman
podman ps --filter "name=CONTAINER_NAME"データベースに接続し、アップグレードされたバージョンが有効であることを確認します。
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 のインストールを以前のマイナー バージョンに戻す必要がある場合は、アップグレードされたコンテナを停止して削除し、以前のマイナー バージョンのイメージを使用するコンテナを起動します。
アップグレードされた AlloyDB Omni コンテナを停止して削除します。
Docker
docker container stop CONTAINER_NAME docker container rm CONTAINER_NAMEPodman
podman container stop CONTAINER_NAME podman container rm CONTAINER_NAME以前のマイナー バージョンのイメージを使用して、同じホストデータ ディレクトリをマウントして、コンテナを再作成して起動します。
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_URIPodman
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)。
コンテナが実行されており、以前のデータベース バージョンがアクティブであることを確認します。
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();"
次のステップ
- VM 上の AlloyDB Omni をアップグレードする
- 本番環境用に AlloyDB Omni を設定する
- AlloyDB Omni のインストールをカスタマイズする
- AlloyDB Omni を管理してモニタリングする
- バックアップと復元の概要