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.

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 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 l'une de ces étapes selon 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 BACKUP_DIR par le répertoire hôte dans lequel vos sauvegardes seront stockées.

  3. Rendez le répertoire de sauvegardes lisible par postgres.

    sudo chown -R postgres:postgres BACKUP_DIR
    

Configurer les 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 désigner la configuration d'un cluster de bases de données PostgreSQL. Le nom de la strophe est arbitraire et n'a pas besoin de correspondre au nom du serveur hôte, du cluster PostgreSQL ou de la base de données. La documentation pgBackRest suggère de nommer la strophe 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 d'une même strophe. 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 de manière indépendante. Exemple : pg1-.

pgBackRest utilise un fichier de configuration, appelé pgbackrest.conf, pour stocker les paramètres globaux et spécifiques aux stanzas.

Pour créer et initialiser un fichier de configuration permettant 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 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. Voici quelques exemples :

  • repo1-path : emplacement du répertoire dans lequel les sauvegardes sont écrites. Nous vous recommandons de choisir un emplacement visible à la fois par le serveur hôte et par 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 fidélisation est mesurée par le nombre ou la 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 sont les suivants :

  • log-level-console : Niveau de journalisation écrit à l'écran (stdout) lors de l'exécution des commandes pgBackup. Vous pouvez l'ajuster 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. Il est généralement défini 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 pgBackRest Configuration Reference.

Après avoir configuré pgBackRest, les dépôts cibles dans lesquels les sauvegardes sont écrites doivent être initialisés en créant la strophe, 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 section à l'aide de la commande stanza-create.

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

    Remplacez BACKUP_DIR par le répertoire de sauvegarde que vous avez créé dans Créer un répertoire de sauvegarde.

  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=/var/lib/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;"
    
  3. Redémarrez AlloyDB Omni.

    sudo systemctl restart alloydbomni18
    
  4. Validez la configuration de la 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=/var/lib/BACKUP_DIR \
    --stanza=omni \
    check
    

Effectuer une sauvegarde

  1. Effectuez une sauvegarde complète.

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

    Remplacez BACKUP_DIR par le répertoire de sauvegarde que vous avez créé dans Créer un répertoire de sauvegarde.

  2. Effectuez une sauvegarde différentielle.

    sudo -u postgres pgbackrest \
    --config-path=/var/lib/BACKUP_DIR \
    --stanza=omni \
    --type=diff backup
    
  3. Signaler des sauvegardes

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

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 que vous avez une configuration de base fonctionnelle, 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 chacun d'eux 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 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 des sauvegardes 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 permettre au compte de service associé à votre instance de VM d'écrire dans le bucket. Pour cela, le rôle IAM "Utilisateur des objets Storage" doit être défini sur ce compte de service.

  2. Ajoutez les lignes suivantes à 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 commande pgbackrest stanza-create :

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

    Remplacez BACKUP_DIR par le répertoire de sauvegarde que vous avez créé dans Créer un répertoire de sauvegarde.

Après avoir initialisé le dépôt de sauvegarde dans votre bucket Cloud Storage à l'aide de la commande pgbackrest stanza-create, pgBackRest peut effectuer des sauvegardes dans deux emplacements :

  • Emplacement dans le système de fichiers local, défini ailleurs dans le fichier de configuration sous 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.

Étapes suivantes