Clone a database cluster in a single server using a Cloud Storage backup

Select a documentation version: This page show you how to clone a database cluster in a single server using a Cloud Storage backup.

The following workflow explains the cloning steps:

  1. Configure the pgbackrest.conf file to access the Cloud Storage backup.
  2. Use pgBackRest commands to verify source backups can be accessed.
  3. Use pgBackRest commands to restore the backup to the target server.

Before you begin

  • Access to the full path of the Cloud Storage bucket where your source database cluster backup resides. This is the same path you used when you created the BackupPlan resource for your source database cluster.
  • A single server target AlloyDB Omni database cluster is created. For more information about installing AlloyDB Omni on Kubernetes, see Install AlloyDB Omni .
  • Ensure you are logged in to the database as the postgres user.

Configure the pgBackRest file on the target server

Configure the pgBackRest file to enable the target database cluster to access the Cloud Storage bucket where source backups reside.

  1. In the target server, navigate to the alloydb-data directory.

  2. Create a pgBackRest configuration file to access backups stored in Cloud Storage:

       
    $  
    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 
    

    Replace the following:

    • GCS_SOURCE_BACKUP_BUCKET_NAME : the name of the Cloud Storage pgBackRest bucket you created in the source database cluster. This is not the full URL to the bucket; don't prefix the bucket name with gs:// .
    • GCS_SOURCE_BACKUP_BUCKET_PATH : the path of the directory that the AlloyDB Omni Operator writes backups into, within the Cloud Storage bucket for the source database cluster. The path must be absolute, beginning with / .

    The repo1-gcs-key-type is set to auto to use the instance's service account. For more information about other options, see GCS Repository Key Type Option .

Verify source backups in target server

Sign in to the target server and run pgBackRest commands to verify that the source database cluster backups are accessible on the target server:

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 

Replace CONTAINER_NAME with the name of a new AlloyDB Omni container—for example, my-omni-1 .

The following is a sample response:

 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 

The timestamps in the response are used either to restore the full backup or to restore from a point in time from the recovery window.

Restore the backup in the target server

After you identify the backup or a point in time you want to restore to, run pgBackRest commands in your target server. For more information about these commands, see Restore Command .

The following are some sample pgBackRest restore commands:

  • Restore from a backup

     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 
    
  • Restore from a point in time

     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 
    

Copy data to the target server

After the restore command completes successfully, you can copy the data from the /mnt/disks/pgsql/data-restored temporary directory to the current /alloydb-data/data directory.

  1. In the target server, stop the database service:

Docker

 docker  
stop  
 CONTAINER_NAME 
 

Podman

 podman  
stop  
 CONTAINER_NAME 
 
  1. Rename the current data directory to another name as a best practice:

       
    mv  
    ~/alloydb-data/data  
    ~/alloydb-data/data-old 
    
  2. Rename the data-restored temporary directory to the current data directory:

       
    mv  
    ~/alloydb-data/data-restored  
    ~/alloydb-data/data 
    
  3. Update pg1-path value in the postgresql.auto.conf file to load the restored data:

   
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. In the target server, start the database service:

    Docker

     docker  
    start  
     CONTAINER_NAME 
     
    

    Podman

     podman  
    start  
     CONTAINER_NAME 
     
    

After the database service starts, you can connect to the primary instance and run queries to verify that the data is restored from the backup. For more information, see Connect to AlloyDB Omni on a single server .

What's next

Design a Mobile Site
View Site in Mobile | Classic
Share by: