Автоматичний бекап PostgreSQL в Linux
Про те як робити автоматичні резервні копії в 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 / - це шлях до директорії з файлом?
Тепер чекаємо 3:15 ранку і перевіряємо працездатність.
А чому б не зробити по-елегантніше, без «засвітки» пароля, наприклад так:
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, я бачу кілька варіантів:
- Взяти скрипти з пакета backup-manager (apt-get install backup-manager) і або запозичити звідти код відправки файлів на FTP, або використовувати Скрітпи з пакета для цієї мети, тільки врахуй, що пакет вже давно не підтримується, проте, стабільно працює.
- Використовувати замість FTP SSH, що простіше (потрібно додати в існуючий скрипт тільки один рядок scp) і надійніше.
Не думаю, що для когось відкрив америку, але ось ще один варіант для створення резервних копій. Через утиліту barman
Дякуємо. Все працює. Клас.