SQL2005. Выгружаем базу средствами 1С не выгоняя пользователей.
Очередной велосипед на тему архивации баз данных 1С средствами 1С.
- Описание
- Подробнее
Описание
На примере 1с8.
Вводные:
- Есть управленческая база данных на сервере SQL2005, в которой работа ведется по графику 24/7 — то есть база используется круглые сутки
- Есть потребность в архивации в файлы DT
- Есть потребность в последующей заливки выгрузок на удаленный FTP сервер
Решение:
В SQL 2005 есть замечательный механизм под названием «моментальные снимки базы данных» (http://msdn.microsoft.com/ru-ru/library/ms175158(SQL.90).aspx) который обладает очень важной функцией: крайне быстро делается с минимальной нагрузкой на сервер.
Поскольку, по сути «моментальный снимок базы» есть «срез» состояния базы данных на заданный момент времени, то нам ничего не мешает сделать выгрузку из этого «снимка».
Единственная трудность — я так и не нашел как «обновлять» снимок, по этому родилась идея его тупо уничтожать .
Реализация:
- Исходная база данных «bp_upr» (соответственно база «снимок» будет «UPR_Snapshot_Sample»)
- Инструкция для создания снимка базы данных
- Добавляем в инструкцию удаление существующего снимка
drop database UPR_Snapshot_Sample
create database UPR_Snapshot_Sample on(name='bp_upr',FILENAME='D:\SQLData\BP_UPR.ss') AS SNAPSHOT OF bp_upr - Данную инструкцию помещаем в план обслуживания и задаем периодичность выполнения оной. Например, каждые три часа начиная с 10:00 и заканчивая в 19:00
- настраиваем привычное нам средство архивирования баз данных на работу с информационной базой в кластере «UPR_Snapshot_Sample». У меня это программа «Эффектор:Сейвер» которая выполняет 4 задания по архивации базы «UPR_Snapshot_Sample»: первое в 10:20, второе в 13:20 итд…
- Для синхронизации с удаленным FTP сервером используем программу «WebSynchronizer 1.5» которая каждый час проверяет содержимое каталога ftp и сравнивая его с папкой выгрузки синхронизирует в одностороннем порядке содержимое удаленного каталога.
create database UPR_Snapshot_Sample on (name='bp_upr',FILENAME='D:\SQLData\BP_UPR.ss') AS SNAPSHOT OF bp_upr
Итог:
Уже более трех месяцев в папке выгрузки лежат стандартные выгрузки базы данных с периодичностью 3 часа и уже месяц как это все продублировано на удаленном FTP сервере.
PS: ну естественно «про запас» — никто не отменял архивацию средствами SQL:
- Раз в сутки полный бекап базы
- Каждые 6 часов разностный бекап
- Каждые два часа бекап лога транзакций
- Удаление архивов старше 1го месяца
Добавлено:
Основные плюсы по сравнению со штатным бекапом SQL2005:
Размер выгрузки у трехгиговой базы примерно 120 мегов, что позволяет без сильных затрат времени и трафика выгружать эти архивы на удаленные сервера (например на FTP расположенный дома у генерального) а так же хранить архивы большего периода времени на жестких дисках сервака/хранилища архивов не озадачиваясь «чисткой» ценного дискового пространства.
Дальнейшее использование выгрузок в плане поднять базу на ноутбуке главбуха, аудитора или программиста занимает меньше времени и доступно сотруднику любой квалификации.
Внимание: Моментальные снимки баз данных доступны только в выпуске Microsoft SQL Server 2005 Enterprise Edition.