このページでは、Cloud Storage バックアップを使用して単一サーバーでデータベース クラスタのクローンを作成する方法について説明します。
次のワークフローは、クローン作成手順を示しています。
- Cloud Storage バックアップにアクセスするように
pgbackrest.conf
ファイルを構成します。 pgBackRest
コマンドを使用して、ソース バックアップにアクセスできることを確認します。pgBackRest
コマンドを使用して、バックアップをターゲット サーバーに復元します。
始める前に
- ソース データベース クラスタのバックアップが保存されている Cloud Storage バケットのフルパスへのアクセス権。これは、ソース データベース クラスタの
BackupPlan
リソースの作成時に使用したパスと同じです。 - 単一サーバー ターゲットの AlloyDB Omni データベース クラスタが作成されます。Kubernetes への AlloyDB Omni のインストールの詳細については、AlloyDB Omni をインストールするをご覧ください。
postgres
ユーザーとしてデータベースにログインしていることを確認します。
ターゲット サーバーで pgBackRest
ファイルを構成する
ターゲット データベース クラスタがソース バックアップが存在する Cloud Storage バケットにアクセスできるように、pgBackRest
ファイルを構成します。
ターゲット サーバーで、
alloydb-data
ディレクトリに移動します。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 リポジトリ キータイプのオプションをご覧ください。- GCS_SOURCE_BACKUP_BUCKET_NAME: ソース データベース クラスタに作成した Cloud Storage
ターゲット サーバーでソース バックアップを確認する
ターゲット サーバーにログインし、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
ディレクトリにデータをコピーできます。
- ターゲット サーバーで、データベース サービスを停止します。
Docker
docker stop CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
ベスト プラクティスとして、現在のデータ ディレクトリの名前を別の名前に変更します。
mv ~/alloydb-data/data ~/alloydb-data/data-old
data-restored
一時ディレクトリの名前を現在のデータ ディレクトリに変更します。mv ~/alloydb-data/data-restored ~/alloydb-data/data
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'
ターゲット サーバーでデータベース サービスを起動します。
Docker
docker start CONTAINER_NAME
Podman
podman start CONTAINER_NAME
データベース サービスが起動したら、プライマリ インスタンスに接続してクエリを実行し、バックアップからデータが復元されたことを確認できます。詳細については、単一サーバーの AlloyDB Omni に接続するをご覧ください。