На паре серверов мы используем 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, - это вставить дату / время в имя файла.