sql >> Databasteknik >  >> RDS >> PostgreSQL

Använda Barman för att säkerhetskopiera PostgreSQL - En översikt

Databassäkerhetskopior spelar en avgörande roll för att utforma en effektiv katastrofåterställningsstrategi för produktionsdatabaser. Databasadministratörer och arkitekter måste kontinuerligt arbeta för att utforma en optimal och effektiv säkerhetskopieringsstrategi för uppdragskritiska databaser i realtid och ytterligare säkerställa att SLA:erna för Disaster Recovery är uppfyllda. Enligt min erfarenhet är detta inte lätt och kan ta från dagar till veckor för att uppnå en oklanderlig säkerhetskopieringsstrategi. Det är bara inte att skriva ett bra skript för att säkerhetskopiera databaser och se till att det fungerar. Det finns flera faktorer att ta hänsyn till, låt oss ta en titt på dem:

  • Databasstorlek: Databasstorlek spelar en viktig roll när man utformar säkerhetskopieringsstrategier. I själva verket är detta en av kärnfaktorerna som definierar
    • Tid som säkerhetskopieringen tar
    • Belastningen på infrastrukturkomponenter som disk, nätverk, CPU etc.
    • Mängden säkerhetskopieringslagring som krävs och kostnaderna för detta
    • Om databaserna ligger på molnet beror kostnaderna för backuplagring på mängden lagringsutrymme som krävs
    • Också databasstorleken påverkar RTO:n
  • Infrastruktur: Säkerhetskopieringsstrategin är starkt beroende av databasernas infrastruktur. Säkerhetskopieringsproceduren skulle vara annorlunda för databaser som finns på en fysisk server i ett lokalt datacenter jämfört med de som finns på molnet.
  • Reservplats: Vart tar säkerhetskopiorna vägen? I allmänhet kommer säkerhetskopiorna att placeras på en avlägsen plats, till exempel på band- eller molnspecifik lagring som AWS S3.
  • Säkerhetskopieringsverktyg: Identifiera ett optimalt verktyg för att utföra säkerhetskopiering av databaser online som potentiellt säkerställer att konsekvent säkerhetskopiering har tagits.

En bra säkerhetskopieringsstrategi för databas måste säkerställa att RTO (Recovery Time Objective) och RPO (Recovery Point Objective) uppfylls, vilket i sin tur hjälper till att uppnå Disaster Recovery-målet. Säkerhetskopiering på filsystemnivå kan utföras på PostgreSQL-databaser på flera sätt. I den här bloggen kommer mitt fokus att ligga på ett verktyg som heter Barman som populärt används för att utföra PostgreSQL Databas Backups.

Barman (hanterare för säkerhetskopiering och återställning) är ett Python-baserat verktyg med öppen källkod som utvecklats av utvecklare på 2:a kvadranten. Detta verktyg är utvecklat för att uppnå en strategi för säkerhetskopiering av databas i företagsklass för affärskritiska PostgreSQL-produktionsdatabaser. Dess funktioner och egenskaper liknar Oracles RMAN. Enligt min åsikt är barman ett av de bästa alternativen för PostgreSQL-databaser och kan leverera flera fördelar ur driftperspektivet till DBA:er och infrastrukturingenjörer.

Låt oss titta på några funktioner hos Barman:

Jag börjar med konfigurationsöversikten och listar sedan vilken typ av säkerhetskopiering som kan utföras

Tekniskt sett är barman-cli ett pythonbaserat verktyg och har två olika konfigurationsfiler att hantera. En fil som är den faktiska konfigurationen för databasen som ska säkerhetskopieras finns i "/etc/barman.d"-namn som .conf och den andra filen som har barman-relaterade parametrar (som t.ex. barman backup plats, barman server, loggfiler etc.) konfigurerade finns i "/etc" (/etc/barman.conf). Barman-konfigurationsfilerna har parameterkonfiguration av MySQL-typ.

Exempel på innehållet i filen /etc/barman.conf visas nedan

[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

Installation av Barman

Låt oss ta en titt på installationsproceduren för barman -

Installerar från källan

Ladda ner barman från https://www.pgbarman.org/

Untar / packa upp installationsprogrammet och kör följande kommando som root-användare -

[[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

Installerar från arkivet

Installation kan också göras via yum enligt följande

[[email protected]~]$ yum install barman

Låt oss ta en titt på olika typer av säkerhetskopior som barman stödjer

Physical Hot Backups

Barman stöder Physical Hot Backups vilket innebär online-säkerhetskopiering av fysiska datafiler och transaktionsloggfiler för databasen med hjälp av rsync-metoden som också kan vara i komprimerad form.

Låt oss ta en titt på stegen och kommandona för att utföra RSYNC-säkerhetskopiering med barman

#1 PostgreSQL-databaskonfigurationsfil för barman

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

“pgdb” är identifieraren för Postgres-databasen för barman och konfigurationsfilens namn ska vara .conf som finns i /etc/barman.d/. När kommandot barman backup körs, letar barman efter avsnittet [pgdb] i filen pgdb.conf.

Parametern backup_method definierar vilken typ av backup som ska tas. I det här fallet är backup_method rsync.

Obs:För att kommandot barman backup ska bli framgångsrikt måste lösenordslös ssh-autentisering konfigureras mellan barman och postgres servrar.

#2 postgresql.conf filparametrar

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

Barmans backup-kommando

#3 Kontrollera om barman är redo att göra säkerhetskopior

[[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

Ovanstående utdata säger att allt är "OK" för att fortsätta med säkerhetskopieringen, vilket betyder att du är bra att ta en säkerhetskopia.

Till exempel, nedanstående utdata säger att säkerhetskopiering inte kan tas eftersom SSH enligt barman inte fungerar -

[[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 Utför säkerhetskopiering av databas

[[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

För att förstå om kommandot barman backup ens kommer att bli framgångsrikt, hjälper kommandot nedan -

Inkrementella säkerhetskopior

En annan stor förmåga hos Barman är förmågan att ta stegvisa säkerhetskopior. Detta innebär att endast de ändrade blocken sedan den senaste fullständiga databassäkerhetskopieringen kan säkerhetskopieras. För databaser som genomgår färre dataändringar kan en stegvis säkerhetskopiering av dem minska resursanvändningen.

Det beror mycket på rsync och hårda länkar. Nedan är fördelarna med inkrementella säkerhetskopieringar –

  • Reducerar den dagliga säkerhetskopieringen avsevärt
  • Mängden data som säkerhetskopieras minskar eftersom endast de ändrade datablocken kommer att säkerhetskopieras, vilket i sin tur minskar användningen av infrastrukturresurser som nätverksbandbredd, diskutrymme, I/O etc.
  • Om du är ute efter att ha uppnått en mycket bra RTO är det här funktionen du skulle leta efter

Kommandon för inkrementell säkerhetskopiering är i stort sett desamma. Eventuella efterföljande säkerhetskopior efter den första säkerhetskopian som tagits med alternativet backup_method=rsync kommer att vara inkrementella säkerhetskopior och barman drar WALs med hjälp av verktyget pg_recieexlog.

Fjärrsäkerhetskopiering och återställning av databas

Denna förmåga hos Barman är mycket fördelaktig för DBAs enligt min mening. Det första som DBA:er skulle leta efter är att undvika att stressa produktionsdatabasserverresurser så mycket som möjligt under säkerhetskopieringarna och att göra dem på distans skulle vara det bästa alternativet. Barman använder pg_basebackup vilket gör det mycket enklare att skripta och automatisera det.

I allmänhet kommer traditionellt tillgängliga alternativ för automatisk säkerhetskopiering att vara -

  1. pg_basebackup
  2. tjärkopia

Ovanstående två alternativ innebär mycket utveckling och testning för att säkerställa att en effektiv säkerhetskopieringsstrategi finns på plats för att möta kraven från SLA och kan utgöra utmaningar för stora databaser med flera tabellutrymmen.

Med Barman är det ganska enkelt. En annan exceptionell förmåga hos barman är kontinuerlig WAL-strömning. Låt oss ta en titt på det lite mer detaljerat.

Ladda ner Whitepaper Today PostgreSQL Management &Automation med ClusterControlLäs om vad du behöver veta för att distribuera, övervaka, hantera och skala PostgreSQLDladda Whitepaper

Strömmande säkerhetskopiering med kontinuerlig WAL-strömning

Detta gör barman enastående i jämförelse med andra verktyg på marknaden. Live WAL-filer kan strömmas kontinuerligt till en fjärrbackupplats med hjälp av Barman. Detta är FUNKTIONEN som DBA:er skulle vara glada över att veta. Jag var exalterad över att veta om detta. Det är extremt svårt eller nästan omöjligt att uppnå detta med manuellt byggda skript eller med en kombination av verktyg som pg_basebackup och pg_receivewal. Med kontinuerlig WAL-streaming kan en bättre RPO uppnås. Om backupstrategin är noggrant utformad skulle det inte vara en överdrift att säga att en nästan 0 RPO kan uppnås.

Låt oss titta på stegen, kommandon för att utföra en strömmande barman backup

#1 postgresql.conf parameterändringar

Följande konfigurationer som ska göras i 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 Skapa replikeringsplats med barman

Replikeringsplats är viktig för strömmande säkerhetskopior. Om kontinuerlig streaming av WALs misslyckas av någon anledning, kan alla icke-streamade WALs behållas i postgres-databasen utan att tas bort.

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

#3 Konfigurera databasserverns konfigurationsfil för barman

Databasidentifierare för barman är "pgdb". En konfigurationsfil som heter pgdb.conf måste skapas på /etc/barman.d/ plats med följande innehåll

[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 är parametern som ska konfigureras för barman att utföra strömmande säkerhetskopior
backup_method måste konfigureras till "postgres" när streaming backup ska tas
streaming_archiver måste konfigureras till "på"
slot_name=barman Den här parametern måste konfigureras när du behöver barman för att använda replikeringsplatser. I det här fallet är replikeringsplatsens namn barman

När konfigurationen är klar, gör en barman-kontroll för att säkerställa att strömmande säkerhetskopieringar kommer att fungera.

#4 Kontrollera om barman receive-wal fungerar ok

I allmänhet för den första barman receive-wal fungerar inte omedelbart efter konfigurationsändringar, kan fel uppstå och barman check kommandot kan visa följande -

[[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

När du kör barman receive-wal kan det hänga. För att få mottagningsval att fungera korrekt för första gången måste kommandot nedan utföras.

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

Gör nu en barman check igen, det borde vara bra nu.

[[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

Om du kan se, så visar receivexlog status ok. Det här är en av de problem jag stötte på.

#5 Kontrollera om barman är redo att göra säkerhetskopior

[[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 Kontrollera strömningsstatusen med barman

[[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)

Ovanstående status betyder att barman är redo att utföra streaming backup. Utför säkerhetskopieringen enligt nedan -

[[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

Centraliserade och katalogiserade säkerhetskopior

Är mycket fördelaktigt för miljöer som kör flera databaser på flera servrar i en nätverksmiljö. Detta är en av de exceptionella egenskaperna hos Barman. Jag har arbetat i realtidsmiljöer där jag var tvungen att hantera, administrera 100-tals databaser och jag har alltid känt ett behov av centraliserade databassäkerhetskopieringar och det är därför Oracle RMAN blev populärt för Oracles säkerhetskopieringsstrategi för databaser och nu fyller Barman det utrymme för PostgreSQL. Med Barman kan DBA,s och DevOps ingenjörer arbeta för att bygga en centraliserad backupserver där databassäkerhetskopior för alla databaser underhålls, valideras.

Katalogiserade säkerhetskopior innebär att barman har ett centraliserat arkiv där statusen för alla säkerhetskopior upprätthålls. Du kan kontrollera säkerhetskopiorna som är tillgängliga för en viss databas enligt nedan -

[[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

Retentionspolicy för säkerhetskopiering

Retentionspolicyer kan definieras för säkerhetskopiering av databas. Säkerhetskopior kan göras föråldrade efter en viss period och föråldrade säkerhetskopior kan raderas då och då.

Det finns alternativ i konfigurationsfilen för att säkerställa att säkerhetskopior behålls och görs föråldrade när lagringsperioden överskrider -

Den första parametern att konfigurera är minimum_redundans . Konfigurera alltid minimum_redundancy till>0 för att säkerställa att säkerhetskopior inte raderas av misstag.

Exempel:minimum_redundans =1

  • retention_policy parametern avgör hur länge bassäkerhetskopiorna måste sparas för att säkerställa att SLA:er för katastrofåterställning uppfylls.
  • wal_retention_policy parametern avgör hur länge wal-säkerhetskopiorna måste sparas under. Detta säkerställer att förväntad RPO uppfylls.

Befintliga lagrings- och redundanspolicyer för en databasserver kan kontrolleras med kommandot barman check enligt följande

[[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

Parallella säkerhetskopior och återställningar kan utföras genom att använda flera processorer vilket verkligen gör säkerhetskopieringar och återställningar snabbare. Denna funktion är fördelaktig för mycket stora databaser med storlek upp till TeraBytes.

För att utföra säkerhetskopior parallellt, lägg till följande alternativ i databasserverns konfigurationsfil (som är filen /etc/barman.d/pgdb.conf)-

parallel_jobs = 1

Jag kan avsluta med att säga att barman är ett företagsverktyg som potentiellt kan hjälpa DBA:er att utforma en effektiv katastrofåterställningsstrategi.

Relaterade resurser ClusterControl för PostgreSQLLäs mer Använda pg_dump och pg_dumpall för att säkerhetskopiera PostgreSQLRäsa bloggen Bästa säkerhetskopieringsverktyg för PostgreSQLRäsa bloggen Bli en PostgreSQL DBA – Logiska och fysiska PostgreSQL-säkerhetskopior Läs bloggen
  1. Hur kan jag starta PostgreSQL på Windows?

  2. Hur TO_CHAR() fungerar i MariaDB

  3. Spara SQLite-frågeresultat till en textfil

  4. Hur Sinh() fungerar i PostgreSQL