В първата част на този блог Джонатан обясни как работи командата barman-wal-archive. Сега, ако приемем, че сте следвали тези инструкции, имате правилно конфигуриран екземпляр на PostgreSQL и работи. В тази втора част ще ви покажа как barman-cloud-backup командата работи.
Както можете да се досетите от самото име на командата, barman-cloud-backup командата ви позволява да изпълнявате резервни копия директно от сървър на PostgreSQL и да използвате съвместимо със S3 обекти в облака като дестинация.
example@sqldat.com:~ $ 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
Сега, когато имаме по-ясна представа за командата и нейните опции, сме готови да изпълним първото си архивиране в облак:
example@sqldat.com:~ $ barman-cloud-backup -P barman-cloud \ -e AES256 -j --immediate-checkpoint -J 4 \ s3://barman-s3-test/ pg12
След като архивирането приключи успешно, base директория, съдържаща архива, ще бъде във вашата S3 кофа. Нека го проверим, като изградим пътя на дестинацията с името на сървъра и base директория:
example@sqldat.com:~ $ aws s3 --profile barman-cloud ls s3://barman-s3-test/pg12/base/
PRE 20200713T120856/
Като алтернатива можете да използвате barman-cloud-backup-list , но в тази статия бих искал да се съсредоточа върху механиката зад него.
20200711T092548 директорията съдържа всички файлове, свързани с архивирането, което току-що изпълнихме. Нека разгледаме съдържанието му:
example@sqldat.com:~ $ 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
Както виждаме, има компресиран и криптиран файл, съдържащ нашия архив (data.tar.bz2 ) и файл, наречен backup.info съдържаща информацията, свързана с архивирането. Можем да възстановим архива, като копираме и разархивираме data.tar.bz2 файл на нашия локален сървър, както е показано по-долу:
example@sqldat.com:~ $ 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 example@sqldat.com:~ $ cd restore-dir example@sqldat.com:~/restore-dir $ tar xjvf data.tar.bz2 example@sqldat.com:~/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
Страхотен! Както виждаме, всички файлове в DATADIR на PostgreSQL екземпляр, които сме архивирали, включително конфигурационните файлове, са изброени правилно тук.
Заключения
С barman-cloud-backup Командата Barman въвежда важна функция, която ви позволява да изпълнявате и директно изпращате базови архиви от локален PostgreSQL сървър към услуги за съхранение на облачни обекти, които са съвместими с AWS S3 само с няколко прости стъпки. Той поддържа криптиране, паралелно качване, компресиране и позволява да се спести дисково пространство на вашия локален сървър и да се прехвърлят безопасно архивните копия в облака.
С пускането на Barman 2.11 , което се случи преди няколко дни, бяха въведени важни нови функции, включително barman-cloud-wal-restore и barman-cloud-restore команди, които позволяват да се извличат архивните и WAL файлове от обектно хранилище като AWS S3. В тази връзка скоро ще публикуваме нова статия в блога, обясняваща как да подготвим възстановяването на екземпляр на PostgreSQL с помощта на тези команди. Останете на линия.