Назад | Перейти на главную страницу

Проверить дату pg_dump

На паре серверов мы используем pg_dumpall для создания резервных копий наших баз данных. Мне просто интересно, есть ли простой способ проверить, в порядке ли созданный файл, и проверить дату его создания (из фактического файла, а не проверять дату его создания в fs).

Сэкономит много усилий при тестировании / проверке наших резервных копий.

Если статус выхода команды pg_dumpall равен нулю, созданный файл в порядке.

При использовании pg_dumpall невозможно узнать точную метку времени создания резервной копии, потому что она создает вывод в виде простого текстового файла.

Но дампы сделаны в нестандартном формате (pg_dump -F c) есть дополнительные метаданные.

Итак, вот базовый сценарий, который я обычно рекомендую для резервного копирования кластера PostgreSQL:

#!/bin/sh
pg_dumpall -g > pg-globals.sql # for global stuff like usernames/passwords
for db in db1 db2 db3; do
  pg_dump -F c $db > pg-$db.backup # separate file for every database in the cluster
done

Таким образом, у вас будет отдельный файл для каждой базы данных. Каждый из них можно проверить с помощью pg_restore чтобы увидеть фактическую дату и время создания, а также другую информацию:

filip@srv:~$ pg_restore -l pg-inspire.backup |head -n 15
;
; Archive created at Thu Dec  1 07:28:27 2011
;     dbname: inspire
;     TOC Entries: 714
;     Compression: -1
;     Dump Version: 1.12-0
;     Format: CUSTOM
;     Integer: 4 bytes
;     Offset: 8 bytes
;     Dumped from database version: 9.0.5
;     Dumped by pg_dump version: 9.0.5
;
;
; Selected TOC Entries:
;

Я настоятельно рекомендую прочитать это:

В дополнение к тому, что написал @filiprem - один из способов проверить, когда был создан файл pg_dumpall, - это вставить дату / время в имя файла.