PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Barman Cloud – Partie 2 :Sauvegarde dans le Cloud

Dans la première partie de ce blog, Jonathan a expliqué le fonctionnement de la commande barman-wal-archive. Maintenant, en supposant que vous ayez suivi ces instructions, vous avez une instance PostgreSQL correctement configurée et en cours d'exécution. Dans cette deuxième partie, je vais vous montrer comment le barman-cloud-backup commande fonctionne.


Comme vous pouvez le deviner d'après le nom de la commande elle-même, le barman-cloud-backup La commande vous permet d'exécuter des sauvegardes directement à partir d'un serveur PostgreSQL et d'utiliser un magasin d'objets compatible S3 dans le Cloud comme destination.

[email protected]:~ $ barman-cloud-backup --help
usage: barman-cloud-backup [-V] [--help] [-v | -q] [-P PROFILE] [-z | -j]
                           [-e {AES256,aws:kms}] [-t] [-h HOST] [-p PORT]
                           [-U USER] [--immediate-checkpoint] [-J JOBS]
                           [-S MAX_ARCHIVE_SIZE] [--endpoint-url ENDPOINT_URL]
                           destination_url server_name

This script can be used to perform a backup of a local PostgreSQL instance and
ship the resulting tarball(s) to the Cloud. Currently only AWS S3 is supported.

positional arguments:
  destination_url       URL of the cloud destination, such as a bucket in AWS
                        S3. For example: `s3://bucket/path/to/folder`.
  server_name           the name of the server as configured in Barman.

optional arguments:
  -V, --version         show program's version number and exit
  --help                show this help message and exit
  -v, --verbose         increase output verbosity (e.g., -vv is more than -v)
  -q, --quiet           decrease output verbosity (e.g., -qq is less than -q)
  -P PROFILE, --profile PROFILE
                        profile name (e.g. INI section in AWS credentials
                        file)
  -z, --gzip            gzip-compress the WAL while uploading to the cloud
  -j, --bzip2           bzip2-compress the WAL while uploading to the cloud
  -e {AES256,aws:kms}, --encryption {AES256,aws:kms}
                        Enable server-side encryption for the transfer.
                        Allowed values: 'AES256'|'aws:kms'.
  -t, --test            Test cloud connectivity and exit
  -h HOST, --host HOST  host or Unix socket for PostgreSQL connection
                        (default: libpq settings)
  -p PORT, --port PORT  port for PostgreSQL connection (default: libpq
                        settings)
  -U USER, --user USER  user name for PostgreSQL connection (default: libpq
                        settings)
  --immediate-checkpoint
                        forces the initial checkpoint to be done as quickly as
                        possible
  -J JOBS, --jobs JOBS  number of subprocesses to upload data to S3 (default:
                        2)
  -S MAX_ARCHIVE_SIZE, --max-archive-size MAX_ARCHIVE_SIZE
                        maximum size of an archive when uploading to S3
                        (default: 100GB)
  --endpoint-url ENDPOINT_URL
                        Override default S3 endpoint URL with the given one

Maintenant que nous avons une idée plus claire de la commande et de ses options, nous sommes prêts à exécuter notre première sauvegarde cloud :

[email protected]:~ $ barman-cloud-backup -P barman-cloud \
  -e AES256 -j --immediate-checkpoint -J 4 \
  s3://barman-s3-test/ pg12

Une fois la sauvegarde terminée avec succès, le base répertoire contenant la sauvegarde sera dans votre compartiment S3. Vérifions-le, en construisant le chemin de destination avec le nom du serveur et la base répertoire :

[email protected]:~ $ aws s3 --profile barman-cloud ls s3://barman-s3-test/pg12/base/
                           PRE 20200713T120856/

Alternativement, vous pouvez utiliser barman-cloud-backup-list , mais dans cet article, j'aimerais me concentrer sur les mécanismes qui le sous-tendent.

Le 20200711T092548 Le répertoire contient tous les fichiers liés à la sauvegarde que nous venons d'exécuter. Regardons son contenu :

[email protected]:~ $ aws s3 --profile barman-cloud ls s3://barman-s3-test/pg12/base/20200713T120856/
2020-07-13 12:09:08       1138 backup.info
2020-07-13 12:09:07    9263096 data.tar.bz2

Comme nous pouvons le voir, il existe un fichier compressé et crypté contenant notre sauvegarde (data.tar.bz2 ) et un fichier nommé backup.info contenant les informations relatives à la sauvegarde. Nous pouvons restaurer la sauvegarde en copiant et décompressant le data.tar.bz2 fichier sur notre serveur local comme indiqué ci-dessous :

[email protected]:~ $ aws s3 --profile barman-cloud cp s3://barman-s3-test/pg12/base/20200713T120856/data.tar.bz2 restore-dir
download: s3://barman-s3-test/pg12/base/20200713T120856/data.tar.bz2 to restore-dir/data.tar.bz2

[email protected]:~ $ cd restore-dir

[email protected]:~/restore-dir $ tar xjvf data.tar.bz2

[email protected]:~/restore-dir $ ls
PG_VERSION    conf.d        pg_commit_ts  pg_ident.conf  pg_notify    pg_snapshots  pg_subtrans  pg_wal                postgresql.conf
backup_label  data.tar.bz2  pg_dynshmem   pg_logical     pg_replslot  pg_stat       pg_tblspc    pg_xact
base          global        pg_hba.conf   pg_multixact   pg_serial    pg_stat_tmp   pg_twophase  postgresql.auto.conf

Génial! Comme nous pouvons le voir, tous les fichiers du DATADIR de l'instance PostgreSQL que nous avons sauvegardés, y compris les fichiers de configuration, sont correctement répertoriés ici.

Conclusion

Avec le barman-cloud-backup La commande Barman introduit une fonctionnalité importante qui vous permet d'exécuter et d'expédier directement des sauvegardes de base depuis un serveur PostgreSQL local vers des services de stockage d'objets cloud compatibles avec AWS S3 en quelques étapes simples. Il prend en charge le cryptage, le téléchargement parallèle, la compression et permet d'économiser de l'espace disque sur votre serveur local et de transférer en toute sécurité les sauvegardes vers le cloud.

Avec la sortie de Barman 2.11 , qui s'est produit il y a quelques jours, de nouvelles fonctionnalités importantes ont été introduites, notamment le barman-cloud-wal-restore et le barman-cloud-restore commandes, qui permettent de récupérer les fichiers de sauvegarde et WAL à partir d'un magasin d'objets tel qu'AWS S3. A ce sujet, nous publierons prochainement un nouvel article de blog expliquant comment préparer la restauration d'une instance PostgreSQL à l'aide de ces commandes. Restez à l'écoute.