Автоматическое резервное копирование баз PostgreSQL и восстановление из резервной копии

Обновлено 17.08.2016

Автоматическое резервное копирование баз PostgreSQL и восстановление из резервной копии

Автоматическое резервное копирование баз PostgreSQL и восстановление из резервной копии

Всем привет сегодня расскажу о том как настраивается автоматическое резервное копирование баз PostgreSQL и восстановление из резервной копии.  Может быть кому то эта информация пригодится.

Команды для работы с БД

Для создания резервной копии баз данных необходимо выполнить такую команду:

pg_dump -h localhost -U postgres -Fc -Z9 -c -f full_path_to_database_backup_file database_name

А для восстановления из резервной копии выполнить такую:

pg_restore -h localhost -U postgres -c -d database_name -v full_path_to_database_backup_file

Для автоматизации создания резервных копий баз данных можно (читаем нужно) написать простенький скрипт и засунуть его в 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'е должен иметь право на запись туда куда вы хотите сохранять резервные копии!
 
Восстановление баз из их копий не требуется выполнять ежедневно, поэтому можно и ручками попечатать немного (или скопировать).

На официальном сайте СУБД приведено описание всех параметров для обоих утилит:

pg_dump - http://www.postgresql.org/docs/8.4/static/app-pgdump.html

pg_restore - http://www.postgresql.org/docs/8.4/static/app-pgrestore.html

Всё это нужно для резервного копирования информационных баз 1С 8.2.13.202 под управления ОС Debian 5.0.6 x86_64

Материал сайта pyatilistnik.org

Автор - Сёмин Иван

2 Responses to Автоматическое резервное копирование баз PostgreSQL и восстановление из резервной копии

  1. RobertEmoks:

    Помогло

  2. buster:

    Вроде все сделано по этой инструкции, но файл базы пустой создаётся. В логе постгрес пишет: «could not receive data from client: Connection reset by peer»

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *