Резервное копирование и обслуживание базы данных


Скрипты для обслуживания базы данных и её архивирования.

Вот прочёл публикацию (картинку от туда же позаимствовал, понравилась) и решил написать как эти дела организовываю я. Тоже все по простецки.

Итак. Есть два файла параметров запуска 1С в пакетном режиме.

Файл Recalc.prm. Параметры запуска для пересчета итогов и переиндексации.

[GENERAL]
Output=m:\tradedb\wdb\recalc.log
Quit=1
CheckAndRepair=1

[CheckAndRepair]
Repair=1
PhysicalIntegrity=0
Reindex=1
LogicalIntegrity=0
RecalcSecondaries=1
RecalcTotals=1
Pack=0

Файл Reindex.prm. Параметры запуска для переиндексации.

[GENERAL]
Output=m:\tradedb\wdb\reindex.log
Quit=1
CheckAndRepair=1

[CheckAndRepair]
Repair=1
PhysicalIntegrity=0
Reindex=1
LogicalIntegrity=0
RecalcSecondaries=0
RecalcTotals=0
Pack=0

Такие файлы впринципе держу для каждой базы данных (количество баз у разных клиентов разное, например в аудиторской их около четырех десятков).

Для собственно архивирования баз использую bat-файл с именем ArchDB.bat

rar a -pkc9d9fs76cvk4 -k -ac -agYYYYMMDDHH -ep1 -ilog -m5 -md4096 -r -s -y -x*.cdx -x*.mxl %1 %2

rem пароль kc9d9fs76cvk4
rem -k Заблокировать архив
rem -ac Снять атрибут "Архивный" после архивации или извлечения
rem -agYYYYMMDDHH за имя архива берется текущие дата и час, дата записанна в обратном порядке, для правильной сортировки архивов по дате.
rem -ep1 Исключить базовый каталог из имен
rem -ilog Записывать протокол ошибок в файл (в зарегистрированной версии)
rem -m5 Метод сжатия - максимум
rem -md4096 Размер словаря 4 Мб
rem -r Рекурсивно с подкаталогами
rem -s Создать непрерывный архив
rem -y Отвечать 'Да' на все запросы
rem -x*.cdx -x*.mxl исключить из архива файлы cdx и mxl (это когда бухи для переноса данных используют каталог базы данных, фалы нужны 1 раз, а размерчики у них не слабые)

Для запуска архивирования базы данных - файл ArchTradeDB.bat

Call ArchDB D:\Archivs\TradeDB\T M:\TradeDB\WDB\*.*

rem Вызывается батник ArchDB с параметрами
rem D:\Archivs\TradeDB\T путь к каталогу хранения архива (первая буква в имени архива будет T).

Для хранения архивов используется носитель отличный от носителя базы данных, т.е. это физически разные устройства (сетевой диск, другой жесткий диск, Флешка...)

Для запуска пересчета и переиндексации, файл RecalcTradeDB.bat

c:\progra~1\1cv77\bin\1cv7.exe config /DM:\DBases\WDB\ /NРобот /Probot /@M:\Service\Recalc.prm

Для архивирования папки документов ArchDocs.bat

rar a -ac -agYYYYMMDDHH -ep1 -ilog -m5 -md4096 -r -s -y D:\Archivs\Documents\D G:\Documents\*.*

И имеется ещё несколько батников для архивирования разных баз и различных наборов сервиса
Например: Файл AllDBService.bat

call ArchAccDB.bat > ArchAcc.log
call RecalcAccDB.bat
call ArchTradeDB.bat > ArchTrade.log
call RecalcTradeDB.bat
call ArchDocs.bat > ArchDocs.log

Все эти файлы у меня лежат в одном месте (M:\Service) туда же закинут файл rar.exe

Но фактически я просто прописываю вызов нужного сервиса в один батник, а он в свою очередь запускается через "Назначенные задания" ежедневно в 22:00

Конечно же можно создать и включить в основной файл задачи по переброске, по ftp, по выключению... Но я этим не пользуюсь, потому как стоит это все у меня в серверах, которые не выключаются, под архивы заведены отдельные диски, копии хранятся за несколько последних дней (обычно за месяц, но есть и больше, даже за год есть), и всегда можно поднять старую и проверить как же было до того, как кто-то неделю назад чего-то ковырнул, и вот теперь эта ошибка вылезла... Винты нынче большие и не проблема хранить много архивов, базы данных сжимаются очень хорошо (из базы 760 Мб получается 36 Мб архив)

Файлы обработки:

-