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

Použití Barmana k zálohování PostgreSQL - přehled

Zálohy databází hrají zásadní roli při navrhování efektivní strategie obnovy po havárii pro produkční databáze. Správci databází a architekti musí neustále pracovat na návrhu optimální a efektivní strategie zálohování kritických databází v reálném čase a dále zajistit, aby byly dodržovány smlouvy SLA pro obnovu po havárii. Podle mých zkušeností to není snadné a může trvat dny až týdny, než dosáhnete dokonalé strategie zálohování. Je to prostě není napsat dobrý skript pro zálohování databází a ujistěte se, že to funguje. Existuje několik faktorů, které je třeba zvážit, pojďme se na ně podívat:

  • Velikost databáze: Velikost databáze hraje důležitou roli při navrhování strategií zálohování. Ve skutečnosti je to jeden z klíčových faktorů, který definuje
    • Čas zálohování
    • Zatížení komponent infrastruktury, jako je disk, síť, CPU atd.
    • Požadované množství zálohovacího úložiště a související náklady
    • Pokud jsou databáze hostovány v cloudu, náklady na zálohování závisí na velikosti požadovaného úložiště
    • Velikost databáze také ovlivňuje RTO
  • Infrastruktura: Strategie zálohování silně závisí na infrastruktuře databází. Postup zálohování by byl odlišný pro databáze hostované na fyzickém serveru v místním datovém centru ve srovnání s databázemi hostovanými v cloudu.
  • Umístění zálohy: Kam jdou zálohy? Obecně platí, že zálohy budou umístěny na vzdáleném místě, například na páskovém nebo cloudovém úložišti, jako je AWS S3.
  • Zálohovací nástroj: Identifikujte optimální nástroj pro provádění online zálohování databáze, který potenciálně zajišťuje konzistentní zálohování.

Dobrá strategie zálohování databáze musí zajistit, aby byly splněny cíle RTO (obnovení času) a RPO (obnovení bodové cíle), což zase pomáhá dosáhnout cíle obnovy po havárii. Zálohování na úrovni souborového systému lze v databázích PostgreSQL provádět několika způsoby. V tomto blogu se zaměřím na nástroj nazvaný Barman, který se běžně používá k zálohování databáze PostgreSQL.

Barman (správce zálohování a obnovy) je open-source nástroj založený na Pythonu vyvinutý vývojáři z 2nd Quadrant. Tento nástroj je vyvinut k dosažení strategie zálohování podnikové databáze pro kritické produkční databáze PostgreSQL. Jeho vlastnosti a vlastnosti se podobají RMAN společnosti Oracle. Podle mého názoru je barman jednou z nejlepších možností pro PostgreSQL databáze a může správcům databází a infrastrukturním inženýrům přinést několik výhod z hlediska provozu.

Podívejme se na některé schopnosti Barmana:

Začnu přehledem konfigurace a poté uvedu, jaké zálohy lze provádět

Technicky je barman-cli nástroj založený na pythonu a má dva různé konfigurační soubory. Jeden soubor, který je skutečnou konfigurací databáze, která má být zálohována, se nachází v názvech „/etc/barman.d“ jako .conf a druhý soubor, který má parametry související s barmanem (např. umístění záloh barman, barman server, soubory protokolů atd.) nakonfigurované se nacházejí v „/etc“ (/etc/barman.conf). Konfigurační soubory barmana mají konfiguraci parametrů typu MySQL.

Příklad obsahu souboru /etc/barman.conf je uveden níže

[barman]
barman_user = barman            ---------> barman user who performs backup/recovery of database
configuration_files_directory = /etc/barman.d    -----> location for DB configuration files
barman_home = /dbbackups/barman    ---> barman home directory
log_file = /dbbackups/barman/logs/barman.log ---> barman log file location
log_level = INFO  -----> level of logging for barman operations
compression = gzip  ----->  backups must be compressed

Instalace Barmana

Pojďme se podívat na postup instalace barmana -

Instalace ze zdroje

Stáhněte si barmana z https://www.pgbarman.org/

Rozbalte / rozbalte instalační program a spusťte následující příkaz jako uživatel root -

[[email protected] barman-2.4]# ./setup.py install
/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'setup_requires'
  warnings.warn(msg)
/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
  warnings.warn(msg)
/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'tests_require'
  warnings.warn(msg)
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/barman
copying barman/utils.py -> build/lib/barman
copying barman/fs.py -> build/lib/barman
copying barman/retention_policies.py -> build/lib/barman
copying barman/diagnose.py -> build/lib/barman
copying barman/backup.py -> build/lib/barman
copying barman/recovery_executor.py -> build/lib/barman
copying barman/backup_executor.py -> build/lib/barman
copying barman/config.py -> build/lib/barman
copying barman/process.py -> build/lib/barman
copying barman/output.py -> build/lib/barman
copying barman/__init__.py -> build/lib/barman
copying barman/remote_status.py -> build/lib/barman
copying barman/xlog.py -> build/lib/barman
copying barman/lockfile.py -> build/lib/barman
copying barman/postgres.py -> build/lib/barman
copying barman/server.py -> build/lib/barman
copying barman/cli.py -> build/lib/barman
copying barman/version.py -> build/lib/barman
copying barman/compression.py -> build/lib/barman
copying barman/wal_archiver.py -> build/lib/barman
copying barman/infofile.py -> build/lib/barman
copying barman/exceptions.py -> build/lib/barman
copying barman/hooks.py -> build/lib/barman
copying barman/copy_controller.py -> build/lib/barman
copying barman/command_wrappers.py -> build/lib/barman
running build_scripts
creating build/scripts-2.7
copying and adjusting bin/barman -> build/scripts-2.7
changing mode of build/scripts-2.7/barman from 644 to 755
running install_lib
creating /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/utils.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/fs.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/retention_policies.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/diagnose.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/backup.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/recovery_executor.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/backup_executor.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/config.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/process.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/output.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/__init__.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/remote_status.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/xlog.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/lockfile.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/postgres.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/server.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/cli.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/version.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/compression.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/wal_archiver.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/infofile.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/exceptions.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/hooks.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/copy_controller.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/command_wrappers.py -> /usr/lib/python2.7/site-packages/barman
byte-compiling /usr/lib/python2.7/site-packages/barman/utils.py to utils.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/fs.py to fs.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/retention_policies.py to retention_policies.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/diagnose.py to diagnose.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/backup.py to backup.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/recovery_executor.py to recovery_executor.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/backup_executor.py to backup_executor.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/config.py to config.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/process.py to process.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/output.py to output.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/__init__.py to __init__.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/remote_status.py to remote_status.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/xlog.py to xlog.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/lockfile.py to lockfile.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/postgres.py to postgres.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/server.py to server.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/cli.py to cli.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/version.py to version.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/compression.py to compression.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/wal_archiver.py to wal_archiver.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/infofile.py to infofile.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/exceptions.py to exceptions.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/hooks.py to hooks.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/copy_controller.py to copy_controller.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/command_wrappers.py to command_wrappers.pyc
running install_scripts
copying build/scripts-2.7/barman -> /usr/bin
changing mode of /usr/bin/barman to 755
running install_data
copying doc/barman.1 -> /usr/share/man/man1
copying doc/barman.5 -> /usr/share/man/man5
running install_egg_info
Writing /usr/lib/python2.7/site-packages/barman-2.4-py2.7.egg-info

Instalace z repozitáře

Instalaci lze také provést pomocí yum následovně

[[email protected]~]$ yum install barman

Pojďme se podívat na různé typy záloh, které barman podporuje

Physical Hot Backups

Barman podporuje Physical Hot Backups, což znamená online zálohování fyzických datových souborů a souborů protokolu transakcí databáze pomocí metodologie rsync, která může být i v komprimované podobě.

Pojďme se podívat na kroky a příkazy k provedení zálohy RSYNC pomocí barman

#1 konfigurační soubor databáze PostgreSQL pro barmana

[pgdb]
description="Main PostgreSQL server"
conninfo=host=pgserver user=postgres dbname=postgres
ssh_command=ssh [email protected]
archiver=on
backup_method = rsync

„pgdb“ je identifikátor Postgres Database for barman a název konfiguračního souboru by měl být .conf umístěný v /etc/barman.d/. Když je proveden příkaz barman backup, barman hledá sekci [pgdb] v souboru pgdb.conf.

Parametr backup_method definuje typ zálohy, která se má provést. V tomto případě je backup_method rsync.

Poznámka:Aby byl příkaz barman backup úspěšný, musí být mezi servery barman a postgres nakonfigurována autentizace ssh bez hesla.

#2 parametry souboru postgresql.conf

wal_level=replica
archive_mode=on
archive_command=’rsync to <ARCHIVE LOCATION>’

Barmanův záložní příkaz

#3 Zkontrolujte, zda je barman připraven provádět zálohy

[[email protected] pgdb]$ barman check pgdb
Server pgdb:
        PostgreSQL: OK
        is_superuser: OK
        wal_level: OK
        directories: OK
        retention policy settings: OK
        backup maximum age: OK (no last_backup_maximum_age provided)
        compression settings: OK
        failed backups: OK (there are 0 failed backups)
        minimum redundancy requirements: OK (have 4 backups, expected at least 0)
        ssh: OK (PostgreSQL server)
        not in recovery: OK
        archive_mode: OK
        archive_command: OK
        continuous archiving: OK
        archiver errors: OK

Výše uvedený výstup říká, že je vše „OK“, abyste mohli pokračovat v zálohování, což znamená, že je dobré udělat zálohu.

Například níže uvedený výstup říká, že zálohu nelze provést, protože podle barmana SSH nefunguje -

[[email protected]  ~]$ barman check pgdb
Server pgdb:
        PostgreSQL: OK
        is_superuser: OK
        wal_level: OK
        directories: OK
        retention policy settings: OK
        backup maximum age: OK (no last_backup_maximum_age provided)
        compression settings: OK
        failed backups: OK (there are 0 failed backups)
        minimum redundancy requirements: OK (have 0 backups, expected at least 0)
        ssh: FAILED (Connection failed using '[email protected] -o BatchMode=yes -o StrictHostKeyChecking=no' return code 127)
        not in recovery: OK
        archive_mode: OK
        archive_command: OK
        continuous archiving: OK
        archiver errors: OK

#4 Proveďte zálohu databáze

[[email protected] ~]$ barman backup pgdb
Starting backup using rsync-exclusive method for server pgdb in /dbbackup/barman_backups/pgdb/base/20180816T153846
Backup start at LSN: 0/1C000028 (00000001000000000000001C, 00000028)
This is the first backup for server pgdb
WAL segments preceding the current backup have been found:
        00000001000000000000000B from server pgdb has been removed
        00000001000000000000000C from server pgdb has been removed
        00000001000000000000000D from server pgdb has been removed
        00000001000000000000000E from server pgdb has been removed
        00000001000000000000000F from server pgdb has been removed
        000000010000000000000010 from server pgdb has been removed
        000000010000000000000011 from server pgdb has been removed
        000000010000000000000012 from server pgdb has been removed
        000000010000000000000013 from server pgdb has been removed
        000000010000000000000014 from server pgdb has been removed
        000000010000000000000015 from server pgdb has been removed
        000000010000000000000016 from server pgdb has been removed
Starting backup copy via rsync/SSH for 20180816T153846
Copy done (time: 1 second)
This is the first backup for server pgdb
Asking PostgreSQL server to finalize the backup.
Backup size: 21.8 MiB
Backup end at LSN: 0/1C0000F8 (00000001000000000000001C, 000000F8)
Backup completed (start time: 2018-08-16 15:38:46.668492, elapsed time: 1 second)
Processing xlog segments from file archival for pgdb
        000000010000000000000016
        000000010000000000000017
        000000010000000000000018
        000000010000000000000019
        00000001000000000000001A
        00000001000000000000001B
        00000001000000000000001C
        00000001000000000000001C.00000028.backup

Abyste pochopili, zda bude příkaz barman backup vůbec úspěšný, pomůže vám níže uvedený příkaz -

Přírůstkové zálohy

Další skvělou schopností Barmana je schopnost pořizovat přírůstkové zálohy. To znamená, že lze zálohovat pouze změněné bloky od poslední úplné zálohy databáze. U databází, které procházejí menšími změnami dat, může jejich postupné zálohování snížit spotřebu zdrojů.

Hodně to závisí na rsync a pevných odkazech. Níže jsou uvedeny výhody přírůstkových záloh –

  • Výrazně snižuje denní dobu zálohování
  • Objem zálohovaných dat se snižuje, protože budou zálohovány pouze změněné datové bloky, což zase snižuje využití zdrojů infrastruktury, jako je šířka pásma sítě, místo na disku, I/O atd.
  • Pokud chcete dosáhnout velmi dobré RTO, toto je funkce, kterou byste hledali

Příkazy pro přírůstkové zálohování jsou v podstatě stejné. Jakékoli následné zálohy po první záloze provedené s volbou backup_method=rsync budou přírůstkové zálohy a barman stáhne WAL pomocí nástroje pg_recievexlog.

Vzdálené zálohování a obnova databáze

Tato schopnost Barmana je podle mého názoru pro DBA velmi přínosná. První věc, kterou by správci databází hledali, je vyhnout se maximálnímu zatěžování zdrojů produkčního databázového serveru během zálohování a provádět je na dálku by bylo nejlepší možností. Barman využívá pg_basebackup, díky kterému je skriptování a automatizace mnohem jednodušší.

Obecně platí, že tradičně dostupné možnosti pro automatické zálohování budou -

  1. pg_basebackup
  2. kopie tar

Dvě výše uvedené možnosti vyžadují hodně vývoje a testování, aby bylo zajištěno, že je zavedena účinná strategie zálohování, která splní požadavky SLA a může představovat problémy pro velké databáze s více tabulkovými prostory.

S Barmanem je to docela jednoduché. Další výjimečnou schopností barmana je nepřetržité WAL streamování. Pojďme se na to podívat trochu podrobněji.

Stáhněte si Whitepaper Today Správa a automatizace PostgreSQL s ClusterControlZjistěte, co potřebujete vědět k nasazení, monitorování, správě a škálování PostgreSQLStáhněte si Whitepaper

Zálohování streamování s nepřetržitým streamováním WAL

Díky tomu barman vyniká ve srovnání s ostatními nástroji na trhu. Živé soubory WAL lze nepřetržitě streamovat do vzdáleného umístění záloh pomocí Barman. Toto je FUNKCE, kterou by DBA s nadšením znali. Byl jsem nadšený, že jsem o tom věděl. Je extrémně obtížné nebo téměř nemožné toho dosáhnout pomocí ručně vytvořených skriptů nebo pomocí kombinace nástrojů jako pg_basebackup a pg_receivewal. S nepřetržitým WAL streamováním lze dosáhnout lepší RPO. Pokud je strategie zálohování navržena pečlivě, nebylo by přehnané říci, že lze dosáhnout téměř 0 RPO.

Podívejme se na kroky, příkazy k provedení zálohy streamovaného barmana

#1 změny parametru postgresql.conf

Následující konfigurace, které je třeba provést v postgresql.conf

wal_level=replica
max_wal_senders = 2
max_replication_slots = 2
synchronous_standby_names = 'barman_receive_wal'
archive_mode=on
archive_command = 'rsync -a %p [email protected]:INCOMING_WAL_DIRECTORY/%f'
archive_timeout=3600 (should not be 0 or disabled)

#2 Vytvořte replikační slot pomocí barmana

Replikační slot je důležitý pro streamování záloh. V případě, že nepřetržité streamování WAL z nějakého důvodu selže, všechny nestreamované WAL mohou být zachovány v databázi postgres, aniž by byly odstraněny.

[[email protected] ~]$ barman receive-wal --create-slot pgdb
Creating physical replication slot 'barman' on server 'pgdb'
Replication slot 'barman' created

#3 Nakonfigurujte konfigurační soubor databázového serveru pro barmana

Identifikátor databáze pro barmana je „pgdb“. Konfigurační soubor s názvem pgdb.conf musí být vytvořen v umístění /etc/barman.d/ s následujícím obsahem

[pgdb]
description="Main PostgreSQL server"
conninfo=host=pgserver user=postgres dbname=postgres
streaming_conninfo=host=pgserver user=barman
backup_method=postgres
archiver=on
incoming_wals_directory=/dbbackups/barman_backups/pgdb/incoming
streaming_archiver=on
slot_name=barman

streaming_conninfo je parametr ke konfiguraci pro barmana, aby prováděl zálohování streamování
backup_method musí být nakonfigurován na „postgres“, když má být záloha streamování provedena
streaming_archiver musí být nakonfigurováno na „zapnuto“
slot_name=barman Tento parametr je nutné nakonfigurovat, když potřebujete, aby barman používal replikační sloty. V tomto případě je název replikačního slotu barman

Jakmile je konfigurace hotová, proveďte barmanskou kontrolu, abyste se ujistili, že zálohování streamování proběhne úspěšně.

#4 Zkontrolujte, zda barman příjem-wal běží v pořádku

Obecně platí, že pro první barman příjem-wal nefunguje ihned po změnách konfigurace, může dojít k chybě a příkaz barman check může zobrazit následující -

[[email protected]  archive_status]$ barman check pgdb
Server pgdb:
        PostgreSQL: OK
        is_superuser: OK
        PostgreSQL streaming: OK
        wal_level: OK
        directories: OK
        retention policy settings: OK
        backup maximum age: OK (no last_backup_maximum_age provided)
        compression settings: OK
        failed backups: OK (there are 0 failed backups)
        minimum redundancy requirements: OK (have 0 backups, expected at least 0)
        pg_basebackup: OK
        pg_basebackup compatible: OK
        pg_basebackup supports tablespaces mapping: OK
        archive_mode: OK
        archive_command: OK
        continuous archiving: OK
        pg_receivexlog: OK
        pg_receivexlog compatible: OK
        receive-wal running: FAILED (See the Barman log file for more details)
        archiver errors: OK

Když spustíte barman accept-wal, může se zablokovat. Aby příjem-wal poprvé správně fungoval, musí být proveden níže uvedený příkaz.

[[email protected]  arch_logs]$ barman cron
Starting WAL archiving for server pgdb
Starting streaming archiver for server pgdb

Teď udělej znovu barmanskou kontrolu, už by to mělo být dobré.

[[email protected]  arch_logs]$ barman check pgdb
Server pgdb:
        PostgreSQL: OK
        is_superuser: OK
        PostgreSQL streaming: OK
        wal_level: OK
        replication slot: OK
        directories: OK
        retention policy settings: OK
        backup maximum age: OK (no last_backup_maximum_age provided)
        compression settings: OK
        failed backups: OK (there are 0 failed backups)
        minimum redundancy requirements: OK (have 2 backups, expected at least 0)
        pg_basebackup: OK
        pg_basebackup compatible: OK
        pg_basebackup supports tablespaces mapping: OK
        archive_mode: OK
        archive_command: OK
        continuous archiving: OK
        pg_receivexlog: OK
        pg_receivexlog compatible: OK
        receive-wal running: OK
        archiver errors: OK

Pokud vidíte, stav přijímacího protokolu ukazuje ok. Toto je jeden z problémů, kterým jsem čelil.

#5 Zkontrolujte, zda je barman připraven provádět zálohy

[[email protected] ~]$ barman check pgdb
Server pgdb:
        PostgreSQL: OK
        is_superuser: OK
        PostgreSQL streaming: OK
        wal_level: OK
        replication slot: OK
        directories: OK
        retention policy settings: OK
        backup maximum age: OK (no last_backup_maximum_age provided)
        compression settings: OK
        failed backups: OK (there are 0 failed backups)
        minimum redundancy requirements: OK (have 4 backups, expected at least 0)
        pg_basebackup: OK
        pg_basebackup compatible: OK
        pg_basebackup supports tablespaces mapping: OK
        archive_mode: OK
        archive_command: OK
        continuous archiving: OK
        pg_receivexlog: OK
        pg_receivexlog compatible: OK
        receive-wal running: OK
        archiver errors: OK

#6 Zkontrolujte stav streamování pomocí barmana

[[email protected] pgdb]$ barman replication-status pgdb
Status of streaming clients for server 'pgdb':
  Current LSN on master: 0/250008A8
  Number of streaming clients: 1

  1. #1 Sync WAL streamer
     Application name: barman_receive_wal
     Sync stage      : 3/3 Remote write
     Communication   : TCP/IP
     IP Address      : 192.168.1.10 / Port: 52602 / Host: -
     User name       : barman
     Current state   : streaming (sync)
     Replication slot: barman
     WAL sender PID  : 26592
     Started at      : 2018-08-16 16:03:21.422430+10:00
     Sent LSN   : 0/250008A8 (diff: 0 B)
     Write LSN  : 0/250008A8 (diff: 0 B)
     Flush LSN  : 0/250008A8 (diff: 0 B)

Výše uvedený stav znamená, že barman je připraven provést zálohu streamování. Proveďte zálohu, jak je uvedeno níže -

[[email protected] arch_logs]$ barman backup pgdb
Starting backup using postgres method for server pgdb in /dbbackup/barman_backups/pgdb/base/20180816T160710
Backup start at LSN: 0/1F000528 (00000001000000000000001F, 00000528)
Starting backup copy via pg_basebackup for 20180816T160710
Copy done (time: 1 second)
Finalising the backup.
Backup size: 21.9 MiB
Backup end at LSN: 0/21000000 (000000010000000000000020, 00000000)
Backup completed (start time: 2018-08-16 16:07:10.401526, elapsed time: 1 second)
Processing xlog segments from file archival for pgdb
        00000001000000000000001F
        000000010000000000000020
        000000010000000000000020.00000028.backup
        000000010000000000000021
Processing xlog segments from streaming for pgdb
        00000001000000000000001F
        000000010000000000000020

Centralizované a katalogizované zálohy

Je velmi výhodný pro prostředí s více databázemi na více serverech v síťovém prostředí. To je jedna z výjimečných vlastností Barmana. Pracoval jsem v prostředích reálného času, kde jsem musel spravovat, spravovat stovky databází a vždy jsem cítil potřebu centralizovaného zálohování databází, a proto se Oracle RMAN stal oblíbeným pro strategii zálohování databází Oracle a nyní to plní Barman. prostor pro PostgreSQL. S Barman, DBA,s a DevOps inženýři mohou pracovat na vybudování centralizovaného záložního serveru, kde jsou zálohy databáze pro všechny databáze udržovány a ověřovány.

Katalogizované zálohy, což znamená, že barman udržuje centralizované úložiště, kde jsou udržovány stavy všech záloh. Můžete zkontrolovat dostupné zálohy pro konkrétní databázi, jak je uvedeno níže -

[[email protected] ~]$  barman list-backup pgdb
pgdb 20180816T160924 - Thu Aug 16 16:09:25 2018 - Size: 22.0 MiB - WAL Size: 135.7 KiB
pgdb 20180816T160710 - Thu Aug 16 16:07:11 2018 - Size: 21.9 MiB - WAL Size: 105.8 KiB
pgdb 20180816T153913 - Thu Aug 16 15:39:15 2018 - Size: 21.9 MiB - WAL Size: 54.2 KiB
pgdb 20180816T153846 - Thu Aug 16 15:38:48 2018 - Size: 21.9 MiB - WAL Size: 53.0 KiB

Zásady uchovávání záloh

Zásady uchovávání lze definovat pro zálohy databáze. Zálohy mohou být po určité době zastaralé a zastaralé zálohy lze čas od času smazat.

V konfiguračním souboru jsou možnosti, jak zajistit, aby zálohy byly zachovány a zastaralé, když doba uchování překročí -

První parametr ke konfiguraci je minimum_redundancy . Vždy nakonfigurujte minimum_redundancy na>0, abyste zajistili, že zálohy nebudou náhodně odstraněny.

Příklad:minimum_redundancy =1

  • retention_policy Parametr určí, jak dlouho musí být základní zálohy uchovány, aby bylo zajištěno, že budou splněny SLA pro obnovu po havárii.
  • wal_retention_policy Parametr určí, jak dlouho musí být zálohy wal uchovávány. Tím je zajištěno splnění očekávaného RPO.

Stávající zásady uchovávání a redundance pro databázový server lze zkontrolovat pomocí příkazu barman check takto

[[email protected] ~]$ barman check pgdb
Server pgdb:
        PostgreSQL: OK
        is_superuser: OK
        PostgreSQL streaming: OK
        wal_level: OK
        replication slot: OK
        directories: OK
        retention policy settings: OK
        backup maximum age: OK (no last_backup_maximum_age provided)
        compression settings: OK
        failed backups: OK (there are 0 failed backups)
        minimum redundancy requirements: OK (have 4 backups, expected at least 0)
        pg_basebackup: OK
        pg_basebackup compatible: OK
        pg_basebackup supports tablespaces mapping: OK
        archive_mode: OK
        archive_command: OK
        continuous archiving: OK
        pg_receivexlog: OK
        pg_receivexlog compatible: OK
        receive-wal running: OK
        archiver errors: OK

Paralelní zálohování a obnova lze provádět s využitím více procesorů, což skutečně urychluje dokončení zálohování a obnovy. Tato funkce je výhodná pro velmi velké databáze o velikosti až TeraBytes.

Chcete-li provádět zálohy paralelně, přidejte do konfiguračního souboru databázového serveru následující možnost (což je soubor /etc/barman.d/pgdb.conf)-

parallel_jobs = 1

Na závěr mohu říci, že barman je nástroj podnikové úrovně, který může potenciálně pomoci správcům databází navrhnout efektivní strategii obnovy po havárii.

Související zdroje ClusterControl for PostgreSQLDalší informace Použití pg_dump a pg_dumpall k zálohování PostgreSQLPřečtěte si blog Nejlepší nástroje pro zálohování pro PostgreSQLPřečtěte si blog Staňte se PostgreSQL DBA – Logické a fyzické zálohy PostgreSQLPřečtěte si blog
  1. Použití konfiguračních tabulek k definování skutečného pracovního postupu

  2. Vyplňte rozbalovací pole z tabulky mySQL v PHP

  3. Limity kurzoru dotazu Salesforce API

  4. Jak nejlépe využít funkci komentářů v MySQL