Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Вопросы программирования БД, их оптимизации, резервирования и восстановления данных.

Модераторы: Trinity admin`s, Free-lance moderator`s

Bormoto
Advanced member
Сообщения: 253
Зарегистрирован: 06 июл 2007, 22:20
Откуда: спб

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение Bormoto » 15 июн 2012, 16:32

ITER писал(а):
reallord писал(а):Режим всех баз - simple. Причина - 1С 8.2
:) :) А можно узнать, какая связь? ;)
Присоединяюсь к заданному вопросу. Очень интересно узнать - какая же связь? Неужели потому, что известный "апостол" 1С Вячеслав Гилев использовал модель simple в своей статье про резервное копирование и восстановление?

reallord
Junior member
Сообщения: 17
Зарегистрирован: 14 июн 2012, 11:36
Откуда: Нижний Новгород

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение reallord » 15 июн 2012, 16:39

Bormoto писал(а):
ITER писал(а):
reallord писал(а):Режим всех баз - simple. Причина - 1С 8.2
:) :) А можно узнать, какая связь? ;)
Присоединяюсь к заданному вопросу. Очень интересно узнать - какая же связь? Неужели потому, что известный "апостол" 1С Вячеслав Гилев использовал модель simple в своей статье про резервное копирование и восстановление?
Я не гуру в SQL, но свои соображения скажу.
Смысл в том, что исходя из бизнес-логики приложения, нельзя вручную откатить транзакции.
То есть с точки зрения 1С, в момент проведения документа идет НЕСКОЛЬКО транзакций, а не одна.
И если откатить часть транзакций, то можно получить ситуацию, что проведенный документ не делает движений по регистрам и не попадает в отчет, что некорректно с точки зрения бизнес-логики. Если бы проведение всего документа проходило в одной транзакции, то тогда были бы проблемы с производительностью и масштабируемостью.

Если сможете объяснить чем будет лучше режим full, то обещаю как минимум задуматься...

Аватара пользователя
kim_aa
Advanced member
Сообщения: 118
Зарегистрирован: 24 ноя 2011, 16:30
Откуда: Санкт-Петербург
Контактная информация:

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение kim_aa » 15 июн 2012, 19:14

1) У SAP тоже самое.
Более того связность БД на уровне бизнес-логики нельзя проконтролировать просто поддерживая связность БД на уровне сервера СУБД.
У меня есть подозрение, что такая ситуация стандартна для трехуровневых приложений
(с собственными модулями/языком для реализации бизнес-логики).

2) Что же касаемо описываемой вами ситуации с транзакционностью, то все верно если писать "транзакции сервера СУБД". Действительно на одну транзакцию сервера приложений приходится неопределенное количество транзакций сервера СУБД.

3) Кстати сам сервер приложений 1С поддерживает транзакционную модель?

reallord
Junior member
Сообщения: 17
Зарегистрирован: 14 июн 2012, 11:36
Откуда: Нижний Новгород

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение reallord » 15 июн 2012, 19:54

kim_aa писал(а):1) У SAP тоже самое.
Более того связность БД на уровне бизнес-логики нельзя проконтролировать просто поддерживая связность БД на уровне сервера СУБД.
У меня есть подозрение, что такая ситуация стандартна для трехуровневых приложений
(с собственными модулями/языком для реализации бизнес-логики).

2) Что же касаемо описываемой вами ситуации с транзакционностью, то все верно если писать "транзакции сервера СУБД". Действительно на одну транзакцию сервера приложений приходится неопределенное количество транзакций сервера СУБД.

3) Кстати сам сервер приложений 1С поддерживает транзакционную модель?
1) у меня такие же подозрения, переходящие в твердую уверенность, так как ничего лучше сами после многократного обсуждения подобных ситуаций придумать не смогли :)
2) да, именно "транзакции сервера СУБД"
3) Да, поддерживает, и даже поддерживает на уровне СУБД, но это практически крайне редко используется, так как приводит к блокировкам записи.
То есть используя язык 1С можно открыть транзакцию и закрыть ее, она будет объявлена на уровне MS SQL и внутри нее будут транзакции уровня проводок документа. Так обычно и делается системно на уровне платформы, если при проведении документа происходит ЛОГИЧЕСКАЯ бизнес ошибка (типа нет остатка на складе).

Если мне кто-то связно сможет объяснить зачем иметь transaction log уровня full в случае если ты не имеешь возможности сделать откат транзакции, я буду этому человеку крайне благодарен. Даже на дисках ИТС в методологических материалах по настройке MS SQL для 1С написано что режим ставим simple.

Аватара пользователя
diz
Advanced member
Сообщения: 1189
Зарегистрирован: 12 янв 2009, 12:09
Откуда: Пермь

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение diz » 15 июн 2012, 21:32

Мне кажется, что одна транзакция СП=одна транзакция СУБД. Иначе бы не работали такие механизмы обеспечения высокой доступности как log shipping. Более того, вообще систему из бэкапа БД, в т.ч. full восстановить было бы нельзя, т.к. нельзя было бы прогарантировать, что СП в момент бэкапа не имеет незавершенную транзакцию. Все примочки к софту резервного копирования для поддержки приложений (напр. тот же агент SAP в симантек) лишь добавляют удобства, позволяя во время восстановления оперировать не только моментом времени, как в случае восстановления из бэкапа БД, а объектами бизнес-приложения. Мы неоднократно восстанавливали SAP из бэкапа с исп. транзакционных логов, непонятнок в системе не возникало (у нас как-раз агент SAP не был куплен).

Собственно, краем уха слышал, что это делается как-то так.

ITER
Advanced member
Сообщения: 306
Зарегистрирован: 13 июл 2003, 10:01
Откуда: Хабаровский край

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение ITER » 16 июн 2012, 03:15

reallord писал(а): Я не гуру в SQL, но свои соображения скажу.
Смысл в том, что исходя из бизнес-логики приложения, нельзя вручную откатить транзакции.
То есть с точки зрения 1С, в момент проведения документа идет НЕСКОЛЬКО транзакций, а не одна.
И если откатить часть транзакций, то можно получить ситуацию, что проведенный документ не делает движений по регистрам и не попадает в отчет, что некорректно с точки зрения бизнес-логики. Если бы проведение всего документа проходило в одной транзакции, то тогда были бы проблемы с производительностью и масштабируемостью.

Если сможете объяснить чем будет лучше режим full, то обещаю как минимум задуматься...
Что то я не понимаю логики. При чем тут ручной откат транзакции (и что это такое вообще?) и режим лога? Вообще то full режим на MS SQL нужен в первую очередь для возможности восстановления базы на любой момент (или до последней закоммиченной транзакции). А как вы будете восстанавливать упавшую базу? На момент последнего бэкапа? А вся работа пользователей после бэкапа коту под хвост?

ITER
Advanced member
Сообщения: 306
Зарегистрирован: 13 июл 2003, 10:01
Откуда: Хабаровский край

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение ITER » 16 июн 2012, 03:19

diz писал(а):Мне кажется, что одна транзакция СП=одна транзакция СУБД. Иначе бы не работали такие механизмы обеспечения высокой доступности как log shipping. Более того, вообще систему из бэкапа БД, в т.ч. full восстановить было бы нельзя, т.к. нельзя было бы прогарантировать, что СП в момент бэкапа не имеет незавершенную транзакцию.
Эпическое предложение. С чего бы это в момент бэкапа не должно быть не завершенных транзакций? База во время бэкапа что не может работать по вашему? После восстановления все незавершенные транзакции откатываются вообще то, тоже самое и при запуске субд после аварийного падения сервера.

Аватара пользователя
diz
Advanced member
Сообщения: 1189
Зарегистрирован: 12 янв 2009, 12:09
Откуда: Пермь

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение diz » 16 июн 2012, 10:10

ITER писал(а):Эпическое предложение. С чего бы это в момент бэкапа не должно быть не завершенных транзакций? База во время бэкапа что не может работать по вашему? После восстановления все незавершенные транзакции откатываются вообще то, тоже самое и при запуске субд после аварийного падения сервера.
Ну прочитайте же внимательно. Я говорил про транзакцию с точки зрения СП. Т.е. если допустить что транзакция БД не равна транзакции СП (бизнес-логики), то не важно, каким образом бы осуществлялся бэкап БД, он бы всегда был неконсистентен с т.з. СП, т.к., действительно, в момент бэкапа работа не останавливается и в бэкап бы попала часть завершенных транзакций с точки зрения БД, но при этом задачи с т.з. бизнес-логики были бы не завершены.

Аватара пользователя
kim_aa
Advanced member
Сообщения: 118
Зарегистрирован: 24 ноя 2011, 16:30
Откуда: Санкт-Петербург
Контактная информация:

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение kim_aa » 16 июн 2012, 13:06

diz писал(а):Ну прочитайте же внимательно. Я говорил про транзакцию с точки зрения СП. Т.е. если допустить что транзакция БД не равна транзакции СП (бизнес-логики), то не важно, каким образом бы осуществлялся бэкап БД, он бы всегда был неконсистентен с т.з. СП, т.к., действительно, в момент бэкапа работа не останавливается и в бэкап бы попала часть завершенных транзакций с точки зрения БД, но при этом задачи с т.з. бизнес-логики были бы не завершены.
1) Нужно учитывать, что при операции выгрузки дампа сервер СУБД:
- ждет закрытия всех транзакций на уровне сервера СУБД;
- переходит в специфическое состояние, когда файлы данных переходят в состояние RO, а все операции пишутся только в лог.

2) Я не зря писал, что сервер приложений отслеживает связность и целостность таблиц своего уровня (назовем их "логическими таблицами") сам.
Отношение логических таблиц к таблицам уровня сервера СУБД не один к одному.
Можете открыть базу инструментом типа ErWin и полюбоваться.
Если Вы работали с SAP, то должны знать, что инструментарий сервера СУБД подержки связности БД не используется никак. Т.е. с точки зрения сервера СУБД это груда (десятки тысяч) таблиц где не настроены даже отношения типа PrimaryKey <-> Forign Key.

3) Если сервер приложений понимает пункт 1 и умеет пункт 2, то почему бы не использовать резервное копирование при помощи средств сервера СУБД?
Более того, я наблюдал ситуацию когда люди делели резервные копии SAP при помощи файловых операций (Solaris 10, Oracle 10, Sap NW7). Т.к. ландшафт был не загружен, а система резервного копирования очень быстрая (SAN + VTL), то проблем у них не было.

ITER
Advanced member
Сообщения: 306
Зарегистрирован: 13 июл 2003, 10:01
Откуда: Хабаровский край

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение ITER » 17 июн 2012, 02:45

diz писал(а):Я говорил про транзакцию с точки зрения СП. Т.е. если допустить что транзакция БД не равна транзакции СП (бизнес-логики), то не важно, каким образом бы осуществлялся бэкап БД, он бы всегда был неконсистентен с т.з. СП, т.к., действительно, в момент бэкапа работа не останавливается и в бэкап бы попала часть завершенных транзакций с точки зрения БД, но при этом задачи с т.з. бизнес-логики были бы не завершены.
Равна транзакция БД транзакции СП или не равна какое это имеет значение в вопросах бэкапа-восстановления СУБД. Никакого!

reallord
Junior member
Сообщения: 17
Зарегистрирован: 14 июн 2012, 11:36
Откуда: Нижний Новгород

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение reallord » 18 июн 2012, 08:35

А тема то была про offhost backup :)

Аватара пользователя
diz
Advanced member
Сообщения: 1189
Зарегистрирован: 12 янв 2009, 12:09
Откуда: Пермь

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение diz » 18 июн 2012, 09:25

ITER писал(а):Равна транзакция БД транзакции СП или не равна какое это имеет значение в вопросах бэкапа-восстановления СУБД. Никакого!
Ну давайте на примере.

Надо перевести 100 баксов с счета Пети на счет Васи. В рамках СП и бизнес-логики это одна транзакция. Если бы в рамках СУБД это делалось n транзакциями (-100 из клетки Пети, отдельно +100 в клетку Васи, еще куча каких-то вспомогательных изменений), то случись бэкап БД между этими транзакциями, то при восстановлении из него он бы хоть и был целостным с т.з. БД, но с т.з. бизнес-логики там был бы полный атас: у Пети денег сняли, а Вася их не получил.
reallord писал(а):А тема то была про offhost backup :)
Как успехи?

reallord
Junior member
Сообщения: 17
Зарегистрирован: 14 июн 2012, 11:36
Откуда: Нижний Новгород

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение reallord » 18 июн 2012, 13:57

diz писал(а):
reallord писал(а):А тема то была про offhost backup :)
Как успехи?
Успехи есть, доки докурил, жду дополнительную HBA карту, чтобы потестировать.

ITER
Advanced member
Сообщения: 306
Зарегистрирован: 13 июл 2003, 10:01
Откуда: Хабаровский край

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение ITER » 19 июн 2012, 02:05

diz писал(а):Ну давайте на примере.

Надо перевести 100 баксов с счета Пети на счет Васи. В рамках СП и бизнес-логики это одна транзакция. Если бы в рамках СУБД это делалось n транзакциями (-100 из клетки Пети, отдельно +100 в клетку Васи, еще куча каких-то вспомогательных изменений), то случись бэкап БД между этими транзакциями, то при восстановлении из него он бы хоть и был целостным с т.з. БД, но с т.з. бизнес-логики там был бы полный атас: у Пети денег сняли, а Вася их не получил.
Что значит "Если бы в рамках СУБД это делалось n транзакциями"? Что за если бы? Это СУБД сама будет разбивать транзакцию на части? Что за бред? Если СП делает некую свою транзакцию с помощью нескольких транзакций СУБД, то что нужно делать в случае падения, когда не все транзакции СУБД прошли это дело исключительно СП. Он сам должен повторять нужные транзакции, откатывать выполненные или что там ещё. С точки зрения бэкапа нам на этого глубо наплевать. Иначе бы СП разваливался при банальном падении СУБД.

reallord
Junior member
Сообщения: 17
Зарегистрирован: 14 июн 2012, 11:36
Откуда: Нижний Новгород

Re: Как бэкапить данные MS SQL 2008 + HP MSA2000 G3 SAS

Сообщение reallord » 19 июн 2012, 09:03

ITER писал(а):
diz писал(а):Ну давайте на примере.

Надо перевести 100 баксов с счета Пети на счет Васи. В рамках СП и бизнес-логики это одна транзакция. Если бы в рамках СУБД это делалось n транзакциями (-100 из клетки Пети, отдельно +100 в клетку Васи, еще куча каких-то вспомогательных изменений), то случись бэкап БД между этими транзакциями, то при восстановлении из него он бы хоть и был целостным с т.з. БД, но с т.з. бизнес-логики там был бы полный атас: у Пети денег сняли, а Вася их не получил.
Что значит "Если бы в рамках СУБД это делалось n транзакциями"? Что за если бы? Это СУБД сама будет разбивать транзакцию на части? Что за бред? Если СП делает некую свою транзакцию с помощью нескольких транзакций СУБД, то что нужно делать в случае падения, когда не все транзакции СУБД прошли это дело исключительно СП. Он сам должен повторять нужные транзакции, откатывать выполненные или что там ещё. С точки зрения бэкапа нам на этого глубо наплевать. Иначе бы СП разваливался при банальном падении СУБД.
Это не совсем так... База не развалиться, но могут быть ситуации, когда в базе есть документы которые по бизнес-логике должны делать движения, но не делают их.
Или наоборот, могут быть документы которые делают движения, но не являются проведенными.
С другой стороны если база восстановлена из бэкапа, а он точно не содержит ВСЕХ данных, так как сделан все равно с какой-то периодичностью, то пару кривых проводок или ошибок это самое малое за что придется отвечать. Есть еще время остановки сервиса, время на восстановление работоспособности и т.п.
Как раз вот время на восстановление, это самое больное. При размере баз 2-3Tb, время на восстановление с бэкапа по 1Гб сети просто неприлично много.

Ответить

Вернуться в «Серверы - ПО, Базы Данных и их использование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей