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:
- Configurez le fichier
pgbackrest.conf
pour accéder à la sauvegarde Cloud Storage. - Utilisez les commandes
pgBackRest
pour vérifier que les sauvegardes sources sont accessibles. - 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.
Sur le serveur cible, accédez au répertoire
alloydb-data
.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éfixegs://
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 surauto
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.- GCS_SOURCE_BACKUP_BUCKET_NAME: nom du bucket
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.
- Sur le serveur cible, arrêtez le service de base de données:
Docker
docker stop CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
Nous vous recommandons de renommer le répertoire de données actuel:
mv ~/alloydb-data/data ~/alloydb-data/data-old
Renommez le répertoire temporaire
data-restored
en répertoire de données actuel:mv ~/alloydb-data/data-restored ~/alloydb-data/data
Mettez à jour la valeur
pg1-path
dans le fichierpostgresql.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'
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.