IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> Автоматический Backup Базы(windows)
Стреляный-Тарани...
сообщение 19.12.2014, 13:22
Сообщение #1


Прапорщик
**

Группа: Спецрешения
Сообщений: 10
Регистрация: 19.9.2007
Пользователь №: 425



Хочу поделится тем, как я решил вопрос с автоматическим сохранением базы postgres.
Есть несколько способов сохранение базы, в том числе пакетный в PgAdmin с помощью расширения pgagent. В этой теме я расскажу об использовании обычного bat файла.
В bat файле(во вложении) находится набор команд для бекапа через стандартную ф-ию postgres pg_dump. Чтобы начать плановое резервное копирование необходимо:

1. Настроить параметры в bat файле

Для сохранения данных
Код
SET PGBIN=E:\PostgreSQL\8.4\bin - путь установки Postgresql, каталог bin
SET PGDATABASE=TestDB - имя базы, которую необходимо сохранять
SET PGHOST=localhost - сервер postgres(если бекап выполняется на той-же машине где установлен сервер postgres, то значение так и останется localhost)
SET PGPORT=5432 - порт сервера postgres
SET PGUSER=user - пользователь БД
SET PGPASSWORD=password - пароль пользователя БД


Для удаление старых копий

Код
forfiles -pE:\Ivan\jParus\TestBCKUP\Backup -m*.backup -c"cmd /c del /Q @PATH"  -d-14


-p Путь к папке Backup, которую данный bat файл создает в том каталоге, откуда запускается
-m Маска файлов для удаления
-c Команда непосредственно для удаление файлов
-d Количество прошедших дней для удаление файлов. В данном примере будут удалены файлы старше 14 дней

Для удаления старых копий таким образом необходимо убедиться в наличии утилиты forfiles.exe в каталоге %WINDOWS%/system32/. Данную утилиту я также прикрепил в теме. Данный синтаксис работает под winXP/Server2003. Для работы под win7/Server2008 скорее всего будет необходимо по-другому написать параметры - вместо -p написать /P и т.д.

2. Сделать так, чтобы bat файл запускался по расписанию

Для этого можно использовать какие-либо стороннее ПО либо стандартный функционал Windows - "Назначенные задания". Детально описывать этот шаг, я думаю, не имеет смысла, поэтому хочу остановиться лишь на одном моменте. Если назначить запускать наш bat файл как задание в таком виде как он есть, то у пользователя компьютера в назначенное время будет открываться окно командной строки, всплывающее поверх всех окон. Если это происходит на сервере, то никаких проблем нет. Но согласитесь, если сохранение выполняется на рабочей станцией, на которой постоянно работает пользователь, это не очень удобно для него, и плюс он может быть даже не в курсе что это такое и просто закрыть окно. Из этой ситуации можно выйти таким способом:

1. Создать текстовый файл с содержанием:
Код
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "путь к нашему bat файлу", 0, false

2. Сохранить файл с расширением *.vbs
3. Поместить его в задания вместо bat файла

С данным скриптом сохранение будет выполняться в фоновом режиме. Его будет видно только в Диспетчере задач.

3. Радоваться что всё получилось






Прикрепленные файлы
Прикрепленный файл  pgbackup.rar ( 879 байт ) Кол-во скачиваний: 1
Прикрепленный файл  Test.rar ( 180 байт ) Кол-во скачиваний: 2
Прикрепленный файл  forfiles.rar ( 4.83 килобайт ) Кол-во скачиваний: 0
 
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 19.6.2019, 9:30
Написать письмо администратору форума