sql >> Base de Datos >  >> RDS >> PostgreSQL

Barman Cloud – Parte 2:Copia de seguridad en la nube

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.