Обсуждение:Пример резервного копирования баз данных без использования дорогостоящих аппаратных средств или специализированного ПО

0 (0)
  • Развернуть Обсуждение:Пример резервного копирования баз данных без использования дорогостоящих аппаратных средств или специализированного ПО ( Обсуждение примера  31.07.2002 18:54 )
    5(1)
    Высылаю свою наработку, которая многим может быть полезна, т.к. зачастую администраторы обходятся минимумом аппаратных средств, а некоторые не заботятся о приобретении средств резервного копирования. Собственно макрос этот запускает arj, который ежедневно (по команде Windows at) пакует базу данных и кладет ее на второй сервер. Проблема бы яйца выеденного не стоила, если бы arj мог бы задавать префикс создаваемого архива текущей датой. По-моему, это может делать только zip for unix.
    Архиватор запускается (как и архивы создаются), ессесно, на другом компьютере, следуя одной из аксиом о резервном копировании. В моем случае он запускается на WinNT-сервере, который же является и AppServer''''ом. На нем расположены каталоги ..\obj, ..\mac, ..\dialog. Каталоги ..\Dbfile и ..\txtfile лежат на сервере Novell. Процесс простой: RSL высчитывает системную дату, оборачивает ее в формат yyyymmdd (что бы потом нужный день легче было искать) запускает из-под себя arj...... вот собственно и все..... на выходе получаем полностью упакованный ..\Dbfile например, в виде 20020731.arj
    Просто, ясно и дешево; облегчает жизнь. К тому же при падении первого сервера позволяет поднять систему на втором (напомню ..\obj, ..\mac и ..\dialog там уже есть) буквально за 10 минут.

    Посмотреть пример
    >> Ответить
    • Развернуть Об архивировании открытых файлов ( Головин Леонид  31.07.2002 19:24 )
      0(0)
      Стоит обратить внимание, что пользоваться таким вариантом "резервного копирования" может быть "чревато боком".

      Да, ARJ умеет упаковывать открытые файлы. И это хорошо. Но! Если архиватор будет работать по базе данных, в которой выполняются операции, то распакованная база данных будет с высокой вероятностью иметь нарушения логической целостности. И это плохо.

      Поэтому, как минимум перед резервным копированием надо:
      - выгонять пользователей из RS-Bank
      - завершать все пакетные процедуры
      - и в идеале гасить Pervasive.
      - а после этого можно запускать приведенный батничек.
      >> Ответить
    • Развернуть arj ( Tiv  01.08.2002 01:20 )
      0(0)
      у arj есть опции: h#, h#1 и h#2
      Я предпочитаю -h#

      А если база под Новелом, то лучше в кроне прописать анлоад бтрив (или Первасайв), лоад нвзип, лоад бтрив (первасайв)

      Взять нвзип можно на http://www.nwsoft.ru/programs/nwzip/download/

      >> Ответить
      • Развернуть Ессесно, пример подан как недорогой и сердитый ( Игорь Исаев R-Style Don. Ростов-на-Дону  01.08.2002 17:39 )
        0(0)
        Ессесно, пример подан, как недорогой и сердитый. Ессесно, архивация делается по ночам. Ессесно, основной BackUp у нас - ленточка, которая за ночь делает полные дампы всех серваков. И все же с arch.bat+arch.mac я сплю спокойно, чего и вам желаю.
        >> Ответить
        • Развернуть Ленточка значит :) ( Tiv  01.08.2002 22:00 )
          0(0)
          Мелковаты у вас серваки. Если за ночь успевают на ленту сброситься.
          Не флейма ради, так, к слову.

          >> Ответить
          • Развернуть hp surestore ultrium 230 ( Игорь Исаев R-Style Don. Ростов-на-Дону  02.08.2002 11:02 )
            0(0)
            объем данных: 100 ГБ или 200 ГБ
            (в зависимости от картриджа)

            производительность: 30 МБ/сек (108 ГБ/час)


            >> Ответить
      • Развернуть попробовал ключ -h# ( Игорь Исаев R-Style Don. Ростов-на-Дону  02.08.2002 15:51 )
        0(0)
        получилась какая-то билеберда base102080.arj.
        по-моему 20020801.arj все же понятней, год, месяц, день
        >> Ответить
        • Развернуть arj -h# ( Tiv  02.08.2002 16:32 )
          0(0)
          Точно, фигня вышла. Должно было быть base020801.arj
          Флаг h# добавляет date string to name.
          У меня в виде ггммдд
          >> Ответить
          • Развернуть А вот такую штуку кто-нить юзал? Она вроде умеет старые архивы удалять, у меня-то ручками... ( Игорь Исаев R-Style Don. Ростов-на-Дону  05.08.2002 13:27 )
            0(0)
            Программа BackUp 32 предназначена для резервирования данных с использованием сжатия, совместимым с PKZIP, WINZIP и другими совместимыми с ними программами - архиваторами, а так же с возможностью подключения внешних модулей сжатия;

            В программе доступны следующие действия и опции:

            Возможность работы программы в фоновом режиме с помещением иконки в системный трей или без нее.

            Возможность подключения плагинов (DLL);

            Возможность оповещения пользователей через сеть о предстоящей архивации (необходима программа NetMsg, которую можно загрузить отдельно с http://backup32.virtualave.net

            Поддержка архивации на сменный носитель;

            Поддержка инкрементной архивации нескольких типов;

            Возможность установки пароля на архив;

            Присвоение архиву имени в виде текущей даты, определенного пользователем или комбинация того и другого;

            Создание BAK – файлов;

            Поддержка нескольких конфигураций и групп конфигураций;

            Удаление архивов и сопутствующих им файлов (LOG, BAK) старше заданного количества дней или если число архивов превысило заданное количество;

            Выполнение конфигурации один раз в заданное количество дней;

            Временная деактивация отдельных конфигураций;

            Выполнение команды ОС до начала всех операций и после;

            Копирование созданного архива в указанную директорию локально или в сеть;

            Множество опций, влияющих на конечный архив, таких, как сохранение в архиве информации о директориях, дисках, использование атрибута "Архивный", установка пароля на архив, добавление комментария к архиву, и т.д.;

            Запись ЛОГ - файлов для каждого создаваемого архива (сохраняется в директории создания и копирования с именем архива и расширением LOG) а также глобального лога, в котором коротко описываются имя пользователя, дата, конфигурация, архив и результат выполнения данной конфигурации;

            Гибкая настройка в плане добавляемых в архив файлов (включаемые, исключаемые, применение масок файлов, файлы, не подлежащие сжатию);

            Поддержка командной строки (для автоматизации действий, например для использования с программой запуска по расписанию или создания ярлыков, загружающих и запускающих разные группы и отдельные конфигурации);

            Создание ярлыков на конфигурации и группы непосредственно из главного окна

            (c) 1999 - 2001 Copyright by Vadim V Mostovoi
            >> Ответить
    • Развернуть Эх совсем народ асм не знает :) ( senevg  12.03.2003 18:30 )
      0(0)
      @echo off
      dd.com
      set DD=%ERRORLEVEL%
      echo %DD%

      точно так же определяем месяц и год файлы нужные тут http://dadgoff.narod.ru/utils/date.arj
      >> Ответить
      • Развернуть С небольшой доработкой, пожалуй - лучший вариант ( Terapevt  30.03.2004 09:10 )
        0(0)
        @echo off
        
        @rem ********** Определяем дату **********
        @dd.com
        @set DD=%ERRORLEVEL%
        @for %%f in (0,1,2,3,4,5,6,7,8,9) do if (%%f) == (%DD%) set DD=0%DD%
        @mm.com
        @set MM=%ERRORLEVEL%
        @for %%f in (0,1,2,3,4,5,6,7,8,9) do if (%%f) == (%MM%) set MM=0%MM%
        @yy.com
        @set YY=%ERRORLEVEL%
        @for %%f in (0,1,2,3,4,5,6,7,8,9) do if (%%f) == (%YY%) set YY=0%YY%
        @rem *************************************
        
        @echo %YY%%MM%%DD%
        

        >> Ответить
        • Развернуть А эти замечательные сом-файлы под старым досом работают?? ( Zigg  30.03.2004 17:50 )
          0(0)
          а то попробовал, а еррорлевел почему-то ничего не возвращает:-(((
          >> Ответить
          • Развернуть COM-файлы работают, а вот переменная %ERRORLEVEL% в старом DOS'е отсутствует. Тогда всёравно можно ( Terapevt  30.03.2004 18:53 )
            0(0)
            применить изврат типа:
            @echo off
            
            @rem ********** Определяем дату **********
            @dd.com
            @if errorlevel ==  1 set DD=01
            @if errorlevel ==  2 set DD=02
            @if errorlevel ==  3 set DD=03
            @if errorlevel ==  4 set DD=04
            @if errorlevel ==  5 set DD=05
            @if errorlevel ==  6 set DD=06
            @if errorlevel ==  7 set DD=07
            @if errorlevel ==  8 set DD=08
            @if errorlevel ==  9 set DD=09
            @if errorlevel == 10 set DD=10
            @if errorlevel == 11 set DD=11
            @if errorlevel == 12 set DD=12
            @if errorlevel == 13 set DD=13
            @if errorlevel == 14 set DD=14
            @if errorlevel == 15 set DD=15
            @if errorlevel == 16 set DD=16
            @if errorlevel == 17 set DD=17
            @if errorlevel == 18 set DD=18
            @if errorlevel == 19 set DD=19
            @if errorlevel == 20 set DD=20
            @if errorlevel == 21 set DD=21
            @if errorlevel == 22 set DD=22
            @if errorlevel == 23 set DD=23
            @if errorlevel == 24 set DD=24
            @if errorlevel == 25 set DD=25
            @if errorlevel == 26 set DD=26
            @if errorlevel == 27 set DD=27
            @if errorlevel == 28 set DD=28
            @if errorlevel == 29 set DD=29
            @if errorlevel == 30 set DD=30
            @if errorlevel == 31 set DD=31
            @mm.com
            @if errorlevel ==  1 set MM=01
            @if errorlevel ==  2 set MM=02
            @if errorlevel ==  3 set MM=03
            @if errorlevel ==  4 set MM=04
            @if errorlevel ==  5 set MM=05
            @if errorlevel ==  6 set MM=06
            @if errorlevel ==  7 set MM=07
            @if errorlevel ==  8 set MM=08
            @if errorlevel ==  9 set MM=09
            @if errorlevel == 10 set MM=10
            @if errorlevel == 11 set MM=11
            @if errorlevel == 12 set MM=12
            @yy.com
            @if errorlevel ==  0 set YY=00
            @if errorlevel ==  1 set YY=01
            @if errorlevel ==  2 set YY=02
            @if errorlevel ==  3 set YY=03
            @if errorlevel ==  4 set YY=04
            @if errorlevel ==  5 set YY=05
            @if errorlevel ==  6 set YY=06
            @if errorlevel ==  7 set YY=07
            @if errorlevel ==  8 set YY=08
            @if errorlevel ==  9 set YY=09
            @if errorlevel == 10 set YY=10
            @if errorlevel == 11 set YY=11
            @if errorlevel == 12 set YY=12
            @if errorlevel == 13 set YY=13
            @if errorlevel == 14 set YY=14
            @if errorlevel == 15 set YY=15
            @if errorlevel == 16 set YY=16
            @if errorlevel == 17 set YY=17
            @if errorlevel == 18 set YY=18
            @if errorlevel == 19 set YY=19
            @if errorlevel == 20 set YY=20
            @if errorlevel == 21 set YY=21
            @if errorlevel == 22 set YY=22
            @if errorlevel == 23 set YY=23
            @if errorlevel == 24 set YY=24
            @if errorlevel == 25 set YY=25
            @if errorlevel == 26 set YY=26
            @if errorlevel == 27 set YY=27
            @if errorlevel == 28 set YY=28
            @if errorlevel == 29 set YY=29
            @if errorlevel == 30 set YY=30
            @if errorlevel == 31 set YY=31
            @if errorlevel == 32 set YY=32
            @if errorlevel == 33 set YY=33
            @if errorlevel == 34 set YY=34
            @if errorlevel == 35 set YY=35
            @if errorlevel == 36 set YY=36
            @if errorlevel == 37 set YY=37
            @if errorlevel == 38 set YY=38
            @if errorlevel == 39 set YY=39
            @if errorlevel == 40 set YY=40
            @if errorlevel == 41 set YY=41
            @if errorlevel == 42 set YY=42
            @if errorlevel == 43 set YY=43
            @if errorlevel == 44 set YY=44
            @if errorlevel == 45 set YY=45
            @if errorlevel == 46 set YY=46
            @if errorlevel == 47 set YY=47
            @if errorlevel == 48 set YY=48
            @if errorlevel == 49 set YY=49
            @if errorlevel == 50 set YY=50
            @if errorlevel == 51 set YY=51
            @if errorlevel == 52 set YY=52
            @if errorlevel == 53 set YY=53
            @if errorlevel == 54 set YY=54
            @if errorlevel == 55 set YY=55
            @if errorlevel == 56 set YY=56
            @if errorlevel == 57 set YY=57
            @if errorlevel == 58 set YY=58
            @if errorlevel == 59 set YY=59
            @if errorlevel == 60 set YY=60
            @if errorlevel == 61 set YY=61
            @if errorlevel == 62 set YY=62
            @if errorlevel == 63 set YY=63
            @if errorlevel == 64 set YY=64
            @if errorlevel == 65 set YY=65
            @if errorlevel == 66 set YY=66
            @if errorlevel == 67 set YY=67
            @if errorlevel == 68 set YY=68
            @if errorlevel == 69 set YY=69
            @if errorlevel == 70 set YY=70
            @if errorlevel == 71 set YY=71
            @if errorlevel == 72 set YY=72
            @if errorlevel == 73 set YY=73
            @if errorlevel == 74 set YY=74
            @if errorlevel == 75 set YY=75
            @if errorlevel == 76 set YY=76
            @if errorlevel == 77 set YY=77
            @if errorlevel == 78 set YY=78
            @if errorlevel == 79 set YY=79
            @if errorlevel == 80 set YY=80
            @if errorlevel == 81 set YY=81
            @if errorlevel == 82 set YY=82
            @if errorlevel == 83 set YY=83
            @if errorlevel == 84 set YY=84
            @if errorlevel == 85 set YY=85
            @if errorlevel == 86 set YY=86
            @if errorlevel == 87 set YY=87
            @if errorlevel == 88 set YY=88
            @if errorlevel == 89 set YY=89
            @if errorlevel == 90 set YY=90
            @if errorlevel == 91 set YY=91
            @if errorlevel == 92 set YY=92
            @if errorlevel == 93 set YY=93
            @if errorlevel == 94 set YY=94
            @if errorlevel == 95 set YY=95
            @if errorlevel == 96 set YY=96
            @if errorlevel == 97 set YY=97
            @if errorlevel == 98 set YY=98
            @if errorlevel == 99 set YY=99
            @rem *************************************
            
            @echo %YY%%MM%%DD%
            
            ну и не забыть в config.sys установить достаточное пространство для ENVIRONMENT в команде "SHELL="
            Такая конструкция будет работать в любом ДОСе-WINDOWSе.
            Успехов в изучении ДОСов. ;)
            >> Ответить
    • Развернуть Ночное архивирование ( Vales  29.03.2004 14:29 )
      0(0)
      У меня префиксированием занимается SED
      командник, делающий архив выглядит так
      arj32 a -r \rsarchiv\TMP\lstarch.arj \rsbank\dbfile\*.* \rsbank\arhfile\*.* c:\rsbank\prevfile\*.* c:\rsbank\mac\*.* -x*.arj
      @if not exist \rsarchiv\TMP\lstarch.arj goto fin
      date /T|sed "s/[^ ]*[ ]//; s/200/0/;s/\.//g;s/^/ren \\rsarchiv\\TMP\\lstarch.arj rs/;s/ $/.*/">_ar_.cmd
      call _ar_.cmd
      ::cleenup
      del _ar_.cmd
      copy /b \rsarchiv\TMP\rs??????.arj \\srvr-i\rsarch
      copy /b \rsarchiv\TMP\rs??????.arj \\srvr-ii\rsarch
      MOVE \rsarchiv\TMP\rs??????.arj \rsarchiv
      :fin
      

      Запускается ночью по расписанию.
      >> Ответить
      • Развернуть что есть sed? это утилита или команда? ( S_Andrey  31.03.2004 15:49 )
        0(0)
        Not specified
        >> Ответить
        • Развернуть sed - утилита ( Vales  31.03.2004 16:32 )
          0(0)
          Sed.exe - утилита : потоковый редактор.
          Глотает, что ему скормят, перерабатывает как ему скажут и "выплевывает" что просили. :)
          Используются регулярные выражения.
          Найти можно в ИНЕТе под любую платформу.
          >> Ответить
          • Развернуть вы бы еще перл посоветовали ( KaMPiLeR  31.03.2004 16:34 )
            0(0)
            ну а раз пошла такая пьянка - рекомендую:
            http://www.nncron.ru/

            и вообще почитать там что связано с бакупами

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

            >> Ответить
    • Развернуть я делаю так(+) ( артем  25.05.2004 08:59 )
      2(1)
      c:\progra~1\winrar\rar.exe a -r -rr -u -y -ag -dh -ri15 -ilog -hpParol z:\storage1\photos.pro\photos k:\photos.pro\*.*

      перед архивацией запускаю deltmp и грохаю старые архивы.
      >> Ответить
    • Развернуть Формирование префикса VBscript -ом ( Vales  27.05.2004 12:29 )
      0(0)
      Все это умеет VBscript
      Пример RSBackup.vbs
      -----------
      on error Resume next
      set wsh = CreateObject("WScript.Shell")
      Set fs = CreateObject("Scripting.FileSystemObject")
      arname=date()
      arname="RS" & left(arname,2) & mid(arname,4,2) & right(arname,2) & ".arj"
      fnm="\rsarchiv\" & arname
      'Что архивировать
      toArc=" \rsbank\dbfile\*.* \rsbank\arhfile\*.* \rsbank\prevfile\*.* \rsbank\mac\*.* -x*.arj"
      'Если уже есть такой, удаляем т.е. обновляем
      if fs.FileExists(fnm) then fs.deleteFile fnm
      wsh.run "\bin\arj32 a -r " & fnm & toArc ,0 , true
      'Проверяем что архив создан и что другой сервер доступен и копируем
      if fs.FileExists(fnm) then if fs.FolderExists("\\backsrv\rsarchiv\") then fs.CopyFile fnm, "\\backsrv\rsarchiv\"
      set fs = Nothing
      set Wsh = Nothing
      ------------
      Запускается ночью шедулером.
      Создает архив вида RSddmmyy.arj в папке \rsarchiv и его копию на другом сервере \\backsrv\rsarchiv\RSddmmyy.arj
      Вариации возможны по своему усмотрению.
      >> Ответить