sql >> Databáze >  >> RDS >> PostgreSQL

Barman Cloud – Část 2:Cloud Backup

V první části tohoto blogu Jonathan vysvětlil, jak funguje příkaz barman-wal-archive. Nyní, za předpokladu, že jste postupovali podle těchto pokynů, máte správně nakonfigurovanou instanci PostgreSQL spuštěnou a spuštěnou. V této druhé části vám ukážu, jak barman-cloud-backup příkaz funguje.


Jak můžete uhodnout ze samotného názvu příkazu, barman-cloud-backup umožňuje spouštět zálohy přímo ze serveru PostgreSQL a jako cíl použít úložiště objektů kompatibilní s S3 v cloudu.

[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

Nyní, když máme jasnější představu o příkazu a jeho možnostech, jsme připraveni provést naši první cloudovou zálohu:

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

Jakmile bude zálohování úspěšně dokončeno, base adresář obsahující zálohu bude ve vašem kbelíku S3. Pojďme to zkontrolovat a vytvořit cílovou cestu s názvem serveru a base adresář:

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

Případně můžete použít barman-cloud-backup-list , ale v tomto článku bych se rád zaměřil na mechaniku, která za tím stojí.

20200711T092548 adresář obsahuje všechny soubory související se zálohou, kterou jsme právě provedli. Podívejme se na jeho obsah:

[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

Jak vidíme, existuje komprimovaný a zašifrovaný soubor obsahující naši zálohu (data.tar.bz2 ) a soubor s názvem backup.info obsahující informace související se zálohou. Zálohu můžeme obnovit zkopírováním a rozbalením souboru data.tar.bz2 soubor na našem místním serveru, jak je uvedeno níže:

[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

Skvělý! Jak vidíme, všechny soubory v DATADIRu instance PostgreSQL, které jsme zálohovali, včetně konfiguračních souborů, jsou zde uvedeny správně.

Závěry

S barman-cloud-backup command Barman představuje důležitou funkci, která vám umožňuje spouštět a přímo odesílat základní zálohy z místního serveru PostgreSQL do služeb cloudového úložiště objektů, které jsou kompatibilní s AWS S3 v několika jednoduchých krocích. Podporuje šifrování, paralelní nahrávání, kompresi a umožňuje šetřit místo na disku na vašem místním serveru a bezpečně přenášet zálohy do cloudu.

S vydáním Barman 2.11 , ke kterému došlo před několika dny, byly představeny důležité nové funkce, včetně barman-cloud-wal-restore a barman-cloud-restore příkazy, které umožňují načíst zálohu a soubory WAL z úložiště objektů, jako je AWS S3. V tomto ohledu brzy zveřejníme nový článek na blogu vysvětlující, jak připravit obnovu instance PostgreSQL pomocí těchto příkazů. Zůstaňte naladěni.


  1. Automatický sběr dat změn databázového schématu na MS SQL Server

  2. Postgres Alter Column Integer na Boolean

  3. Rozdíl mezi těmito dvěma přístupy ke spojovací tabulce?

  4. Jak zabezpečit servery MySQL/MariaDB