Configurer pgBackRest pour AlloyDB Omni sur Linux

Sélectionnez une version de la documentation :

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.

Les clusters compatibles avec TDE prennent en charge les sauvegardes et les restaurations transparentes à l'aide de pgBackRest, et vous n'avez pas besoin d'effectuer d'étapes supplémentaires. Pour en savoir plus, consultez Créer un cluster compatible avec TDE.

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, remplissez les conditions préalables suivantes :

Configuration de base avec des sauvegardes locales

Les étapes de cette section vous guident dans la configuration de base de pgBackRest. Les configurations de base n'activent pas les sauvegardes planifiées. Pour en savoir plus, consultez Configurer des sauvegardes planifiées.

Comme pgBackRest est un produit tiers flexible compatible avec AlloyDB Omni, vous pouvez modifier ces étapes en fonction de vos besoins et préférences.

Créer un répertoire de sauvegarde

Pour des raisons d'organisation, nous vous recommandons vivement de créer un répertoire distinct pour les sauvegardes pgBackRest. Pour configurer un répertoire, procédez comme suit :

  1. Si AlloyDB Omni est en cours d'exécution, arrêtez-le.

    sudo systemctl stop alloydbomni18
    
  2. Créez un répertoire de sauvegarde.

    sudo mkdir -p BACKUP_DIR
    

    Remplacez la variable suivante :

    • BACKUP_DIR: répertoire hôte dans lequel vos sauvegardes seront stockées.
  3. Rendez le répertoire de sauvegarde lisible par postgres.

    sudo chown -R postgres:postgres BACKUP_DIR
    

    Remplacez la variable suivante :

    • BACKUP_DIR: répertoire hôte dans lequel vos sauvegardes seront stockées.

Configurer des sauvegardes locales

pgBackRest crée des sous-répertoires pour chaque sauvegarde effectuée et inclut un fichier manifeste en texte brut.

pgBackRest utilise le terme "stanza" pour faire référence à la configuration d'un cluster de base de données PostgreSQL. Le nom de la stanza est arbitraire et n'a pas besoin de correspondre au serveur hôte, au cluster PostgreSQL ni au nom de la base de données. La documentation pgBackRest suggère de nommer la stanza d'après la fonction du cluster.

Le dépôt est l'endroit où les sauvegardes sont écrites. pgBackRest permet d'écrire dans plusieurs dépôts dans une stanza donnée. La plupart des paramètres de configuration liés aux dépôts sont indexés avec une valeur numérique. Par exemple, repo1-. Les paramètres liés aux clusters PostgreSQL sont également indexés indépendamment. Par exemple, pg1-.

pgBackRest exploite un fichier de configuration, appelé pgbackrest.conf, pour stocker les paramètres globaux et spécifiques à la stanza.

Pour créer et initialiser un fichier de configuration afin de sauvegarder votre cluster AlloyDB Omni, créez le fichier pgbackrest.conf dans le répertoire de sauvegarde côté hôte que vous avez créé dans Monter un volume de sauvegarde sur votre conteneur ou Créer un répertoire de sauvegarde.

[global]
# Paths (all mandatory):


repo1-path=BACKUP_DIR
spool-path=BACKUP_DIR/spool
lock-path=BACKUP_DIR


# 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=BACKUP_DIR

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=/tmp



pg1-path=DATA_DIR


Certains paramètres sont obligatoires, mais d'autres peuvent être ajustés pour répondre à vos besoins spécifiques, si nécessaire, comme les suivants :

  • repo1-path: emplacement du répertoire dans lequel les sauvegardes sont écrites. Nous vous recommandons un emplacement visible à la fois par le serveur hôte et le conteneur.

  • log-path: emplacement du répertoire dans lequel les fichiers journaux sont écrits. Si vous souhaitez écrire les fichiers journaux dans un emplacement distinct, et non les mélanger aux sauvegardes elles-mêmes, ajustez ce paramètre.

  • repo1-retention-full: nombre de sauvegardes complètes à conserver.

  • repo1-retention-full-type: indique si la conservation est mesurée par nombre ou par période (en jours).

  • repo1-retention-diff: nombre de sauvegardes différentielles à conserver.

Les autres paramètres non critiques, mais recommandés, compatibles avec AlloyDB Omni dans le fichier de configuration incluent les suivants :

  • log-level-console: niveau de journalisation écrit à l'écran (STDOUT) lors de l'exécution des commandes pgBackup. Vous pouvez ajuster ce paramètre en fonction de vos besoins dans le fichier de configuration ou remplacer cette valeur par l'argument de ligne de commande --log-level-console. La valeur par défaut est warn.

  • start-fast: force un point de contrôle pour démarrer rapidement les sauvegardes. La valeur par défaut est n.

  • archive-async: envoie les fichiers segments WAL de manière asynchrone pour améliorer les performances. La valeur par défaut est n.

  • process-max: nombre maximal de processus à utiliser pour la compression et le transfert. Cette valeur est généralement définie sur max_cpu/4 sur un cluster principal ou sur max_cpu/2 sur un cluster de secours. La valeur par défaut est 1.

  • compress-type: algorithme de compression à utiliser. La valeur par défaut est gz.

De nombreux autres paramètres de configuration pgBackRest existent et peuvent être ajustés. Cette documentation ne couvre que les paramètres obligatoires pour la configuration AlloyDB Omni par défaut et certains paramètres recommandés. Pour obtenir la liste complète des paramètres de configuration, consultez la documentation en ligne de référence sur la configuration pgBackRest.

Après avoir configuré pgBackRest, les dépôts cibles dans lesquels les sauvegardes sont écrites doivent être initialisés en créant la stanza, qui utilise les paramètres définis dans le fichier de configuration.

Pour configurer votre base de données pour les sauvegardes, procédez comme suit :

  1. Créez la stanza à l'aide de la commande stanza-create.

    sudo -u postgres pgbackrest \
    --config-path=/var/lib/BACKUP_DIR \
    --stanza=omni stanza-create
    
  2. Configurez votre base de données pour les sauvegardes.

    /usr/lib/postgresql/18/bin/psql -h localhost -U postgres \
    -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=BACKUP_DIR --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;"
    

    Remplacez la variable suivante :

    • BACKUP_DIR: répertoire hôte dans lequel vos sauvegardes seront stockées.
  3. Redémarrez AlloyDB Omni.

    sudo systemctl restart 18
    
  4. Validez la configuration de sauvegarde.

    /usr/lib/postgresql/18/bin/psql -h localhost -U postgres \
    -c "SELECT name, setting
        FROM pg_catalog.pg_settings
        WHERE name IN ('archive_command',
                       'archive_mode',
                       'max_wal_senders',
                       'wal_level')
        ORDER BY name"
    
  5. Effectuez une vérification pgBackRest.

    sudo -u postgres pgbackrest \
    --config-path=BACKUP_DIR \
    --stanza=omni \
    check
    

    Remplacez la variable suivante :

    • BACKUP_DIR: répertoire hôte dans lequel vos sauvegardes seront stockées.

Effectuer une sauvegarde

  1. Effectuez une sauvegarde complète.

    sudo -u postgres pgbackrest \
    --config-path=BACKUP_DIR \
    --stanza=omni \
    --type=full backup
    

    Remplacez la variable suivante :

    • BACKUP_DIR: répertoire hôte dans lequel vos sauvegardes seront stockées.
  2. Effectuez une sauvegarde différentielle.

    sudo -u postgres pgbackrest \
    --config-path=BACKUP_DIR \
    --stanza=omni \
    --type=diff backup
    

    Remplacez la variable suivante :

    • BACKUP_DIR: répertoire hôte dans lequel vos sauvegardes seront stockées.
  3. Signalez les sauvegardes.

    sudo -u postgres pgbackrest \
    --config-path=BACKUP_DIR \
    --stanza=omni \
    info
    

    Remplacez la variable suivante :

    • BACKUP_DIR: répertoire hôte dans lequel vos sauvegardes seront stockées.

Configurer des sauvegardes planifiées

Pour configurer des sauvegardes planifiées, créez un job Cron qui exécute la commande pgbackrest backup aussi souvent 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 préférences à l'aide des options décrites dans la documentation de référence sur la configuration 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 écrit simultanément dans tous ces dépôts comme 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 Configuration de base avec des sauvegardes locales. Ces modifications apportées à ce fichier définissent un deuxième dépôt de sauvegarde dans un bucket Cloud Storage, accessible via Identity and Access Management (IAM).

Le style d'authentification automatique de cet exemple nécessite qu'un cluster AlloyDB Omni s'exécute 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 Google Cloud clé de compte de service 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. Cela nécessite que le rôle IAM "Utilisateur d'objets Storage" soit défini sur ce compte de service.

  2. Ajoutez ces lignes à la section [global] de 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=PATH_IN_BUCKET
    
    # Cloud Storage backup retention parameters:
    repo2-retention-full=8
    repo2-retention-full-type=count
    

    Remplacez la variable suivante :

    • BUCKET_NAME: nom du bucket Cloud Storage dans lequel vous souhaitez que pgBackRest stocke les sauvegardes.
    • PATH_IN_BUCKET: chemin d'accès au répertoire 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 pgbackrest stanza-create commande :

    sudo -u postgres pgbackrest \
    --config-path=BACKUP_DIR \
    --stanza=omni stanza-create
    

    Remplacez la variable suivante :

    • BACKUP_DIR: répertoire hôte dans lequel vos sauvegardes seront stockées.

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 peut effectuer une sauvegarde dans deux emplacements :

  • Emplacement dans le système de fichiers local, défini ailleurs dans le fichier de configuration comme repo1-path. Il s'agit de la position par défaut lorsque --repo n'est pas spécifié dans la commande pgbackrest.

  • Bucket Cloud Storage, défini à l'aide des directives de configuration repo2-gcs-bucket configurées par cet exemple. Pour utiliser le bucket Cloud Storage, spécifiez --repo=2 dans la commande pgbackrest.

Étape suivante