gifts2017

SQL2005. Выгружаем базу средствами 1С не выгоняя пользователей.

Опубликовал Алексей Прилепский (IamAlexy) в раздел Администрирование - Архивирование (backup)

Очередной велосипед на тему архивации баз данных 1С средствами 1С.

На примере 1с8.

Вводные:

  1. Есть управленческая база данных на сервере SQL2005, в которой  работа ведется по графику 24/7 - то есть база используется круглые сутки
  2. Есть потребность в архивации  в файлы DT
  3. Есть потребность в последующей заливки выгрузок на удаленный FTP сервер

Решение:

В SQL 2005 есть замечательный механизм под названием «моментальные снимки базы данных» (http://msdn.microsoft.com/ru-ru/library/ms175158(SQL.90).aspx) который обладает очень важной функцией: крайне быстро  делается с минимальной нагрузкой на сервер.

Поскольку, по сути «моментальный снимок базы» есть «срез» состояния базы данных на заданный момент времени, то нам ничего не мешает сделать выгрузку из этого «снимка».

Единственная трудность - я так и не нашел как «обновлять» снимок, по этому родилась идея его тупо уничтожать .

Реализация:

  1. Исходная база данных  «bp_upr» (соответственно база «снимок» будет «UPR_Snapshot_Sample»)
  2. Инструкция для создания снимка базы данных 
  3. create  database  UPR_Snapshot_Sample on (name='bp_upr',FILENAME='D:\SQLData\BP_UPR.ss') AS SNAPSHOT OF bp_upr
  4. Добавляем в инструкцию  удаление существующего снимка
    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 
  5. Данную инструкцию помещаем в план обслуживания и задаем периодичность выполнения оной. Например,  каждые три часа начиная с 10:00 и заканчивая в 19:00
  6. настраиваем привычное нам средство архивирования баз данных на работу с информационной базой в кластере «UPR_Snapshot_Sample». У меня это программа «Эффектор:Сейвер» которая выполняет 4 задания по архивации базы «UPR_Snapshot_Sample»: первое в 10:20, второе в 13:20 итд...
  7. Для синхронизации с удаленным FTP сервером используем программу «WebSynchronizer 1.5»  которая каждый час проверяет содержимое каталога ftp  и сравнивая его с папкой выгрузки синхронизирует в одностороннем порядке содержимое удаленного каталога.

Итог:

Уже более трех месяцев в папке выгрузки лежат стандартные выгрузки базы данных с периодичностью 3 часа и уже месяц как это все продублировано на удаленном FTP сервере.

PS: ну естественно «про запас»  - никто не отменял архивацию средствами SQL:

  1. Раз в сутки полный бекап базы
  2. Каждые 6 часов разностный бекап
  3. Каждые два часа бекап лога транзакций
  4. Удаление архивов старше 1го месяца

 

Добавлено:

Основные плюсы по сравнению со штатным бекапом SQL2005:

Размер выгрузки у трехгиговой базы примерно 120 мегов, что позволяет  без сильных затрат времени и трафика выгружать эти архивы на удаленные сервера (например на FTP расположенный дома у генерального) а так же хранить архивы большего периода времени на жестких дисках сервака/хранилища архивов не озадачиваясь "чисткой" ценного дискового пространства.

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

Внимание: Моментальные снимки баз данных доступны только в выпуске Microsoft SQL Server 2005 Enterprise Edition.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Алексей Прилепский (IamAlexy) 21.09.09 23:52
добавление статей - тихий ужас..

два слова "drop" и "database" или "create" и "database" тупо удаляют весь набранный текст при попытке сохранить статью..

вообще клева.. ввел, отредактировал, оформил, сохранил - статья стерлась :)

ппц..
2. Александр Окулов (PowerBoy) 22.09.09 08:55
(0) Спасибо за статью. Несколько вопросов?
1. Разница по времени архивирования моментального снимка и обычного бакапа?
2. Разница по размеру файла моментального снимка и обычного бакапа?
3. Андрей Скляров (coder1cv8) 22.09.09 10:04
(0) мАлАдец! )
ЗЫ: Больше терпения в борьбе с сырым интерфейсом ИС!
4. Алексей Прилепский (IamAlexy) 22.09.09 10:29
(2) по времени?
на трехгиговой базе я бы сказал примерно одно и то же. Но тут есть одно "НО"
у полного бекапа размер 3 гига а у выгрузки 100 мегов..

и синхронизация файлов полного бекапа с удаленным ФТП крайне накладна по трафику и времени...

+ хранение архивов в dt'шниках предпочтительнее по причине того что резко поднять копию на ноуте программиста или главбуха (любит она дома с копией поиграться) - дело 2х минут.. скопировал выгрузку за нужную дату/время и развернул базу...
5. Сергей Калеников (svent0vit) 22.09.09 12:04
Вы забыли добавить, что в Standard Edition механизм снапшотов не поддерживается
6. Трактор Трактор (Трактор) 22.09.09 12:09
Решение очевидное, но всё-равно статья полезная. Плюс.
А трудности со словами дроп и датабасе это защита от SQL инъекций :-) Глючная защита у Битрикса.
7. Алексей Прилепский (IamAlexy) 22.09.09 12:15
(5) по ссылке http://msdn.microsoft.com/ru-ru/library/ms175158(SQL.90).aspx написано русским по белому :)

"Моментальные снимки баз данных доступны только в выпуске Microsoft SQL Server 2005 Enterprise Edition. Все модели восстановления поддерживают моментальные снимки базы данных."
8. Drock (d.snissarenko) 22.09.09 21:23
О_о так тут все готово к sql инъекциям
9. Drock (d.snissarenko) 22.09.09 21:23
а я то думал чего за ерунда, когда пытался сохранить статью с кодом выгрузки в мускул )))
10. Артур Аюханов (artbear) 23.09.09 09:26
Статья хорошая, плюсую.
Но неужели так много организаций, которые могут позволить себе купить Microsoft SQL Server 2005 Enterprise Edition :) ?
Там цена где-то 30 000 долларов :)
11. Алексей Прилепский (IamAlexy) 23.09.09 11:14
(10) зато все могут себе позволить триальную версию SQL2005 на 180 дней.. а затем тупо переинсталить сервак :)

в небольших организациях у которой нед денег на лицензию (а вы назали стоимость лицензии "на процессор" вродебы) вполне себе выход - раз в полгода потратить 1 выходной день приходящего админа на переустановку сервера...

12. Тимофей Бугаевский (boogie) 23.09.09 20:02
А я раром сжимаю после выгрузки бекап SQL и получаю практически такой же объём как dt.
13. Алексей Прилепский (IamAlexy) 23.09.09 20:13
(12) и зачем - только ради экономии места?

так для того чтобы поднять базу вам придется задействовать SQL да еще перед этим разархивировать из файла...

основное преимущество - получение стандартных выгрузок для загрузки которых в тестовую/архивную/программистскую базу лишних телодвижений делать не надо - просто выбрать выгрузку нужной даты/времени
14. Dmitry Dmitry (Dimasik2007) 26.09.09 12:59
(0) support, картинки явно не отсюда?
15. Алексей Прилепский (IamAlexy) 26.09.09 22:51
после сбоя какие то левые картинки появились...
у меня в статье вообще не было картинок
16. Шоломинский Владимир (1C_Wolf) 09.11.09 17:36
хорошая идея, :). Еще раз подтверждает то что нет ничего невозможного, есть только ограничение на использование серого вещества :)
17. Vakil Khafizov (vkl) 25.11.09 19:06
Стандартный backup + 7-zip работают гооораздо быстрей и размер получается не больше чем dt, и нет необходимости создавать снимок базы, а восстановление автор похоже не проверял. Сравните ради интереса сколько восстанавливается стандартный backup и dt-ешник. Впрочем, сохрани вас ... от восстановления базы.
PS: Извините, не заметил в статье "размер базы 3 Гига" :-)
Но тут уж точно без Microsoft SQL Server 2005 Enterprise Edition никак.
Начиная гигов с 20-30 загрузка базы из DT длится часами.
18. Алексей Прилепский (IamAlexy) 26.11.09 02:47
(17) на небольших базах (до 3х гигов) стандартный бекап и 7зип работают не быстрее :)

+ архив больше по размерам.
выгрузка меньше и быстрее на внешний фтп заливается.

а вот когда база вырастет - тогда да.. будем думать чо делать :)
19. Валерий Гайдабура (director04) 29.01.10 17:32
Кто подскажет в чем может быть дело. Подняли новый сервер (х64). Установил сервер 1С (х64). Настроил SQL на работу с моментальными снимками. По началу все работало идеально. Но на второй день, толи админы что-то переконфигурячили, толи еще в чем причина, но:
при запуске в пользовательском режиме 1С (база данных - моментальный снимок), сервер 1С тут же зависает. Не помогает его остановка и перезапуск, ни убийство процесса приведшего к зависанию.
Приходится тупо перезапускать весь сервер.
Что мы могли намудрить?
20. Dmitry Dmitry (Dimasik2007) 23.02.10 12:20
(19) Моментальный снимок - это база только для чтения. Поэтому ее можно открыть в конфигураторе и выгрузить, а в пользовательском режиме открыть нельзя.
21. Роман Демидов (rid636674) 15.07.10 15:37
можно поподробнее про 5 пункт, я скачал эфект сэйвер, но видимо чтото делаю нетак, ошибка вылетает.
22. Алексей Прилепский (IamAlexy) 16.07.10 11:05
(21) даже не знаю что сказать
там же все примитивно: на первых четырех пунктах делается снимок базы к котормому можно 1Ской подключиться как к отдельной базе данных

то есть на сервере предприятия добавляется база, а в качетсве базы на сервере баз данных указывается наш снимок "UPR_Snapshot_Sample" и соответственно далее в эффекторесейвере или в любом другом инструменте для выгрузки просто из вот этой "снимочной" базы делается выгрузка
23. Мурат Жананов (murat_) 11.08.10 12:20
Внимание: Моментальные снимки баз данных доступны только в выпуске Microsoft SQL Server 2005 Enterprise Edition.


Нужно было бы в начало статьи вставить, чтобы не тратить время на чтение !
:) :) :)
24. Илья Иванков (ilya_i) 24.10.12 21:30
Для 2008 R2 такая же фигня, только для Enterprise Edition, ну и Datacenter Edition конечно тоже. Обидно, ведь удобная штука.
25. Алекс Ю (AlexO) 05.05.14 10:54
(0)
настраиваем привычное нам средство архивирования баз данных на работу с информационной базой в кластере «UPR_Snapshot_Sample».

Так и надо было писать - "настраиваем автоматическую архивацию в DT средствами «Эффектор:Сейвер»".
А то "привычное нам средство..". У каждого - свое "привычное средство" :)
Светлый ум; +1 Ответить
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа