Vous êtes libres de redistribuer et/ou modifier cette création selon les conditions suivantes :
Paternité
Pas d'utilisation commerciale
Partage des conditions initiales à l'identique
RPO (Recovery Point Objective)
RTO (Recovery Time Objective)
pg_dump extrait le contenu d'une base en texte (SQL) ou binairepg_dumpall extrait une instance en totalité au format textepsql exécute le SQL des dumps au format textepg_restore restaure un dump binaire dans une base| Format | Dump | Restore | 
|---|---|---|
| plain (ou SQL) | 
 | 
 | 
| tar | 
 | 
 | 
| custom | 
 | 
 | 
| directory | 
 | 
 | 
plain (SQL)directory (9.3+)pg_dumpallpg_dumpall=> il faut combiner pg_dump et pg_dumpall pour avoir la sauvegarde la plus flexible.
FSM et VM des tables à la restauration-h / $PGHOST / socket Unix-p / $PGPORT / 5432-U / $PGUSER / utilisateur du système-d / $PGDATABASE / utilisateur de connexion$PGPASSWORD.pgpasspg_hba.conf-d ou en fin de commande-F (p, t, c, d)-f chemin, sortie standard sinon-a, -s, -n, -N, -t, -T, -O, -x, --section-Z 0-9directory, 9.3+) : -j jobs-g-r-t-a, -s, -O, -xplain)-f permet de spécifier l'emplacement du fichier dump-1 permet d'exécuter la restauration en une transaction
-v ON_ERROR_ROLLBACK=ON : faire un rollback en cas d'erreur et continuer la restauration-v ON_ERROR_STOP=ON : arrêter l'exécution à la première erreur (rollback complet)-f indique un fichier de sortie
-F (t, c, d), détecté automatiquement-a, -I, -n, -O, -P, -s, -t, -T, -x, --section-1-d indique la base de données de connexion-C (créer la base de données cible)
pg_restore se connecte (-d) et exécute CREATE DATABASEpg_restore se connecte à la nouvelle base et exécute le SQL-C
-d) et exécute le SQL-d
pg_restore affiche le SQL (permet de débugger)-l-L liste.txtrecoveryrecovery permet le PITRpostgresql.conf :
wal_level : replica ou logicalarchive_mode : on ou alwaysarchive_command : texte de la commandearchive_timeout : temps en secondeswal_level et archive_mode ont changé, recharger sinonSELECT pg_start_backup('label', true);SELECT pg_stop_backup();$PGDATA/pg_tblspc si nécessaire)$PGDATA/pg_wal (on restaurera les WAL archivés)postmaster.pid et postmaster.opts$PGDATA/recovery.conf :
restore_commandrecovery_target_* parametersrecovery, la timeline change
.history, archivérecovery_target_timeline permet de choisir la timeline à suivre
postgresql.conf
portlisten_addressesdata_directorypg_hba.confpg_dumpall -g : définition des rôles et des tablespacespg_dump : contenu de chaque base de donnéespg_start_backup() et pg_stop_backup()
pg_start_backup() de terminer avant de démarrer la sauvegardepg_stop_backup() de terminer avant de déclarer la sauvegarde valide.backup
pg_restore détecter le format des dump binairesbackup_label archivé pour obtenir le STOP TIME du backuprestore_command dans $PGDATA/recovery.conf
plain
tar
recovery.conf
pgespresso
gzip, bzip2, pigz, pbzip2, etc..barmanusage: barman [-h] [-v] [-c CONFIG] [-q] [-d] [-f {console}]
              {cron,list-server,show-server,status,check,diagnose,
              backup,list-backup,how-backup,list-files,recover,
              delete,rebuild-xlogdb}
[...]
optional arguments:
  -h, --help     show this help message and exit
  -v, --version  show program's version number and exit
  -c CONFIG, --config CONFIG
                 uses a configuration file (...)
  -q, --quiet    be quiet (default: False)
  -d, --debug    debug output (default: False)
  -f {console}, --format {console}
                 output format (default: console)/etc/barman.confINI[barman]configuration_files_directory = /etc/barman.dbarmanpostgres pour les serveurs PostgreSQLbarman pour le serveur de sauvegardespostgres (serveurs PG) et barman (serveur barman)postgresql.conf :wal_level = 'replica'
archive_mode = on
archive_command = 'rsync -a %p barman@bkpsrv:<INCOMING_WALS_DIR>/%f'barman.conf[barman]
barman_home = /var/lib/barman
barman_user = barman
log_file = /var/log/barman/barman.log
log_level = INFO
configuration_files_directory = /etc/barman.dcompression = gzip
reuse_backup = link
immediate_checkpoint = false
basebackup_retry_times = 0
basebackup_retry_sleep = 30
backup_options = exclusive_backupbandwidth_limit = 4000
network_compression = falseminimum_redundancy = 5
retention_policy = RECOVERY WINDOW OF 7 DAYS
last_backup_maximum_age = 2 DAYSpre_backup_script = ...
post_backup_script = ...
pre_archive_script = ...
post_archive_script = ...configuration_files_directory
[pgsrv]
description = "PostgreSQL Instance pgsrv"
ssh_command = ssh postgres@pgsrv
conninfo = host=pgsrv user=postgres dbname=postgres
backup_directory =
basebackup_directory =
wals_directory =
incoming_wals_directory =show-server montre la configuration$ sudo -u barman barman show-server {<instance> | all}check effectue des tests pour la valider$ sudo -u barman barman check {<instance> | all}status affiche des informations détaillées
$ sudo -u barman barman status {<instance> | all}diagnose renvoie
statusjson$ sudo -u barman barman diagnose$ sudo -u barman barman backup {<instance> | all}$ sudo -u barman barman list-backup {<instance> | all}show-backup affiche le détail d'une sauvegarde (taille...)$ sudo -u barman barman show-backup <instance> <ID-sauvegarde>list-files affiche le détail des fichiers d'une sauvegarde$ sudo -u barman barman list-files <instance> <ID-sauvegarde>$ sudo -u barman barman delete <instance> <ID-sauvegarde>cron déclenche la maintenance
$ sudo -u barman barman croncrontab Linuxrecovery.conf$ sudo -u barman barman recover                   \
    --remote-ssh-command "ssh postgres@pgsrv"     \
    --target-time "2015-09-02 14:15:00"           \
    pgsrv 20150902T095027 /var/lib/pgsql/9.4/main
rsync/sshrsync + lien matériel)usage: pitrery [options] action [args]
options:
    -c file      Path to the configuration file
    -n           Show the command instead of executing it
    -V           Display the version and exit
    -?           Print help
actions:
    list
    backup
    restore
    purgepostgresql.confarchive_mode = on
wal_level = replica
archive_command = '/usr/local/bin/archive_xlog %p'postgres sur chacun des serveurs (nœud PG et serveur de sauvegarde)/usr/local/etc/pitrery/pitr.confPGPSQL="psql"
PGUSER="postgres"
PGPORT=5432
PGHOST="/var/run/postgresql"
PGDATABASE="postgres"PGDATA="/var/lib/pgsql/9.4/data"
PGXLOG=BACKUP_DIR="/var/lib/pitrery"ARCHIVE_DIR="$BACKUP_DIR/archived_xlog"STORAGEtar : sauvegarde complète, éventuellement compresséersync : sauvegarde complète ou différentielle, pas de compressionPURGE_KEEP_COUNT=3PURGE_OLDER_THAN=7ARCHIVE_LOCAL="no"
ARCHIVE_HOST=bkpsrv
ARCHIVE_USER=pitrery
ARCHIVE_COMPRESS="yes"archive_xlogarchive_xlogtarCOMPRESS_BIN=
COMPRESS_SUFFIX=
UNCOMPRESS_BIN=
BACKUP_COMPRESS_BIN=
BACKUP_COMPRESS_SUFFIX=
BACKUP_UNCOMPRESS_BIN=LOG_TIMESTAMP="yes"archive_xlog)SYSLOG="no"
SYSLOG_FACILITY="local0"
SYSLOG_IDENT="postgres"PRE_BACKUP_COMMAND=
POST_BACKUP_COMMAND=$ sudo -u postgres /usr/local/bin/pitrery backup-s permet de spécifier un mode, tar ou rsync$ sudo -u postgres /usr/local/bin/pitrery purge$ sudo -u postgres /usr/local/bin/pitrery list-v permet d'avoir plus de détails
cron00 00 * * * (   /usr/local/bin/pitrery backup                  \
             && /usr/local/bin/pitrery purge)                  \
  >> /var/log/postgresql/pitrery-$(date +\%Y-\%m-\%d).log 2>&1$ sudo -u postgres /usr/local/bin/pitrery restore-D permet de modifier la cible du PGDATA-t permet de modifier la cible d'un tablespace-x permet de modifier la cible du pg_wal-d permet de spécifier une date de restaurationrecovery.confrecovery.confpg_walpg_resetwalfsyncfull_page_write--data-checksums de initdbREINDEX)zero_damaged_pages peut aiderpg_relation_filepath()ctid / pageinspectddpg_walpg_resetwal permet de forcer le démarrageglobal/pg_controlpg_xact