AlloyDB Omni バージョン 15.5.2 以前から最新バージョンに移行する

このページでは、バージョン 15.5.2 以前から AlloyDB Omni の最新バージョンに移行する手順について説明します。

AlloyDB Omni 15.5.4 以降では、一般的なパッケージ管理ツールを使用して AlloyDB Omni を制御します。

AlloyDB Omni が既にインストールされている場合は、このページの手順に沿って、新しい単一イメージ インストールに移行します。

前提条件

AlloyDB Omni の最新バージョンへのアップグレードを開始する前に、まだ行っていない場合は、次の前提条件を完了してください。

AlloyDB Omni 15.5.2 へのアップグレード

AlloyDB Omni CLI をサポートする最新の AlloyDB Omni バージョンは 15.5.2 です。AlloyDB Omni のバージョンを確認するには、次のコマンドを実行します。

sudo alloydb version

出力は次のようになります。

AlloyDB Omni CLI version: 1.6
AlloyDB Omni database server version: 15.5.2

出力に 15.5.2 より前のバージョンのデータベースが表示された場合は、次のコマンドを実行してアップグレードします。

sudo alloydb database-server upgrade

既存のインストールに関する情報を収集する

  1. 次のコマンドを実行します。

    cat /var/alloydb/config/dataplane.conf
  2. cat コマンドの出力から、次の変数の値をメモしておきます。

    • DATADIR_PATH - 例: /var/alloydb/main
    • ENABLE_ALLOYDB_AI - 例: FALSE
    • PGPORT - 例: 5432
    • INSTANCE_TYPE - 例: PRIMARY/READ_REPLICA

postgres_ann 拡張機能で作成された ScaNN インデックスを削除する

postgres_ann 拡張機能の名前が alloydb_scann に変更されました。postgres_ann 拡張機能をインストールし、その拡張機能を使用して ScaNN インデックスを作成した場合は、アップグレードを行う前に、すべての ScaNN インデックスを削除し、拡張機能をアンインストールする必要があります。

postgres_ann 拡張機能の名前変更によるデータベースへの影響を処理する手順は次のとおりです。

  1. AlloyDB Omni を実行して接続します。
  2. ScaNN インデックスを使用するすべてのテーブルを特定します。

     \c DATABASE_NAME
     select schemaname, relname, indexrelname, indextype, indexconfig, indexsize, indexscan FROM pg_stat_ann_indexes;

    DATABASE_NAME は、クエリを実行するデータベースの名前に置き換えます。

  3. pg_dump などのユーティリティを使用して、インデックス定義とパラメータをダンプ DDL として保存し、後で ScaNN インデックスを再作成します。

    pg_dump -st TABLE_NAME DATABASE_NAME

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

    • DATABASE_NAME: データベースの名前。
    • TABLE_NAME: テーブルの名前。
  4. postgres_ann インデックスを使用して作成された ScaNN インデックスを削除します。

    DROP INDEX INDEX_NAME;

    INDEX_NAME は、クエリを実行するデータベースの名前に置き換えます。

  5. どのデータベースにも ScaNN インデックスが含まれていないことを確認します。次の SQL クエリを使用して削除を確認します。次の SQL は空の結果セットを返します。

     \c DATABASE_NAME
     select schemaname, relname, indexrelname, indextype, indexconfig, indexsize, indexscan FROM pg_stat_ann_indexes;
  6. 次の手順で postgres_ann 拡張機能を削除します。

    1. postgres_ann 拡張機能がデータベースにインストールされていることを確認します。
    select * from pg_extension;
    1. postgres_ann 拡張機能を削除します。
    DROP EXTENSION postgres_ann CASCADE;
    1. postgres_ann 拡張機能がデータベースにインストールされていないことを確認します。
    select * from pg_extension;

インプレース アップグレードを実行する

  1. 既存のデータベースを停止します。

    sudo alloydb database-server stop
  2. 新しい単一イメージの AlloyDB Omni を起動し、以前の既存のデータディレクトリをマウントします。

    docker run --name CONTAINER_NAME \
        -e POSTGRES_PASSWORD=PASSWORD \
        -e PGDATA=/var/lib/postgresql/data \
        -v /var/alloydb/main/data:/var/lib/postgresql/data \
        -v /dev/shm:/dev/shm \
        -p PGPORT:5432 \
        --network=host \
        --ulimit=nice=-20:-20 \
        --ulimit=core=-1:-1 \
        --log-driver=journald \
        -d google/alloydbomni

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

    • CONTAINER_NAME: ホストマシンのコンテナ レジストリにこの新しい AlloyDB Omni コンテナを割り当てる名前(例: my-omni)。

    • PASSWORD: 新しいコンテナの postgres ユーザーに作成後に割り当てられたパスワード。

    • PGPORT: AlloyDB Omni が実行されているポートの IP アドレス。これは、既存のインストールに関する情報を収集するのステップ 2 でメモした値です。

    docker run の引数は、以前のバージョンの AlloyDB Omni で使用されていたものと同じですが、さらにカスタマイズできます。詳細については、AlloyDB Omni のインストールをカスタマイズするをご覧ください。

  3. データベース インスタンス タイプが PRIMARY の場合は、次のコマンドを実行して次のユーザーを作成します。これらは現在使用されていないユーザー名ですが、今後の拡張のために予約されています。

    for name in alloydbagent alloydbexport alloydbiamgroupuser alloydbiamuser alloydbimportexport alloydbobservability alloydbsqllogical alloydbsuperuser; do
      echo docker exec -it CONTAINER_NAME psql -h localhost -U postgres alloydbadmin \
        -c "CREATE ROLE ${name} NOLOGIN;" \
        -c "CREATE TABLE ${name}_table();" \
        -c "ALTER TABLE ${name}_table OWNER TO ${name};"
    done
  4. ENABLE_ALLOYDB_AITRUE に設定されている場合は、AlloyDB AI で AlloyDB Omni をインストールするの手順に沿って AlloyDB AI を設定します。

  5. データベースに接続して、データが変更されていないことを確認します。

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres
  6. AlloyDB Omni CLI をアンインストールします。

    sudo alloydb database-server uninstall

    AlloyDB Omni CLI のアンインストールは、AlloyDB Omni に保存されているデータには影響しません。

alloydb_scann 拡張機能を使用して ScaNN インデックスを再作成する

AlloyDB Omni をアップグレードすると、alloydb_scann 拡張機能もインストールされます。アップグレード前に postgres_ann 拡張機能で作成された ScaNN インデックスを削除するセクションで削除した ScaNN インデックスを再作成するには、次の手順を完了します。

  1. 次の手順で alloydb_scann 拡張機能を作成します。

    1. alloydb_scann 拡張機能を作成するには、次のクエリを実行します。
    create extension alloydb_scann cascade;
    1. alloydb_scann 拡張機能が正常に作成されたことを確認します。
    select * from pg_extension;
  2. テーブルの ScaNN インデックスを再作成し、以前の pg_dump DDL インデックス定義を復元します。

    1. テーブルに ScaNN インデックスを作成します。
    CREATE INDEX INDEX_NAME ON TABLE_NAME
        USING scann (VECTOR_COLUMN DISTANCE)
        WITH (num_leaves = NUM_LEAVES_VALUE);

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

    • INDEX_NAME: インデックスの名前。
    • TABLE_NAME: テーブルの名前。
    • VECTOR_COLUMN: ベクトルデータを格納する列の名前。
    • DISTANCE: このインデックスで使用する距離関数。
    • NUM_LEAVES_VALUE: インデックスに適用するパーティションの数。
    1. インデックスが作成されたことを確認します。
    \d TABLE_NAME
    1. 推奨: インデックス データをバックアップします。ベスト プラクティスとして、データベースとインデックスのバックアップを作成することをおすすめします。