Кто чем пользуется для автоматизации Backup? (-)

Администирование клиентской и серверной части InterBase, Firebird, Yaffil. Настройка файла конфигурации и т.п.

Модераторы: kdv, Alexey Kovyazin

Ответить
Georgi-47
Сообщения: 51
Зарегистрирован: 01 ноя 2004, 10:21

Кто чем пользуется для автоматизации Backup? (-)

Сообщение Georgi-47 » 30 дек 2004, 11:33

Кто какими программами пользуется для автоматизации Backup?
Особенно интересно, когда не один сервер и не одна база.
Мы - старинным BackupSheduler'ом. Несмотря на почтенный возраст, имхо, самая удобная из имеющихся. Но не хватает функциональности.

Лысый
Сообщения: 177
Зарегистрирован: 08 ноя 2004, 08:20

Сообщение Лысый » 30 дек 2004, 12:31

Тут говорили.
Я пользуюсь шедулером ос, запускающим самописный скрипт..

Georgi-47
Сообщения: 51
Зарегистрирован: 01 ноя 2004, 10:21

Сообщение Georgi-47 » 13 янв 2005, 10:18

Лысый писал(а):Тут говорили.
"Там" я был. И еще много чего видел, автоматизаторов бэкапа гораздо больше, на самом деле, и попадаются очень симпатишные, но, все равно, обязательно чего-то не хватает. Прямо хоть самим делать...

Мне интересно именно чем народ реально пользуется. А такое ощущение складывается, что народ вообще бэкап не делает или вручную запускает.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 13 янв 2005, 10:58

да обычными батниками делают. чего такого тебе не хватает в шедулерах?

когда не один сервер и не одна база, решать все через один шедулер - смертоубийство. я считаю что для каждой базы бэкапы надо делать отдельными bat/cmd, а при их логической взаимосвязи уже это дело объединять в "пакеты", но очень осторожно.
Если же там все сильно взаимосвязано, то опять же идея шедулера не катит, потому что необходимо выполнять массу операций в четко определенной последовательности. Что проще сделать руками (и документировать), чем пытаться все это зарядить через мифический универсальный шедулер :)

Georgi-47
Сообщения: 51
Зарегистрирован: 01 ноя 2004, 10:21

Сообщение Georgi-47 » 19 янв 2005, 09:23

kdv писал(а):да обычными батниками делают. чего такого тебе не хватает в шедулерах?

когда не один сервер и не одна база, решать все через один шедулер - смертоубийство. я считаю что для каждой базы бэкапы надо делать отдельными bat/cmd, а при их логической взаимосвязи уже это дело объединять в "пакеты", но очень осторожно.
Смертоубийство? Почему? Почему для каждой базы отдельными батниками?

А в шедулерах мне не хватает такого, чтобы можно раз настроить (несложно, а не писанием батников и вспоминанием заклинаний-ключей командной строки) и забыть, а в случае проблем чтобы шедулер мне сказал об этом. Разве это из ряда вон выходящие требования?
Сейчас же в лучшем случае надо просматривать ежедневные почтовые сообщения, при наличии еще дополнительно мелких или не очень проблем. Большинству же шедулеров требуется ежедневный надзор - за местом на диске, за результатом бэкапа и т.д. Неужели больше нечем себе голову морочить?

Надо сказать, что при невероятном количестве существующих программ на все случаи жизни (это я уже не только про шедулеры бэкапа) сплошь и рядом нет программы, решающей полностью и хорошо какую-то проблему. Пример из Интербэйза - управление грантами. Я же в 99ом сам прогу писал. Сколько этих программ сейчас, в каждом универсальном интербэйзовском средстве это есть, но пользуешься и чертыхаешься периодически. Из остальной жизни пример - одним нажатием отсканировать и отправить мылом документ. Казалось бы - едва ли не к каждому сканеру такая прога прилагается. Но неудобно!!! Формат не тот, вопросы дурацкие ненужные задаются...

То, что я насобирал про шедулеры, какие есть и что умеют, стоит прислать для сайта ibase? Тогда выберу время - причешу и пришлю.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 19 янв 2005, 09:44

ну, в командной строке gbak было бы чего вспоминать. всего то 3 ключа. Насчет остального - нет в жизни счастья... :) а что насобирал - пиши конечно, может, ТЗ оформим...

DSKalugin
Сообщения: 212
Зарегистрирован: 27 окт 2004, 13:39

Выкладываю свой *.cmd

Сообщение DSKalugin » 10 фев 2005, 19:14

Выкладываю свой *.cmd. На виндовском сервере он выполняется по расписаию, ночью каждую неделю. Вызывается обычным системным планировщиком.
Когда я сидел под линуксом аналогичный *.sh скрипт запускался cron-ом

Код: Выделить всё

net send admin "Starting Backup DataBase"

"C:\Program Files\Firebird\Firebird_1_5\bin\gfix.exe" -shut -force 0 C:\ShopDB\isautostar.fdb -user "DSKALUGIN" -password "IBExpert"

net stop "Firebird Server - DefaultInstance"

del E:\Builder\cp_isautostar.fdb

copy C:\ShopDB\isautostar.fdb E:\Builder\cp_isautostar.fdb

net send admin "copying - ok"

net start "Firebird Server - DefaultInstance"
net start "Firebird Guardian - DefaultInstance"

"C:\Program Files\Firebird\Firebird_1_5\bin\gbak.exe" -B -L -T -user "DSKALUGIN" -password "IBExpert" C:\ShopDB\isautostar.fdb E:\Builder\bck_isautostar.gbk

net send admin "backup - ok"

"C:\Program Files\Firebird\Firebird_1_5\bin\gbak.exe" -R -P 4096 -user "DSKALUGIN" -password "IBExpert" E:\Builder\bck_isautostar.gbk C:\ShopDB\isautostar.fdb

"C:\Program Files\Firebird\Firebird_1_5\bin\gfix.exe" -online C:\ShopDB\isautostar.fdb -user "DSKALUGIN" -password "IBExpert"
net send admin "restore - ok"
Аналогично ежедневно ночью просто делается бэкап и копия в мой домашний каталог. Только в скрипте вместо восстановления стоит сборка мусора и архивация

Код: Выделить всё

"C:\Program Files\Firebird\Firebird_1_5\bin\gfix.exe" -sweep C:\ShopDB\isautostar.fdb -user "DSKALUGIN" -password "IBExpert"

net send * "sweep - ok"

"C:\Program Files\WinRAR\WinRAR.exe" A -o+ -tl -ep -ep1 -m3 E:\Builder\cp_isautostar.rar E:\Builder\cp_isautostar.fdb
(с)DSKalugin

DSKalugin
Сообщения: 212
Зарегистрирован: 27 окт 2004, 13:39

Моя программа для хранения копий БД за неделю

Сообщение DSKalugin » 10 фев 2005, 19:18

Утром я прихожу на работу, включаю свой комп. А из автозагрузки стартует моя программа. Которая забирает ежедневные архивы, подписывает соответственно дням недели и складываем мне в локальную папку. Таким образом получается архив копий БД за всю неделю

Код: Выделить всё

program DBRouter;  {$IOCHECKS OFF}

uses  Windows, SysUtils, ShellApi; {$R *.res}

const dest='C:\DBRestore\';  //Куда складывать архивы
      srcDB='R:\copy_U96.rar'; //откедава брать файлы
      RusDayOfWeek: array [1..7] of string[11]=('Воскресенье','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота');
type
  TLogRec = record
    Week: Char;
    CopyDate: string[15];
    Status: string[5];
  end;

var pref:char;
    OK:Boolean;
    LogFile: file of TLogRec;
    LogRec : TLogRec;
    destDB:AnsiString;

function ProgressCopyFile(const AFromDirectory, AToDirectory: AnsiString):Boolean;
var
  SHFileOpStruct: TSHFileOpStruct;
  FromDir: PChar;
  ToDir: PChar;
begin
  GetMem(FromDir, Length(AFromDirectory)+2);
  try
    GetMem(ToDir, Length(AToDirectory)+2);
    try

      FillChar(FromDir^, Length(AFromDirectory)+2, 0);
      FillChar(ToDir^, Length(AToDirectory)+2, 0);

      StrCopy(FromDir, PChar(AFromDirectory));
      StrCopy(ToDir, PChar(AToDirectory));

      with SHFileOpStruct do
      begin
        Wnd    := 0;
        wFunc  := FO_COPY;
        pFrom  := FromDir;
        pTo    := ToDir;
        fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
        fAnyOperationsAborted := True;
        hNameMappings := nil;
        lpszProgressTitle := nil;
        Result:=(SHFileOperation(SHFileOpStruct)=0) ;
      end;
    finally
      FreeMem(ToDir, Length(AToDirectory)+2);
    end;
  finally
    FreeMem(FromDir, Length(AFromDirectory)+2);
  end;
end;

begin
  AssignFile(LogFile,dest+'GDBRoute.log'); // Log-файл
  //Была-ли уже сегодня копия
  Reset(LogFile);
  Read(LogFile, LogRec);
  CloseFile(LogFile);
  //№ дня недели. В англ ОС неделя начинается с воскресенья
  pref:=IntToStr(DayOfWeek(Date))[1];
  //если уже сегодня копировалось и нормально, то - нахер!
  if (pref=LogRec.Week)and(LogRec.Status='OK   ') then Exit;
 
  destDB:=dest+RusDayOfWeek[DayOfWeek(Date)]+'.rar';
  DeleteFile(destDB);
  DeleteFile('C:\DBRestore\isa.rar');
  OK:=ProgressCopyFile('R:\cp_isautostar.rar','C:\DBRestore\isa.rar');
  OK:=OK and ProgressCopyFile(srcDB,destDB);

  LogRec.Week:=pref;
  LogRec.CopyDate:='  '+DateToStr(Date);
  if OK then LogRec.Status:='OK   ' else LogRec.Status:='Error';

  Rewrite(LogFile);
  Write(LogFile, LogRec);
  CloseFile(LogFile);
  //Писькает, коли глюкануло (тока на WinNT)
  if not OK then begin
    Windows.Beep(1024,3000);
    MessageBox(0,'Ошибка при закачке резервных копий','Резервирование БД',MB_ICONERROR)
  end;
end.
Дарю, пользуйтесь все кому не лень :-)
(с) DSKalugin

Ответить