次のワークフローは、クローン作成に使用される手順を示しています。
- livenessProbeパラメータを無効にして、ターゲット データベース クラスタに- DBClusterマニフェスト ファイルを作成して適用します。
- Cloud Storage バックアップにアクセスするための pgbackrest.confファイルを作成して構成します。
- pgBackRestコマンドを使用して、ソース バックアップにアクセスできることを確認します。
- pgBackRestコマンドを使用して、バックアップをターゲット データベース クラスタに復元します。
始める前に
- ソース データベース クラスタのバックアップが保存されている Cloud Storage バケットのフルパスにアクセスできることを確認します。このパスは、ソース データベース クラスタの BackupPlanリソースの作成時に使用したパスと同じです。
- ターゲット AlloyDB Omni データベース クラスタを作成します。Kubernetes への AlloyDB Omni のインストールの詳細については、データベース クラスタを作成するをご覧ください。
- postgresユーザーとしてデータベースにログインしていることを確認します。
ターゲット データベース クラスタにデータベース クラスタを作成する
livenessProbe パラメータを一時的に無効にして、データベース クラスタを作成します。復元が完了したら、livenessProbe パラメータを再構成します。
- DBClusterリソース マニフェスト ファイルを作成します。- apiVersion: v1 kind: Secret metadata: name: db-pw-DB_CLUSTER_NAME type: Opaque data: DB_CLUSTER_NAME: "ENCODED_PASSWORD" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME spec: primarySpec: availabilityOptions: livenessProbe: "Disabled" adminUser: passwordRef: name: db-pw-DB_CLUSTER_NAME resources: cpu: CPU_COUNT memory: MEMORY_SIZE disks: - name: DataDisk size: DISK_SIZE storageClass: standard- 次のように置き換えます。 - DB_CLUSTER_NAME: このデータベース クラスタの名前。例:- my-db-cluster
- ENCODED_PASSWORD: デフォルトの- postgresユーザーロールのデータベース ログイン パスワード。base64 文字列としてエンコードされます。例:- ChangeMe123の場合は- Q2hhbmdlTWUxMjM=
- CPU_COUNT: このデータベース クラスタ内の各データベース インスタンスで使用できる CPU の数。
- MEMORY_SIZE: このデータベース クラスタのデータベース インスタンスあたりのメモリ量。CPU ごとに 8 GB に設定することをおすすめします。たとえば、このマニフェストの前半で- cpuを- 2に設定した場合は、- memoryを- 16Giに設定することをおすすめします。
- DISK_SIZE: データベース インスタンスあたりのディスクサイズ。例:- 10Gi
 
- マニフェスト ファイルを適用します。 - kubectl apply -f DBCLUSTER_FILENAME- 次のように置き換えます。 - DBCLUSTER_FILENAME: 前の手順で作成した DBClusterマニフェスト ファイルの名前。
 
- DBCLUSTER_FILENAME: 前の手順で作成した 
kubectl describe コマンドを使用して、データベース クラスタ リソースが READY ステータスであることを確認します。
pgBackRest ファイルを構成する
ターゲット データベース クラスタからソース バックアップのある Cloud Storage バケットにアクセスできるように、pgBackRest ファイルを構成します。
- ターゲット データベース クラスタで、データベース クラスタ Pod の詳細を確認します。 - kubectl get pod -l "alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME, alloydbomni.internal.dbadmin.goog/task-type=database"- レスポンスには、クラスタ データベース Pod の名前が含まれます。 
- Pod にログインします。 - kubectl exec -ti DATABASE_POD_NAME -- /bin/bash- 次のように置き換えます。 - DATABASE_POD_NAME: 前の手順で作成したデータベース クラスタ Pod の名前。
 
- pgBackRest構成ファイルを更新する前に、Pod を停止します。- supervisorctl.par stop postgres
- Cloud Storage に保存されているバックアップにアクセスできるように - pgBackRest構成ファイルを作成します。- cat << EOF > /backup/pgbackrest.conf [db] pg1-path=/mnt/disks/pgsql/data 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=/scripts/ca-certificates.crt repo1-retention-full=9999999 repo1-gcs-key-type=auto- 次のように置き換えます。 - GCS_SOURCE_BACKUP_BUCKET_NAME: ソース データベース クラスタの- BackupPlanリソース マニフェスト ファイルを作成するときに作成した Cloud Storage バケットの名前。これはバケットの完全な URL ではありません。バケット名の前に- gs://を付けないでください。
- GCS_SOURCE_BACKUP_BUCKET_PATH: AlloyDB Omni Operator がバックアップを書き込むディレクトリのパス(ソース データベース クラスタの Cloud Storage バケット内)。パスは絶対パスで、- /で始める必要があります。
 - repo1-gcs-key-typeは、インスタンスのサービス アカウントを使用するように- autoに設定されています。他のオプションの詳細については、Cloud Storage リポジトリ キータイプのオプションをご覧ください。
ターゲット データベース クラスタのソース バックアップを確認する
pgBackRest コマンドを実行して、ソース データベース クラスタのバックアップにターゲット データベース クラスタからアクセスできることを確認します。
pgbackrest --config-path=/backup --stanza=db --repo=1 infoレスポンスの例を次に示します。
  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=/backup --stanza=db --repo=1 restore --set=20240213-231400F --type=immediate --target-action=promote --delta --link-all --log-level-console=info
- 特定の時点から復元する - pgbackrest --config-path=/backup --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info
Pod を再起動する
復元コマンドが正常に完了したら、postgres プロセスを開始できます。
supervisorctl.par start postgrespostgres プロセスが開始したら、プライマリ インスタンスに接続してクエリを実行し、データがバックアップから復元されたことを確認できます。詳細については、Kubernetes で実行されている AlloyDB Omni に接続するをご覧ください。
データベース クラスタを構成する
データベース クラスタのクローンを作成したら、データベース クラスタの仕様を構成します。最も重要な点は、次のコマンドによって livenessProbe パラメータをオンにすることです。
    kubectl patch dbcluster DBCLUSTER_FILENAME --type merge -p '{"spec":{"primarySpec":{"availabilityOptions":{"livenessProbe":"Enabled"}}}}'