EDB Backup and Recovery Tool

Das EDB Backup and Recovery Tool (BART) ist eine Schlüsselkomponente in einer Postgres-basierten Notfallwiederherstellungsstrategie auf Enterprise-Ebene.  BART implementiert Datenhaltungsrichtlinien und „Point in Time Recovery“-Anforderungen für Postgres-Bereitstellungen in großem Ma´ßstab. Bart 2.0 ist jetzt erhältlich und bietet inkrementelles Backup auf Blockebene.

Übersicht

Architektur

Architektur des EDB Backup and Recovery Tool

Einstellung von Aufbewahrungsrichtlinien

Einstellung von Aufbewahrungsrichtlinien

Mit dem Enterprise DB Backup and Recovery Tool (BART) lassen sich Aufbewahrungsrichtlinien bereits auf dem BART-Server – sie gelten dann für alle Datenbankserver, die gesichert werden – oder auf der Ebene der einzelnen Postgres-Server definieren. BART sichert das Archiv in einem Verzeichnis Ihrer Wahl. Im Lauf der Zeit neigen Archive dazu, sich in der Zielverzeichnisstruktur anzuhäufen. BART kann alte Backups entsprechend eines von Ihnen definierten Regelsatzes auslaufen lassen, wobei jeder Regelsatz eine sogenannte Aufbewahrungsrichtlinie bildet. Sie können eine einzelne Aufbewahrungsrichtlinie definieren, die für alle Datenbankserver angewendet wird, die BART verwaltet, oder Sie umgehen die allgemeingültige Aufbewahrungsrichtlinie für jeden Server individuell. Zum Beispiel können Sie zehn Backups für die meisten Datenbankserver, bei den restlichen aber die der vergangenen zwei Wochen aufbewahren lassen.

 

Zur Definierung einer Aufbewahrungsrichtlinie modifizieren Sie die Option retention_policy in der Konfigurationsdatei bart.cfg.  Dies ist ein Beispiel, wie Sie BART so konfigurieren, dass die zehn aktuellsten Backups aufbewahrt werden:

 

...

retention_policy = 10 BACKUPS

...

 

Sie können BART auch neu einstellen, um Sicherungen über einen bestimmten Zeitraum aufzubewahren, zum Beispiel:

 

...

retention_policy = 2 WEEKS

...

 

Um die allgemeine Aufbewahrungsrichtlinie zu definieren (also diejenige, die für alle Datenbankserver gilt, wenn sie nicht von einem einzelnen Server umgangen wird),  legen Sie die Option retention_policy im allgemeingültigen Abschnitt der Datei bart.cfg fest (dem Abschnitt mit dem Titel [BART]):

 

[BART]

bart-host          = bartuser@192.168.2.22

backup_path        = /opt/backup

...

retention_policy   = 10 BACKUPS

...

 

Um die Aufbewahrungsrichtlinie für einen bestimmten Server zu definieren, fügen Sie einfach die Option retention_policy für diesen Server in bart.cfg hinzu, zum Beispiel:

 

[WEBSERVER]

host             = 192.168.2.42

port             = 5444

...

retention_policy = 2 weeks

...

For more information about retention policies, see the EDB Backup and Recovery Utility Guide.

 

Einsatz der Befehlszeilen-Schnittstelle

Einsatz der Befehlszeilen-Schnittstelle

BART bietet eine Befehlszeilen-Schnittstelle (Command Line Interface – CLI) Benutzen Sie den bart-Befehl, um BART auszuführen. Dieser Befehl kann drei Formen annehmen:

 

bart --version

bart --help

bart [--config-path path] [subcommand] args

 

Die erste Form zeigt die Versionsnummer von BART an.

Die erste Form zeigt eine Nutzungszusammenfassung, die die vollständige Syntax für den bart-Befehl beschreibt:

$ bart --help

bart: backup and recovery tool

Verwendung:

bart [OPTIONS] [SUB-COMMAND] <args>

Optionen:

 -h, --help       Show this help message and exit

 -v, --version    Show version information and exit

 -d, --debug      Generate debugging output

 -c, --config-path

                  Path to the configuration file

Sub-Befehl:

 INIT             Initializes the backup catalog. Defaults

                  to 'all', specify '-s <server>' to limit

                  to specified server(s)

 BACKUP           Backup the database server.

                  Requires '-s <server>' to limit to

                  specified server(s) or all to backup all

 RESTORE          Restore the database backup.

                  Requires '-s <server>' and '-i <id>'

 

 DELETE           Delete a backup. Requires '-s <server>'

                  and '-i <backupid>'

 SHOW-BACKUPS     Shows the list of backups. Defaults to

                  'all', specify '-s <server>' to limit to

                  specified server(s)

 SHOW-SERVERS     Show server information. Defaults to

                  'all', specify '-s <server>' to limit to

                  specified server(s)

 VERIFY-CHKSUM    Verifies the backup checksum. Defaults to

                   'all', specify '-s <server>' to limit to

                  specified server(s)

 MANAGE           Enforce compression/retention policy on

                  backups. Defaults to 'all', specify

                  '-s <server>' to limit to specified

                  server(s)

Mehr Informationen zu den Befehlen finden Sie in 'bart [SUB-COMMAND] --help'.

Die dritte Form wird genutzt, um den BART-Katalog zu initiieren, einen Datenbank-Server zu sichern, aus einem Backup wiederherzustellen, einen BART-Katalog zu verwalten oder den Inhalt eines BART-Katalogs anzusehen.

Wenn Sie die dritte Form nutzen, legen Sie einen Sub-Befehl fest, der vorgibt, welche Art von Vorgang BART ausführen soll.  Um zum Beispiel einen Server namens „seattle“ zu sichern, nutzen Sie den folgenden Befehl:

$ bart BACKUP -s seattle

Die Option „-s server-name“ legt fest, welcher Datenbankserver gesichert werden soll: Der Servername muss einem Server entsprechen, der in der Konfigurationsdatei bart.cfg angegeben ist.

Um die gesamte Syntax für den BACKUP-Sub-Befehl zu sehen, geben Sie die Option „--help“ nach dem Sub-Befehl ein:

$ bart BACKUP --help

bart: backup and recovery tool

Verwendung:

bart BACKUP [OPTION]...

Optionen:

 -h, --help           Diese Hilfenachricht anzeigen und verlassen

 -s, --server         Name of the server or 'all' to

                      specify all servers

 -F, --format=p|t     Backup output format (tar (default)

                      or plain)

 -i, --incremental    Incremental backup

 -z, --gzip           Enables gzip compression of tar files

 -c, --compress-level Specifies the compression level

                      (1 through 9, 9 = best compression)

 --backup-name        Specify a friendly name for the

                      current backup

 --parent             Specify parent backup for incremental

                      Backup
For a complete list of BART sub-commands, see Basic BART Subcommand Usage in the EnterpriseDB Backup and Recovery Guide.

Point in Time Recovery

Point in Time Recovery

PostgreSQL und EDB Advanced Server pflegen Write-Ahead-Logs (WALs) im Unterverzeichnis pg_xlog des DATA-Ordners. Das WAL-Protokoll zeichnet jede Änderung an den Datendateien auf.

Um die Wiederherstellung des aktuellen Zustands oder eines bestimmten Zeitpunkts (point in time, PITR) zu unterstützen, muss bei BART die Archivierung auf dem Server der Backup-Datenbank aktiviert sein, und archive_command muss so eingestellt sein, dass die WAL-Dateien an den BARTHOST gesendet werden. Mit dem Befehl BART INIT kann der Anwender das archive_command für den Backup-Datenbankserver automatisch festsetzen. Auf den Datenbankserver wird das archive_command so eingestellt, dass die WAL-Dateien vom Verzeichnis pg_xlog an BARTHOST gesendet werden.

Für Point in Time Recovery muss der Anwender den Zeitpunkt angeben, für den die Daten wiederhergestellt werden sollen. Mit dem BART-Wiederherstellungsbefehl kann der Anwender die folgenden Zeitpunkte für die PITR spezifizieren:

  • Ziel-Zeitstempel (Wiederherstellung des Systems bis zum angegebenen Ziel-Zeitstempel)
  • Ziel-Transaktions-ID (Wiederherstellung des Systems bis zur angegebenen Ziel-Transaktions-ID)
  • Ziel-Zeitleiste (Wiederherstellung des Systems bis zur angegebenen Ziel-Zeitleiste)

Das unten dargestellte Hilfemenü für BART-Wiederherstellung zeigt, dass der Anwender die Schalter -g, -x oder -t angeben kann, um PITR mit einer der oben genannten Optionen durchzuführen.

$ bart restore --help

./bart: backup and recovery tool

Verwendung:

./bart RESTORE [OPTION]...

Optionen:

-h, --help           Diese Hilfenachricht anzeigen und verlassen

-s, --server         Name des wiederherzustellenden Servers

-i, --backupid       ID oder Name der wiederherzustellenden Sicherung

-r, --remote-host    Host on which backup will be restored (in format USER@HOST)

-p, --restore-path   Pfad, in den die Daten wiederhergestellt werden 

-g, --target-timestamp

                     Target timestamp of restore

-x, --target-xid     Ziel-XID der Wiederherstellung

-t, --target-tli     Ziel-Zeitleisten-ID der Wiederherstellung

-c, --copy-wals      WALs in den 'restore-path' kopieren (anstelle des Streams)

Um den Zweck von PITR zu erläutern, nehmen Sie einmal an, ein Anwender führt am Sonntag ein vollständiges Backup durch, und am Montagmorgen um 10 Uhr führt er versehentlich eine „drop table“- oder „truncate table“-Anweisung auf einem kritischen Datenbestand aus. Der Anwender möchte den Datenbankserver auf den Zustand zu einem Zeitpunkt vor Montag 10 Uhr wiederherstellen, um die kritischen Daten nicht zu verlieren.

Dafür kann der folgende BART-Wiederherstellungsbefehl verwendet werden:

$ bart -c ~/bart.cfg restore -s ppas-9.5 -i 1473478624481 -p /home/ec2-user/restore/ppas-9.5 -g ‘26-SEP-16 09:30:00’

BART erstellt automatisch die Datei recovery.conf, die für PITR benötigt wird. Eine Beispieldatei recovery.conf wird unten dargestellt:

restore_command = 'cp /home/ec2-user/backup/ppas-9.5/archived_wals/%f %p'

recovery_target_time = '26-SEP-16 09:30:00'

Der BART-Wiederherstellungsprozess stellt die vollständige Sicherung wieder her, geht die WAL-Datei durch und stoppt beim angegebenen Zeitpunkt, der angegebenen Transaktions-ID oder Zeitleiste.

    Inkrementelle Backups

    Inkrementelle Backups

    Backup and Recovery 2.0 has added the most commonly requested feature, block level incremental backup. Block Level Incremental Backup supports the needs of customers with large databases by increasing the speed at which backups can be taken and minimizing the amount of space required.

    Backup and Recovery 2.0 takes advantage of new technology developed in Postgres 9.5 called the XLogReaderAPI. The XLogReaderAPI allows tools like EDB Backup and Recovery to inspect the contents of the WAL file to understand exactly which blocks within the database have changed within a given transaction. 

    As WAL files are continually shipped to the Backup and Recovery server, there is a background process that is always running which scans those files and identifies the location of modified blocks. EDB Backup and Recovery then generates a file we call an MBM to indicate which blocks have changed. When the user is ready to take the incremental backup, Backup and Recovery consolidates all those files and issues a "harvester" process to fetch the modified blocks and write out only data that has changed. This is a much faster and more space efficient alternative to running another base backup to backup the entire database. 

    When we need to restore a database, BAR will restore the base backup first, and then apply the modified blocks to get the system back to an appropriate state.

    Ressourcen