En la primera parte de este blog, Jonathan explicó cómo funciona el comando barman-wal-archive. Ahora, asumiendo que siguió esas instrucciones, tiene una instancia de PostgreSQL correctamente configurada y funcionando. En esta segunda parte, te mostraré cómo barman-cloud-backup
el comando funciona.
Como puede adivinar por el nombre del comando, el barman-cloud-backup
El comando le permite ejecutar copias de seguridad directamente desde un servidor PostgreSQL y utilizar un almacén de objetos compatible con S3 en la nube como destino.
[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
Ahora que tenemos una idea más clara del comando y sus opciones, estamos listos para ejecutar nuestra primera copia de seguridad en la nube:
[email protected]:~ $ barman-cloud-backup -P barman-cloud \ -e AES256 -j --immediate-checkpoint -J 4 \ s3://barman-s3-test/ pg12
Una vez que la copia de seguridad se ha completado con éxito, la base
El directorio que contiene la copia de seguridad estará en su depósito S3. Vamos a comprobarlo, construyendo la ruta de destino con el nombre del servidor y la base
directorio:
[email protected]:~ $ aws s3 --profile barman-cloud ls s3://barman-s3-test/pg12/base/ PRE 20200713T120856/
Alternativamente, puede usar barman-cloud-backup-list
, pero en este artículo me gustaría centrarme en la mecánica detrás de esto.
El 20200711T092548
El directorio contiene todos los archivos relacionados con la copia de seguridad que acabamos de ejecutar. Veamos su contenido:
[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
Como podemos ver, hay un archivo comprimido y encriptado que contiene nuestra copia de seguridad (data.tar.bz2
) y un archivo llamado backup.info
que contiene la información relacionada con la copia de seguridad. Podemos restaurar la copia de seguridad copiando y descomprimiendo el data.tar.bz2
archivo en nuestro servidor local como se muestra a continuación:
[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
¡Estupendo! Como podemos ver, todos los archivos en DATADIR de la instancia de PostgreSQL de la que hicimos una copia de seguridad, incluidos los archivos de configuración, se enumeran correctamente aquí.
Conclusiones
Con barman-cloud-backup
command Barman presenta una característica importante que le permite ejecutar y enviar directamente copias de seguridad base desde un servidor PostgreSQL local a servicios de almacenamiento de objetos en la nube que son compatibles con AWS S3 en solo unos pocos pasos simples. Admite cifrado, carga paralela, compresión y permite ahorrar espacio en disco en su servidor local y transferir de forma segura las copias de seguridad a la nube.
Con el lanzamiento de Barman 2.11
, que sucedió hace unos días, se han introducido nuevas funciones importantes, incluida la barman-cloud-wal-restore
y el barman-cloud-restore
comandos, que permiten recuperar la copia de seguridad y los archivos WAL de un almacén de objetos como AWS S3. En ese sentido, pronto publicaremos un nuevo artículo de blog explicando cómo preparar la recuperación de una instancia de PostgreSQL usando estos comandos. Estén atentos.