Cloner un cluster de base de données sur un seul serveur à l'aide d'une sauvegarde Cloud Storage

Cette page vous explique comment cloner un cluster de base de données sur un seul serveur à l'aide d'une sauvegarde Cloud Storage.

Le workflow suivant explique les étapes de clonage:

  1. Configurez le fichier pgbackrest.conf pour accéder à la sauvegarde Cloud Storage.
  2. Utilisez les commandes pgBackRest pour vérifier que les sauvegardes sources sont accessibles.
  3. Utilisez les commandes pgBackRest pour restaurer la sauvegarde sur le serveur cible.

Avant de commencer

  • Accès au chemin d'accès complet du bucket Cloud Storage dans lequel se trouve la sauvegarde de votre cluster de base de données source. Il s'agit du même chemin que celui que vous avez utilisé lorsque vous avez créé la ressource BackupPlan pour votre cluster de base de données source.
  • Un cluster de base de données AlloyDB Omni cible à serveur unique est créé. Pour en savoir plus sur l'installation d'AlloyDB Omni sur Kubernetes, consultez Installer AlloyDB Omni.
  • Assurez-vous d'être connecté à la base de données en tant qu'utilisateur postgres.

Configurer le fichier pgBackRest sur le serveur cible

Configurez le fichier pgBackRest pour permettre au cluster de base de données cible d'accéder au bucket Cloud Storage où se trouvent les sauvegardes sources.

  1. Sur le serveur cible, accédez au répertoire alloydb-data.

  2. Créez un fichier de configuration pgBackRest pour accéder aux sauvegardes stockées dans 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

    Remplacez les éléments suivants :

    • GCS_SOURCE_BACKUP_BUCKET_NAME: nom du bucket pgBackRest Cloud Storage que vous avez créé dans le cluster de base de données source. Il ne s'agit pas de l'URL complète du bucket. N'ajoutez pas de préfixe gs:// au nom du bucket.
    • GCS_SOURCE_BACKUP_BUCKET_PATH: chemin d'accès du répertoire dans lequel l'opérateur AlloyDB Omni écrit les sauvegardes, dans le bucket Cloud Storage du cluster de base de données source. Le chemin d'accès doit être absolu et commencer par /.

    repo1-gcs-key-type est défini sur auto pour utiliser le compte de service de l'instance. Pour en savoir plus sur les autres options, consultez la section Type de clé de dépôt GCS.

Vérifier les sauvegardes sources sur le serveur cible

Connectez-vous au serveur cible et exécutez des commandes pgBackRest pour vérifier que les sauvegardes du cluster de base de données source sont accessibles sur le serveur cible:

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

Remplacez CONTAINER_NAME par le nom d'un nouveau conteneur AlloyDB Omni, par exemple my-omni-1.

Voici un exemple de réponse :

    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

Les codes temporels de la réponse sont utilisés pour restaurer la sauvegarde complète ou à partir d'un moment donné de la fenêtre de récupération.

Restaurer la sauvegarde sur le serveur cible

Une fois que vous avez identifié la sauvegarde ou un point dans le temps auquel vous souhaitez restaurer, exécutez des commandes pgBackRest sur votre serveur cible. Pour en savoir plus sur ces commandes, consultez la section Commande de restauration.

Voici quelques exemples de commandes de restauration pgBackRest:

  • Restaurer à partir d'une sauvegarde

    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
  • Restaurer à un moment précis

    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

Copier les données sur le serveur cible

Une fois la commande de restauration terminée, vous pouvez copier les données du répertoire temporaire /mnt/disks/pgsql/data-restored vers le répertoire /alloydb-data/data actuel.

  1. Sur le serveur cible, arrêtez le service de base de données:

Docker

docker stop CONTAINER_NAME

Podman

podman stop CONTAINER_NAME
  1. Nous vous recommandons de renommer le répertoire de données actuel:

      mv ~/alloydb-data/data  ~/alloydb-data/data-old
  2. Renommez le répertoire temporaire data-restored en répertoire de données actuel:

      mv ~/alloydb-data/data-restored ~/alloydb-data/data
  3. Mettez à jour la valeur pg1-path dans le fichier postgresql.auto.conf pour charger les données restaurées:

    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. Sur le serveur cible, démarrez le service de base de données:

    Docker

    docker start CONTAINER_NAME

    Podman

    podman start CONTAINER_NAME

Une fois le service de base de données démarré, vous pouvez vous connecter à l'instance principale et exécuter des requêtes pour vérifier que les données sont restaurées à partir de la sauvegarde. Pour en savoir plus, consultez Se connecter à AlloyDB Omni sur un seul serveur.

Étape suivante