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.
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
).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.
Créez un sous-répertoire
backups
dans votre répertoire de données AlloyDB Omni:mkdir DATA_DIR/backups
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
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
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;"
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:
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.
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.
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.