Автоматическое резервное копирование баз PostgreSQL и восстановление из резервной копии
Всем привет сегодня расскажу о том как настраивается автоматическое резервное копирование баз PostgreSQL и восстановление из резервной копии. Может быть кому то эта информация пригодится.
Команды для работы с БД
Для создания резервной копии баз данных необходимо выполнить такую команду:
Для автоматизации создания резервных копий баз данных можно (читаем нужно) написать простенький скрипт и засунуть его в cron. Например имеется база данных "sales", и надо ежедневно делать копию этой базы. Пишем следующие строки: #!/bin/sh pg_dump -h localhost -U postgres -Fc -Z9 -c -f /home/user/1c-data-backup/"`date +%d-%m-%Y`".sales.backup sales
Сохраняем его в /home/user/createbackup, даём право на выполнение:
chmod 711 /home/user/createbackup
Добавляем задание в cron, открываем cron командой crontab -e и добавляем эту строку:
0 23 * * * /home/user/createbackup
Эта строкой мы скажем выполнять резервное копирование каждый день в 23.00.
Для разрешения выполнения дампа базы данных надо разрешить localhost (127.0.0.1) обращаться к себе без паролей отредактировав файл /var/lib/pgsql/data/pg_hba.conf и добавив после # IPv4 local connections: строку:
host all all 127.0.0.1/32 trust
Сохраняем файл, перезапускаем сервер PostgreSQL. И ждём 23.00 часов дня когда вы добавили задание в cron. Пользователь от имени которого выполняются задания в cron'е должен иметь право на запись туда куда вы хотите сохранять резервные копии!
Восстановление баз из их копий не требуется выполнять ежедневно, поэтому можно и ручками попечатать немного (или скопировать).
На официальном сайте СУБД приведено описание всех параметров для обоих утилит:
Вроде все сделано по этой инструкции, но файл базы пустой создаётся. В логе постгрес пишет: «could not receive data from client: Connection reset by peer»
Помогло
Вроде все сделано по этой инструкции, но файл базы пустой создаётся. В логе постгрес пишет: «could not receive data from client: Connection reset by peer»