Configurer pgBackRest pour AlloyDB Omni

Cette page vous explique comment protéger vos données en configurant AlloyDB Omni pour qu'il fonctionne avec pgBackRest, un serveur de sauvegarde de base de données Open Source. Pour obtenir une présentation des solutions de sauvegarde disponibles, consultez Sauvegarder et restaurer AlloyDB Omni.

Pour en savoir plus sur Kubernetes, consultez Sauvegarder et restaurer dans Kubernetes.

pgBackRest est un utilitaire de sauvegarde et de restauration flexible pour PostgreSQL. Étant donné qu'AlloyDB Omni est compatible avec PostgreSQL, vous pouvez utiliser pgBackRest pour protéger vos données AlloyDB Omni à l'aide de sauvegardes manuelles, planifiées et continues.

pgBackRest écrit ses données de sauvegarde dans des dépôts locaux, distants ou cloud. Une fois que vous avez créé au moins un dépôt, vous pouvez utiliser pgBackRest pour restaurer vos données AlloyDB Omni via différentes méthodes, y compris la récupération à un moment précis (PITR).

AlloyDB Omni inclut pgBackRest dans son conteneur Docker. Cela signifie que vous pouvez utiliser pgBackRest pour sauvegarder et restaurer vos données AlloyDB Omni sans avoir à installer de logiciel supplémentaire.

Pour en savoir plus sur pgBackRest, consultez son guide de l'utilisateur.

Avant de commencer

Avant de configurer AlloyDB Omni pour qu'il fonctionne avec pgBackRest, vous devez installer et exécuter AlloyDB Omni sur un serveur que vous contrôlez.

Remarque concernant les chemins d'accès au système de fichiers

Le logiciel pgBackRest inclus avec AlloyDB Omni s'exécute dans le même conteneur Docker qu'AlloyDB Omni. Par conséquent, tous les chemins d'accès au système de fichiers que vous fournissez à pgBackRest via son fichier de configuration ou en tant qu'arguments de ligne de commande sont des emplacements sur le système de fichiers du conteneur, et non sur celui de votre machine hôte.

De nombreuses commandes et exemples de cette page font référence à votre répertoire de données sous la forme /var/lib/postgresql/data, quel que soit l'emplacement de votre répertoire de données sur votre système hôte. En effet, AlloyDB Omni installe votre répertoire de données sur /var/lib/postgresql/data dans son système de fichiers conteneurisé. Par conséquent, vous pouvez utiliser le répertoire de données comme emplacement pour stocker la configuration et les dépôts pgBackRest sans configuration supplémentaire.

Si vous souhaitez configurer pgBackRest conteneurisé pour lire ou écrire dans des répertoires du système de fichiers de votre machine hôte en dehors de votre répertoire de données AlloyDB Omni, vous devez rendre ces répertoires disponibles pour le conteneur.

Configuration de base avec sauvegardes locales

Les étapes de cette section vous guident dans une configuration de base de pgBackRest, y compris un court fichier de configuration qui indique à pgBackRest d'écrire des données de sauvegarde continues dans un sous-répertoire de votre répertoire de données AlloyDB Omni.

Étant donné que pgBackRest est un produit tiers flexible compatible avec AlloyDB Omni, vous pouvez modifier l'une de ces étapes en fonction de vos besoins et de vos préférences. Si vous modifiez des chemins d'accès au système de fichiers, n'oubliez pas qu'ils doivent être visibles par le conteneur. Consultez la section Remarque concernant les chemins d'accès au système de fichiers.

Configurer l'authentification par socket Unix approuvé

Autorisez votre machine hôte AlloyDB Omni à authentifier l'utilisateur postgres du serveur de base de données sans mot de passe. Cela simplifie les étapes suivantes.

  1. Ajoutez la ligne suivante à votre fichier DATA_DIR/pg_hba.conf :

    local       all      postgres       trust
    

    Remplacez DATA_DIR par le chemin d'accès au système de fichiers de votre répertoire de données (par exemple, /home/$USER/alloydb-data).

  2. Redémarrez AlloyDB Omni:

    docker restart CONTAINER_NAME

    Remplacez CONTAINER_NAME par le nom que vous avez attribué au conteneur AlloyDB Omni lors de son installation (par exemple, my-omni).

Créer et configurer un dépôt de sauvegarde

Le fichier de configuration créé dans cette section est un exemple, qui permet une configuration minimale pour les sauvegardes continues stockées localement. Vous pouvez modifier ce fichier comme bon vous semble. Pour en savoir plus, consultez la section Configurer la strophe de cluster.

  1. Créez un sous-répertoire backups dans votre répertoire de données AlloyDB Omni:

    mkdir DATA_DIR/backups
  2. Créez un fichier nommé pgbackrest.conf dans votre répertoire de données, puis copiez-y le contenu suivant:

    [global]
    
    # Paths (all mandatory):
    repo1-path=/var/lib/postgresql/data/backups
    spool-path=/var/lib/postgresql/data
    lock-path=/var/lib/postgresql/data
    
    # Retention details:
    repo1-retention-full=3
    repo1-retention-full-type=count
    repo1-retention-diff=16
    
    # Force a checkpoint to start backup immediately:
    start-fast=y
    
    # Logging parameters:
    log-path=/var/lib/postgresql/data/backups
    log-level-console=info
    log-level-file=info
    
    # Recommended ZSTD compression:
    compress-type=zst
    
    # Other performance parameters:
    archive-async=y
    archive-push-queue-max=1024MB
    archive-get-queue-max=256MB
    archive-missing-retry=y
    
    [global:archive-push]
    process-max=2
    
    [global:archive-get]
    process-max=2
    
    [omni]
    pg1-user=postgres
    pg1-socket-path=/var/lib/postgresql/data
    pg1-path=/var/lib/postgresql/data/data
    
  3. Initialisez l'emplacement de la sauvegarde à l'aide de la commande pgbackrest stanza-create:

    docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create

Configurer la base de données pour les sauvegardes continues

  1. Pour activer les sauvegardes continues, exécutez la commande suivante afin de définir plusieurs paramètres PostgreSQL:

    docker exec CONTAINER_NAME psql -h localhost -U postgres \
    -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni archive-push %p';" \
    -c "ALTER SYSTEM SET archive_mode=on;" \
    -c "ALTER SYSTEM SET max_wal_senders=10;" \
    -c "ALTER SYSTEM SET wal_level=replica;"
  2. Redémarrez AlloyDB Omni:

    docker restart CONTAINER_NAME

Exécuter des commandes pgBackRest

En suivant les étapes de la section précédente, vous configurez pgBackRest pour qu'il fonctionne avec votre serveur AlloyDB Omni. Pour vérifier l'état de la sauvegarde, créer des sauvegardes manuelles et effectuer d'autres tâches, consultez la documentation de référence des commandes.

Il est recommandé d'exécuter les commandes pgBackRest directement à partir de la machine hôte sur laquelle le conteneur AlloyDB Omni est installé, à l'aide de la commande docker exec. Par exemple, pour créer une sauvegarde manuelle, utilisez la commande pgbackrest backup. Modifiez-la pour qu'elle s'exécute dans une commande docker exec et qu'elle fasse référence au fichier de configuration que vous avez créé précédemment:

docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni --type=full backup

Vous pouvez également utiliser des variables d'environnement pour définir l'emplacement de votre fichier de configuration pgBackRest. Pour en savoir plus, consultez la section Option de chemin de configuration.

Configurer des sauvegardes planifiées

Pour configurer des sauvegardes planifiées, créez une job Cron qui exécute la commande pgbackrest backup autant de fois que nécessaire. Pour en savoir plus, consultez Planifier une sauvegarde.

Configuration personnalisée et sauvegardes à distance

Une fois qu'une configuration de base fonctionne, vous pouvez ajuster votre fichier de configuration en fonction de vos besoins et de vos préférences à l'aide des options décrites dans la documentation de référence sur la configuration de pgBackRest.

Cela inclut la spécification de dépôts de sauvegarde supplémentaires situés sur des machines distantes ou dans le cloud. Si vous définissez plusieurs dépôts, pgBackRest les écrit simultanément en tant qu'action de sauvegarde par défaut.

Par exemple, pgBackRest permet d'utiliser un bucket Cloud Storage comme dépôt de sauvegarde, avec un certain nombre d'options de configuration associées. La section suivante montre comment utiliser ces options.

Exemple de configuration utilisant Cloud Storage

Les étapes de cette section s'appuient sur le fichier de configuration présenté dans la section Configuration de base avec des sauvegardes locales. Ces modifications de ce fichier définissent un deuxième dépôt de sauvegarde dans un bucket Cloud Storage, auquel on accède via Identity and Access Management (IAM).

Le style d'authentification automatique de cet exemple nécessite l'exécution d'un cluster AlloyDB Omni sur une instance de VM Compute Engine. Si vous n'exécutez pas AlloyDB Omni sur une instance de VM Compute Engine, vous pouvez toujours effectuer une sauvegarde dans un bucket Cloud Storage à l'aide d'une autre méthode d'authentification, telle qu'une clé de compte de service Google Cloud enregistrée dans le système de fichiers local.

Pour étendre le fichier de configuration précédent afin de définir un dépôt pgBackRest basé sur Cloud Storage, procédez comme suit:

  1. Configurez les autorisations du bucket pour autoriser le compte de service associé à votre instance de VM à écrire dans le bucket. Pour ce faire, vous devez définir le rôle IAM "Utilisateur des objets de l'espace de stockage" sur ce compte de service.

  2. Ajoutez les lignes suivantes à votre fichier pgbackrest.conf:

    # Cloud Storage access details:
    repo2-type=gcs
    repo2-gcs-key-type=auto
    repo2-storage-verify-tls=n
    
    # Cloud Storage bucket and path details:
    repo2-gcs-bucket=BUCKET_NAME
    repo2-path=/pgbackrest
    
    # Cloud Storage backup retention parameters:
    repo2-retention-full=8
    repo2-retention-full-type=count
    

    Remplacez BUCKET_NAME par le nom du bucket Cloud Storage dans lequel vous souhaitez que pgBackRest stocke les sauvegardes.

  3. Initialisez l'emplacement de sauvegarde dans le cloud à l'aide de la commande pgbackrest stanza-create:

    docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create

Une fois que vous avez initialisé le dépôt de sauvegarde dans votre bucket Cloud Storage à l'aide de la commande pgbackrest stanza-create, pgBackRest effectue des sauvegardes dans deux emplacements:

  • Emplacement dans le système de fichiers local, défini ailleurs dans le fichier de configuration sous la forme repo1-path.

  • Le bucket Cloud Storage, défini à l'aide des directives de configuration repo2- configurées par cet exemple.

Étape suivante