이 페이지에서는 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에 연결을 참고하세요.