Как улучшить скрипт резервного копирования базы данных PostgreSQL - используется с crontab

329
zer0mode

Есть около 15 баз данных для резервного копирования на ежедневной основе. Пароль установлен для пользователя postgres .

pg_dumpallвыполняется в начале скрипта для полного резервного копирования. pg_dumpзапускается в том же сценарии для конкретных баз данных в цикле for .

Поскольку скрипт будет использоваться повторно с использованием crontab, во время выполнения этих команд в качестве дополнительного параметра должна быть передана парольная фраза.

Текущее решение использует ( * ) с 0600, принадлежащим postgres ..pgpasschmod

Там, где требуется пароль, каждая команда состоит из:

PGPASSFILE=/path/to/.pgpass <command> <arguments pipes> 

Например :
PGPASSFILE=/path/to/.pgpass psql -tl | cut -d '|' -f1 | grep 'dbwildcard'

К той же строке PGPASSFILE добавляется префикс pg_dumpи pg_dumpallкоманды.

  • Можно ли сделать это лучше, изящнее, короче?
    Передача PGPASSFILE=/path/to/.pgpassстроки в переменную нарушает команду.
  • Как насчет безопасности? Является ли .pgpassлучше или хуже от pg_hba.confнастройки файла:

    местное все доверие postgres

    Там всегда лучший вариант.

  • Последнее, что, кажется, вакуумный db не работает с PGPASSFILE. Как обойти аргумент пароля в этом случае?

(*) https://www.postgresql.org/docs/current/static/libpq-pgpass.html
https://www.postgresql.org/docs/current/static/app-pg-dumpall.html

0

0 ответов на вопрос

Похожие вопросы