Атоматический бэкап/рестор БД SM Firebird

Базы данных и все, что с ними связано

Модератор: nk_dk

Атоматический бэкап/рестор БД SM Firebird

Сообщение vss_05 05 май 2010, 14:04

Доброго времени суток. Такой вопрос по ежедневному бэкап/рестору базы данных С-маркета БД в данном случае Firebird. Опишу условия работы с Бд. С базой работают круглосуточно, т.е. днем обычная работа магазина, а ночью - локальные ревизии, печать ценников и прочие операции. Пока БД была на Interbase проблем не было gfix & gbak отрабатывали нормально запуск осуществлялся через *.bat-ник в котором были прописаны команды. Сейчас же , Firebird не дает сделать бэкап - так как не может оборвать существующие подключения , точнее сказать не все подключения обрывает. Из всего вышеперечисленного собственно ОЧЕНЬ ВАЖНЫЙ ВОПРОС - Каким образом делать автоматический ежедневный бэкап/рестор базы Firebird (остановить работу с БД, на время бэкап/рестора можно, но это надо сделать без участия человека)??? Хотелось бы получить полный текст выполняемых команд для осуществления данной процедуры. Спасибо
vss_05
 
Сообщения: 2
Зарегистрирован: 05 май 2010, 11:24

Re: Атоматический бэкап/рестор БД SM Firebird

Сообщение Hash 05 май 2010, 14:09

например так:

NET STOP "Firebird Server - DefaultInstance"

xcopy /Y D:\DBASE\SMARKET.FDB E:\BACKUP

NET START "Firebird Server - DefaultInstance"

gfix -mend -USER SYSDBA -PAS 3 SMSERV/3070:D:\DBASE\SMARKET.FDB

rem ЧИСТИМ БАЗУ

gbak -B -V -USER SYSDBA -PAS 3 SMSERV/3070:D:\DBASE\SMARKET.FDB E:\BACKUP\00\SMDK.GBK

rem СКЛАДЫВАЕМ БЕКАП БАЗЫ В Е

gbak -C -R -O -V -USER SYSDBA -PAS 3 E:\BACKUP\00\SMDK.GBK SMSERV/3070:D:\DBASE\SMARKET_R.FDB

rem ВОССТАНАВЛИВАЕМ БАЗУ ПОД ДРУГИМ ИМЕНЕМ

NET STOP "Firebird Server - DefaultInstance"

if exist D:\dbase\SMARKET_r.FDB MOVE d:\dbase\SMARKET.FDB d:\dbase\SMARKET_S.FDB

rename d:\dbase\SMARKET_r.FDB SMARKET.FDB

NET START "Firebird Server - DefaultInstance"

rar a -sfx E:\BACKUP\00\SMDK e:\BACKUP\00\SMDK.GBK

del /Q E:\BACKUP\00\SMDK.GBK
Специалист отдела сопровождения и внедрения ЗАО "НПФ Датакрат-С"
Hash
Модератор
 
Сообщения: 30
Зарегистрирован: 10 мар 2010, 17:19

Re: Атоматический бэкап/рестор БД SM Firebird

Сообщение sergk 05 май 2010, 14:42

Если работает FB Classic Server,

то вначале необходимо перевести базу в shutdown
(это позволит большинству процессов fb_inet_server.exe отвалится самим)
команда:
gfix SMSERVER:d:\base.fdb -shut -force 0 -user sysdba -password 3

затем, немного подождать (мин 3-4) - за это время большинство процессов FB сами "отваляться".
Паузу в батнике можно организовать через пинг.
Н-р,
@ping localhost -w 1000 -n 6 > nul
делает паузу на 5 сек (Параметр - w задает таймаут в миллисекундах, -n - число запросов)

после остановить службу (NET STOP "Firebird Server - DefaultInstance")

выполнить команду
TASKKILL /f /im fb_inet_server.exe
которая "убъет" оставшиеся процессы FB.

И только потом, копировать базу.

По окончании не забыть вернуть базу в online
gfix SMSERVER:d:\base.fdb -online -user sysdba -password 3
Начальник отдела программных разработок ЗАО "НПФ ДатаКрат-С"
sergk
 
Сообщения: 53
Зарегистрирован: 07 апр 2009, 19:38

Re: Атоматический бэкап/рестор БД SM Firebird

Сообщение vss_05 05 май 2010, 15:40

Спасибо . Думаю многим это пригодится. Сегодня буду пробовать.
vss_05
 
Сообщения: 2
Зарегистрирован: 05 май 2010, 11:24

Re: Атоматический бэкап/рестор БД SM Firebird

Сообщение Roman 07 май 2010, 14:15

Подскажите, может я чего то не понимаю. Разве gback не берёт состояние базы за текущий момент? Вообще бэкап может делаться и делается на лету gback-ом. По крайней мере я проверял базы после этого, они были без ошибок.
Вот gfix действительно не стоит запускать на лету, а gback то почему нет. Главное сборку мусора не включать
Roman
 
Сообщения: 45
Зарегистрирован: 07 авг 2009, 15:12

Re: Атоматический бэкап/рестор БД SM Firebird

Сообщение sergk 07 май 2010, 16:18

Да, gback делает снимок базы, и может выполняться на лету.
Но, когда базы вырастают, эта процедура делается долго. Кроме этого, при необходимости быстрого "восстановления"
намного проще и, главное, быстрее выполнить копирование файла БД, чем делать restore.
Опять же, если копирование делается только файловое, периодически backup|restore стоит проводить "для профилактики".
Также, лучше проводить и sweep каждую ночь (или через раз), если у вас отключен Sweep Interval.
Начальник отдела программных разработок ЗАО "НПФ ДатаКрат-С"
sergk
 
Сообщения: 53
Зарегистрирован: 07 апр 2009, 19:38


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron