sql >> Databasteknik >  >> RDS >> PostgreSQL

Barman Cloud – Del 2:Cloud Backup

I den första delen av den här bloggen förklarade Jonathan hur kommandot barman-wal-archive fungerar. Nu, förutsatt att du följde dessa instruktioner, har du en korrekt konfigurerad PostgreSQL-instans igång. I den här andra delen kommer jag att visa dig hur barman-cloud-backup kommandot fungerar.


Som du kan gissa från själva kommandonamnet, barman-cloud-backup kommandot låter dig köra säkerhetskopior direkt från en PostgreSQL-server och använda ett S3-kompatibelt objektlager i molnet som 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

Nu när vi har en tydligare uppfattning om kommandot och dess alternativ är vi redo att utföra vår första molnsäkerhetskopiering:

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

När säkerhetskopieringen har slutförts framgångsrikt visas base katalogen som innehåller säkerhetskopian kommer att finnas i din S3-hink. Låt oss kontrollera det och bygga målsökvägen med servernamnet och base katalog:

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

Alternativt kan du använda barman-cloud-backup-list , men i den här artikeln skulle jag vilja fokusera på mekaniken bakom det.

20200711T092548 katalogen innehåller alla filer relaterade till säkerhetskopian som vi just har kört. Låt oss titta på innehållet:

[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

Som vi kan se finns det en komprimerad och krypterad fil som innehåller vår säkerhetskopia (data.tar.bz2 ) och en fil som heter backup.info som innehåller information om säkerhetskopian. Vi kan återställa säkerhetskopian genom att kopiera och packa upp data.tar.bz2 fil på vår lokala server som visas nedan:

[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

Bra! Som vi kan se är alla filer i DATADIR för PostgreSQL-instansen som vi säkerhetskopierade, inklusive konfigurationsfilerna, korrekt listade här.

Slutsatser

Med barman-cloud-backup kommando Barman introducerar en viktig funktion som låter dig utföra och direkt skicka bassäkerhetskopior från en lokal PostgreSQL-server till molnobjektlagringstjänster som är kompatibla med AWS S3 med bara några enkla steg. Den stöder kryptering, parallell uppladdning, komprimering och gör det möjligt att spara diskutrymme på din lokala server och säkert överföra säkerhetskopiorna till molnet.

Med lanseringen av Barman 2.11 , som hände för några dagar sedan, har viktiga nya funktioner introducerats, inklusive barman-cloud-wal-restore och barman-cloud-restore kommandon, som gör det möjligt att hämta säkerhetskopian och WAL-filer från ett objektlager som AWS S3. I det avseendet kommer vi snart att publicera en ny bloggartikel som förklarar hur man förbereder återställningen av en PostgreSQL-instans med dessa kommandon. Håll utkik.


  1. Hur WEEKOFYEAR() fungerar i MariaDB

  2. Ansluter till PostgreSQL-databas genom SSH-tunnling i Python

  3. proxysql-admin Alternativ - ClusterControl ProxySQL GUI

  4. Hur man infogar en sträng i en annan sträng i SQL Server med STUFF()