Поиск по блогу

понедельник, 8 августа 2011 г.

Бекапы БД PostgreSQL с помощью cron

Проблема запуска cron с повременным бекапированием PostgreSQL от пользователя postgres без ввода пароля. Ведь именно postgres может запустить нужный нам pg_dump и выполнить его.
Решение найдено следующее:
1) создаем скрипт бекапа базы данных и с правами обычного юзера (примеры скриптов есть в интернете, а можно самим написать);

При написании скрипта в команде pg_dump указывать от какого пользователя запускать, например pg_dump -U postgres, а то .pgpass все равно будет проигнорен.

2) создаем в папке ~/ файлик .pgpass

.pgpass хранит пароль postgres, и при обращении к базе либо ищется пользователь и пароль в данном файле либо в системных переменных типа PG_USER, PG_PASSWORD. Если есть установленные системные переменные, файл .pgpass игнорируется.

Формат файла: hostname:port:database:username:password

3) chmod 0600 ~/.pgpass - именно такие права должны быть у этого файла.

Теперь скрипт должен работать как надо.

Источники: документация к PostgreSQL.

Комментариев нет:

Отправить комментарий