Cloud Storage バックアップを使用して単一サーバーでデータベース クラスタのクローンを作成する

このページでは、Cloud Storage バックアップを使用して単一サーバーでデータベース クラスタのクローンを作成する方法について説明します。

次のワークフローは、クローン作成手順を示しています。

  1. Cloud Storage バックアップにアクセスするように pgbackrest.conf ファイルを構成します。
  2. pgBackRest コマンドを使用して、ソース バックアップにアクセスできることを確認します。
  3. pgBackRest コマンドを使用して、バックアップをターゲット サーバーに復元します。

始める前に

  • ソース データベース クラスタのバックアップが保存されている Cloud Storage バケットのフルパスへのアクセス権。これは、ソース データベース クラスタの BackupPlan リソースの作成時に使用したパスと同じです。
  • 単一サーバー ターゲットの AlloyDB Omni データベース クラスタが作成されます。Kubernetes への AlloyDB Omni のインストールの詳細については、AlloyDB Omni をインストールするをご覧ください。
  • postgres ユーザーとしてデータベースにログインしていることを確認します。

ターゲット サーバーで pgBackRest ファイルを構成する

ターゲット データベース クラスタがソース バックアップが存在する Cloud Storage バケットにアクセスできるように、pgBackRest ファイルを構成します。

  1. ターゲット サーバーで、alloydb-data ディレクトリに移動します。

  2. Cloud Storage に保存されているバックアップにアクセスするための pgBackRest 構成ファイルを作成します。

      $ cat << EOF > /backup/pgbackrest.conf
      [db]
      pg1-path=/mnt/disks/pgsql/data-restored
      pg1-socket-path=/tmp
      pg1-user=pgbackrest
      [global]
      log-path=/obs/pgbackrest
      log-level-file=info
      repo1-type=gcs
      repo1-gcs-bucket=GCS_SOURCE_BACKUP_BUCKET_NAME
      repo1-path=GCS_SOURCE_BACKUP_BUCKET_PATH
      repo1-storage-ca-file=/etc/ssl/certs/ca-certificates.crt
      repo1-retention-full=9999999
      repo1-gcs-key-type=auto

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

    • GCS_SOURCE_BACKUP_BUCKET_NAME: ソース データベース クラスタに作成した Cloud Storage pgBackRest バケットの名前。これはバケットの完全な URL ではありません。バケット名の前に gs:// を付けないでください。
    • GCS_SOURCE_BACKUP_BUCKET_PATH: AlloyDB Omni オペレーターがバックアップを書き込むディレクトリのパス(ソース データベース クラスタの Cloud Storage バケット内)。パスは絶対パスで、/ で始まる必要があります。

    repo1-gcs-key-type は、インスタンスのサービス アカウントを使用するように auto に設定されています。他のオプションの詳細については、GCS リポジトリ キータイプのオプションをご覧ください。

ターゲット サーバーでソース バックアップを確認する

ターゲット サーバーにログインし、pgBackRest コマンドを実行して、ターゲット サーバーでソース データベース クラスタのバックアップにアクセスできることを確認します。

Docker

sudo docker exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info

Podman

sudo podman exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info

CONTAINER_NAME は、新しい AlloyDB Omni コンテナの名前に置き換えます(my-omni-1 など)。

レスポンスの例を次に示します。

    stanza: db
      status: ok
      cipher: none
      db (current)
          wal archive min/max (15): 000000010000000000000002/00000001000000000000000D
          full backup: 20240213-231400F
              timestamp start/stop: 2024-02-13 23:14:00+00 / 2024-02-13 23:17:14+00
              wal start/stop: 000000010000000000000003 / 000000010000000000000003
              database size: 38.7MB, database backup size: 38.7MB
              repo1: backup set size: 4.6MB, backup size: 4.6MB
          incr backup: 20240213-231400F_20240214-000001I
              timestamp start/stop: 2024-02-14 00:00:01+00 / 2024-02-14 00:00:05+00
              wal start/stop: 00000001000000000000000D / 00000001000000000000000D
              database size: 38.7MB, database backup size: 488.3KB
              repo1: backup set size: 4.6MB, backup size: 84.2KB
              backup reference list: 20240213-231400F

レスポンスのタイムスタンプは、完全バックアップの復元または復元ウィンドウ内の特定の時点からの復元に使用されます。

ターゲット サーバーでバックアップを復元する

復元するバックアップまたは復元ポイントを特定したら、ターゲット サーバーで pgBackRest コマンドを実行します。これらのコマンドの詳細については、復元コマンドをご覧ください。

pgBackRest 復元コマンドの例を以下に示します。

  • バックアップからの復元

    pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --set=20240213-231400F --type=immediate --target-action=promote --delta --link-all --log-level-console=info
  • 特定の時点からの復元

    pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info

ターゲット サーバーにデータをコピーする

復元コマンドが正常に完了したら、/mnt/disks/pgsql/data-restored 一時ディレクトリから現在の /alloydb-data/data ディレクトリにデータをコピーできます。

  1. ターゲット サーバーで、データベース サービスを停止します。

Docker

docker stop CONTAINER_NAME

Podman

podman stop CONTAINER_NAME
  1. ベスト プラクティスとして、現在のデータ ディレクトリの名前を別の名前に変更します。

      mv ~/alloydb-data/data  ~/alloydb-data/data-old
  2. data-restored 一時ディレクトリの名前を現在のデータ ディレクトリに変更します。

      mv ~/alloydb-data/data-restored ~/alloydb-data/data
  3. postgresql.auto.conf ファイルの pg1-path 値を更新して、復元されたデータを読み込みます。

    vim ~/alloydb-data/data/postgresql.auto.conf
    # Verify postgresql.auto.conf.
    # Do not edit this file manually!
    # It will be overwritten by the ALTER SYSTEM command.
    # Recovery settings generated by pgBackRest restore on 2024-03-13 20:47:11
    restore_command = 'pgbackrest --config-path=/mnt/disks/pgsql --pg1-path=/mnt/disks/pgsql/data --repo=1 --stanza=db archive-get %f "%p"'
    recovery_target = 'immediate'
    recovery_target_action = 'promote'
    recovery_target_timeline = 'current'
  1. ターゲット サーバーでデータベース サービスを起動します。

    Docker

    docker start CONTAINER_NAME

    Podman

    podman start CONTAINER_NAME

データベース サービスが起動したら、プライマリ インスタンスに接続してクエリを実行し、バックアップからデータが復元されたことを確認できます。詳細については、単一サーバーの AlloyDB Omni に接続するをご覧ください。

次のステップ