Kubernetes で AlloyDB Omni バージョン 16.8.0 にアップグレードする

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

このページでは、Kubernetes で AlloyDB Omni バージョン 16.8.0 にアップグレードする方法について説明します。

始める前に

  • AlloyDB Omni Kubernetes オペレーターのバージョンが 1.5.0 であることを確認します。AlloyDB Omni オペレーターのバージョンをアップグレードするには、AlloyDB Omni Kubernetes オペレーターの最新バージョンに移行するをご覧ください。

  • ディスク容量に 5 GB 以上の空きがあることを確認します。

  • 外部またはリモートのバックアップ システムを実行している場合は、フル バックアップを実行し、スケジュール設定されたバックアップは一時停止して、アップグレード プロセス中にバックアップが行われないようにします。

  • 高可用性(HA)およびデータ レジリエンス(DR)環境では、アップグレードを行う前にデータベース クラスタを切り離します。

AlloyDB Omni のバージョンをアップグレードする

pg_upgrade を使用して AlloyDB Omni のバージョンをアップグレードするには、次のいずれかを行います。

アップグレード スクリプト

手動アップグレード手順を実行するスクリプトは、GitHub の AlloyDB Omni サンプルにあります。

アップグレード スクリプトを使用するには、スクリプトをダウンロードして次のコマンドを実行します。

./MVU.sh 16.8.0 1.5.0 NAME NAMESPACE

次の変数を置き換えます。

  • NAME: データベース クラスタの名前。
  • NAMESPACE: データベース クラスタの Namespace。

手動アップグレード手順

  1. データの損失を防ぐため、データをバックアップします。

  2. バックアップ プランを削除します

  3. すべてのレプリケーション プロセスを終了します。これには、高可用性(HA)とデータ復元力(DR)に使用される物理レプリケーションと、すべての論理レプリケーション ストリームが含まれます。

  4. データベース クラスタにアノテーションを付け、手動バージョン アップグレードを指定します。

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu=true
    

    次の変数を置き換えます。

    • NAME: データベース クラスタの名前。
  5. PostgreSQL プロセスを停止して、アップグレードのためにデータを移動できるようにします。

    k exec -ti POD_NAME -- /bin/Bash
    # Shut down postgres
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    postgres@POD_NAME:~$ mkdir /mnt/disks/pgsql/15; mv /mnt/disks/pgsql/data /mnt/disks/pgsql/15/data; cp -r /usr/lib/postgresql/15/bin /mnt/disks/pgsql/15/.; cp -r /usr/lib/postgresql/15/lib /mnt/disks/pgsql/15/.; cp -r /usr/share/postgresql/15 /mnt/disks/pgsql/15/share; rm /mnt/disks/pgsql/15/share/postgresql.conf.sample; cp /usr/share/postgresql/postgresql.conf.sample /mnt/disks/pgsql/15/share/postgresql.conf.sample; chmod 2740 /mnt/disks/pgsql/15/data
    

    次の変数を置き換えます。

    • POD_NAME: Pod の名前。
  6. データベース クラスタをバージョン 16.8.0 に、コントロール プレーン エージェント(CPA)を 1.5.0 にパッチを適用します。

    kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"16.8.0","controlPlaneAgentsVersion":"omni_control_plane_agents_version"}}'
    

    次の変数を置き換えます。

    • NAME: データベース クラスタの名前。
  7. 新しい AlloyDB Omni バージョン用に空のデータベース クラスタを作成します。

    k exec -ti POD_NAME -- /bin/Bash
    
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    # Initialize a new, empty database cluster for the new version.
    postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/data; initdb -D /mnt/disks/pgsql/data -U alloydbadmin --data-checksums --encoding=UTF8 --locale=C --locale-provider=icu --icu-locale=und-x-icu --auth-host=trust --auth-local=reject; cd ~
    

    次の変数を置き換えます。

    • POD_NAME: Pod の名前。
  8. 既存のデータベース クラスタの pg_hba.conf を変更して、アップグレード プロセスに必要な権限と接続を与えます。

    # Backup pg_hba.conf of the pg15 cluster
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/15/data/pg_hba.conf /mnt/disks/pgsql/15/data/pg_hba.conf.bak
    
    # Update pg15 configurations
    postgres@POD_NAME:~$ echo "local      all           all                      trust" >> /mnt/disks/pgsql/15/data/pg_hba.conf; echo "host       all           all      127.0.0.1/32    trust" >> /mnt/disks/pgsql/15/data/pg_hba.conf
    

    次の変数を置き換えます。

    • POD_NAME: Pod の名前。
  9. 新しいデータベース クラスタの pg_hba.conf を変更して、アップグレード プロセスに必要な権限と接続を許可します。

    postgres@POD_NAME:~$ rm /mnt/disks/pgsql/data/pg_hba.conf; echo "local      all           all                      trust" >> /mnt/disks/pgsql/data/pg_hba.conf; echo "host       all           all      127.0.0.1/32    trust" >> /mnt/disks/pgsql/data/pg_hba.conf; chmod 2740 /mnt/disks/pgsql/15/data
    

    次の変数を置き換えます。

    • POD_NAME: Pod の名前。
  10. データベース クラスタをアップグレードする

    # (optional) Make sure postgres is stopped
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    # (optional) Check to verify that data can be upgraded.
    postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin --check -b /mnt/disks/pgsql/15/bin -B /usr/lib/postgresql/16/bin -d /mnt/disks/pgsql/15/data -D /mnt/disks/pgsql/data --link -v
    
    postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin -b /mnt/disks/pgsql/15/bin -B /usr/lib/postgresql/16/bin -d /mnt/disks/pgsql/15/data -D /mnt/disks/pgsql/data --link -v
    
    # Need to recover pg15 configurations
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/15/data/pg_hba.conf.bak /mnt/disks/pgsql/data/pg_hba.conf; cp -r /mnt/disks/pgsql/15/data/postgresql.conf /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/15/data/postgresql.conf.d /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/15/data/parambackup /mnt/disks/pgsql/data/.
    
    # Start postgres
    postgres@POD_NAME:~$ supervisorctl.par start postgres
    
    # Clean up backup data
    postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/15/
    

    次の変数を置き換えます。

    • POD_NAME: Pod の名前。
  11. データベース クラスタから手動バージョン アップグレードのアノテーションを削除します。

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu-
    

    次の変数を置き換えます。

    • NAME: データベース クラスタの名前。
  12. 通常のオペレーションを再開し、ステップ 1~3 で無効にしたバックアップ、バックアップ プラン、レプリケーション プロセスを再度有効にします。