О том как делать автоматические резервные копии в PostgreSQL рассказано в статье Automated Backup on Linux. Скрипты из этой статьи всем хороши, кроме того, что если их прописать в cron, то ничего бэкапиться не будет. А происходит так из-за того, что нигде не указывается пароль пользователя PostgreSQL от имени которого делается бэкап.
Для того чтобы эти скрипты заработали в автоматическом режиме нужно в самый конец pg_backup.config добавить:
# Set PGUSER and PGPASSWORD
PGUSER="postgres"
PGPASSWORD="password"
export PGUSER PGPASSWORD
# End
Естественно, вместо пользователя postgres можно использовать любого нужного пользователя, а вместо password нужно указать пароль этого пользователя.
А в целях безопасности в самом конце pg_backup.sh нужно вставить:
# Unset PGUSER and PGPASSWORD
PGUSER=""
PGPASSWORD=""
export PGUSER PGPASSWORD
# End
Теперь можно сделать файлы исполняемыми:
chmod u+x pg_backup.sh pg_backup_rotated.sh
(для проверки работоспособности нужно выполнить bash pg_backup.sh)
Прописать их в cron пользователя postgres (на примере Ubuntu):
sudo crontab -u postgres -e
В файл нужно добавить строки:
SHELL=/bin/bash
15 3 * * * /path/to/script/pg_backup.sh > /dev/null 2>&1
Надо напоминать, что /path/to/script/ — это путь к директории с файлом?
Теперь ждём 03:15 утра и проверяем работоспособность.
Резервная копия статьи Automated Backup on Linux с уже вставленными кусками кода.
А почему бы не сделать по-элегантнее, без «засветки» пароля, например так:
1. Определим user map для root. Для этого добавим в файл $PGDATA/pg_ident.conf строчку :
root root postgres
2. Добавим этот user map в соответствующую запись в файле $PGDATA/pg_hba.conf (приписать опцию map=root в соответсвующую строку идентификации), например:
local all postgres peer map=root
3. Рестарт Postgres:
service postgresql-9.3 restart
После этого, все клиенты (тот же psql ), запускаемые под акком root , будут коннектиться к PostgresQL как postgres . Все должно запахать, и нигде никаких паролей указывать не надо.
Не нравится вам root – тоже самое можно проделать для любого системного акка, под которым вы хотите запускать бэкап скрипт.
Роман, спасибо за красивое решение! Постараюсь опробовать его и отписаться о том что получилось.
А не сделал я так из-за того, что я по роду деятельности не системный администратор и многого ещё не знаю — я только учусь (с) 🙂
Здравствуйте.
Ребят, подскажите пожалуйста, как настроить все то же самое, только с выгрузкой backup-а на сторонний FTP сервер, а не локально на машину.
Или проще выгрузить dump локально и через отдельный скрипт загружать его на FTP?
Rolex, я вижу несколько вариантов:
Не думаю, что для кого-то открыл америку, но вот еще один вариант для создания бэкапов. Через утилиту barman
Спасибо. Все работает. Класс.