Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Восстановление базы MS SQL из резервной копии / 12 сообщений из 12, страница 1 из 1
26.09.2020, 21:07
    #40002951
SV056
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление базы MS SQL из резервной копии
Имеем резервный набор данных:
- Полный бэкап БД
+
2 резервные копии журнала транзакций.
А также текущее состояние базы в котором уже есть данные из 1 журнала транзакций.
Данные в текущей базе более новые относительно 1 журнала транзакций. Т.е. текущее состояние базы уже содержит его.
Нужно восстановить (докатить) состояние текущей базы до состояния указанного во 2 журнальном файле транзакций.

D 2020-09-24 20:00:32.000 199417000004423300042 199384000009363400152 0
L 2020-09-24 20:51:35.000 199417000006476400001 199417000004423300042 0 - не дает восстановиться
D 2020-09-24 22:00:23.000 199417000011515700238 199417000004423300042 0
L 2020-09-24 23:03:03.000 199417000013575800001 199417000011515700238 0 - текущее состояние базы
L 2020-09-25 17:14:22.000 199441000020554600001 199417000011515700238 0 - Нужно восстановиться до него
D 2020-09-25 20:40:45.000 199442000007383900072 199417000011515700238 0
L 2020-09-25 21:38:29.000 199442000007383900072 199442000007383900072 0

При этом при восстановлении:
Журнал в этом резервном наборе данных начинается с номера LSN 199417000014391800001, который еще не может применяться к базе данных. Может быть восстановлена более ранняя резервная копия журналов, включающая номер LSN 199417000011525400001.
RESTORE LOG прервано с ошибкой.

Как извлечь резервную копию журнала транзакций из резервного набора данных?
Убрав
L 2020-09-24 20:51:35.000 199417000006476400001 199417000004423300042 0 - не дает восстановиться
из журнального файла?
...
Рейтинг: 0 / 0
26.09.2020, 21:21
    #40002956
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление базы MS SQL из резервной копии
Если база открыта (восстановление из последнего бакапа лога было с RECOVERY) донакатить уже нельзя (штатно)
Надо восстановить полный из
D 2020-09-24 22:00:23.000 199417000011515700238 199417000004423300042 0
и оба лога
L 2020-09-24 23:03:03.000 199417000013575800001 199417000011515700238 0
L 2020-09-25 17:14:22.000 199441000020554600001 199417000011515700238 0
...
Рейтинг: 0 / 0
26.09.2020, 21:40
    #40002959
SV056
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление базы MS SQL из резервной копии
Спасибо за ответ.
База сейчас в режиме NORECOVERY.
Восстановлена из :
D 2020-09-24 22:00:23.000 199417000011515700238 199417000004423300042 0
L 2020-09-24 23:03:03.000 199417000013575800001 199417000011515700238 0

Есть резервный набор данных состоящий из:
D 2020-09-24 20:00:32.000 199417000004423300042 199384000009363400152 0
L 2020-09-24 20:51:35.000 199417000006476400001 199417000004423300042 0
L 2020-09-25 17:14:22.000 199441000020554600001 199417000011515700238 0

При попытке восстановиться из этого набора возникает ошибка:
Журнал в этом резервном наборе данных начинается с номера LSN 199417000014391800001, который еще не может применяться к базе данных. Может быть восстановлена более ранняя резервная копия журналов, включающая номер LSN 199417000011525400001.

Как пропустить ненужный и устаревший лог:
L 2020-09-24 20:51:35.000 199417000006476400001 199417000004423300042 0

и восстановить только из последнего нужного:
L 2020-09-25 17:14:22.000 199441000020554600001 199417000011515700238 0
...
Рейтинг: 0 / 0
27.09.2020, 01:38
    #40002983
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление базы MS SQL из резервной копии
SV056 База сейчас в режиме NORECOVERY.
Что мешает накатить последний лог L 2020-09-25 17:14:22.000 199441000020554600001 199417000011515700238 0
Код: sql
1.
RESTORE LOG myDatabase FROM DISK='myLogbackup2020-09-25 17:14:22.trn' with recovery


SV056 Как пропустить ненужный и устаревший лог:И зачем он вам нужет если есть полный от 2020-09-24 22:00:23.
Ну кривой у вас лог бакап от L 2020-09-24 20:51:35.000 и что, ну выпадет у вас два часа на которые можно восстановится.
...
Рейтинг: 0 / 0
27.09.2020, 12:01
    #40003028
SV056
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление базы MS SQL из резервной копии
У нас нет отдельно лежащего журнала транзакции в файле trn, а есть только резервный набор данных в файле bak с полным бэкапом и двумя журналами транзакций.
Нужный нам бэкап журнала транзакций был сохранен в резервный набор данных для возможности отката перед обновлением, затем произошёл сбой и появилась необходимость отката к сохраненному состоянию базы.
Что невозможно, т.к СУБД отказывается выборочно накатывать журнал транзакций, включая в набор данных и созданную ранее информацию, которая уже есть в базе.
Т. Е есть 1 журнал транзакций, и база в котой эта инфа уже есть. И 2 журнал транзакций которого в базе нет.
Нужно накатить только 2 журнал транзакций, но так сделать не получается. Т. К. в bak файле одновременно лежат два журнала транзакций. И пытаются накатиться транзакции из bak файла набора 1которые уже есть в СУБД , о чем СУБД и сообщает.
Также после сбоя был выполнен ещё один полный бэкап и журнал транзакций. .
...
Рейтинг: 0 / 0
27.09.2020, 16:05
    #40003091
SV056
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление базы MS SQL из резервной копии
[img=]
...
Рейтинг: 0 / 0
27.09.2020, 16:51
    #40003100
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление базы MS SQL из резервной копии
SV056 У нас нет отдельно лежащего журнала транзакции в файле trn, а есть только резервный набор данных в файле bak с полным бэкапом и двумя журналами транзакций.
Вам надо узнать номер позиции вашего файла. Только как гуем восстанавливать я не подскажу ибо ни разу не делал.
Выполните
Код: sql
1.
RESTORE HEADERONLY  FROM DISK='your_big_backup_file.bak'


https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-headeronly-transact-sql?view=sql-server-ver15
Эта команда не будет восстанавливать, но в выведет список бакапов в файле. Вам нужно поле Position. Полагаю у вашего бакапа (второго лог бакапа) должно быть 3
Далее надо накатить только этот бакап (FILE=3)

Код: sql
1.
RESTORE LOG myDatabase FROM DISK='your_big_backup_file.bak' with FILE=3, recovery
...
Рейтинг: 0 / 0
28.09.2020, 07:40
    #40003194
SV056
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление базы MS SQL из резервной копии
По итогу.

В последовательности бэкапов:


D 2020-09-24 20:00:32.000 199417000004423300042 199384000009363400152 0
L 2020-09-24 20:51:35.000 199417000006476400001 199417000004423300042 0
D 2020-09-24 22:00:23.000 199417000011515700238 199417000004423300042 0
L 2020-09-24 23:03:03.000 199417000013575800001 199417000011515700238 0
L 2020-09-25 17:14:22.000 199441000020554600001 199417000011515700238 0
D 2020-09-25 20:40:45.000 199442000007383900072 199417000011515700238 0
L 2020-09-25 21:38:29.000 199442000007383900072 199442000007383900072 0


физически отсутствует бакап журнала транзакций
L 2020-09-24 23:03:03.000 199417000013575800001 199417000011515700238 0
так как он выполнялся Acronis-ом и он не содержится в резервной копии, а только файлы базы и журнала на уровне файловой системы, к тому же Acronis по-умолчанию делает усечение журнала транзакций и делает невозможным дальнейший накат журналов согласно инструкции: https://acronis-infoprotect.ru/ru-RU/support/documentation/AcronisDataProtection/12.5/user/index.html#36346.html


Цитата: "Сокращение журнала
Этот параметр применим для резервного копирования баз данных Microsoft SQL Server и резервного копирования на уровне дисков с включенным резервным копированием приложения Microsoft SQL Server.
Этот параметр определяет, будут ли сокращаться журналы транзакций SQL Server после успешного резервного копирования.
Значение по умолчанию: включено.
Если этот параметр включен, базу данных можно восстановить только по состоянию на тот момент времени, когда этим программным обеспечением была создана резервная копия. Журналы транзакций резервного копирования создаются встроенным модулем архивации Microsoft SQL Server. Можно будет применить журналы транзакций после восстановления и таким образом восстановить базу данных в состояние на любой момент времени."


То есть даже при наличии сохраненного журнала транзакции средствами базы, после события бакапа Acronis-ом делает его бесполезным, так как нарушена цепочка последовательности из-за физически отсутствующего первого бакапа журнала транзакций в резервной копии Acronis-а.
...
Рейтинг: 0 / 0
28.09.2020, 12:09
    #40003292
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление базы MS SQL из резервной копии
SV056
То есть даже при наличии сохраненного журнала транзакции средствами базы, после события бакапа Acronis-ом делает его бесполезным, так как нарушена цепочка последовательности из-за физически отсутствующего первого бакапа журнала транзакций в резервной копии Acronis-а.
Да, известная бага, почему то многие программы централизованного управления резервным копированием по умолчанию рушат последовательности бакапов сиквела.
Не знаю, зачем так сделано, но факт, нужно за этим параметром следить.
...
Рейтинг: 0 / 0
29.09.2020, 00:02
    #40003711
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление базы MS SQL из резервной копии
Два последовательных бэкапа,- и при этом попытка выбрать в качестве отправной точки первый бэкап?

На одном из серваков, в дополнение к стандартной процедуре ( Утренний полный бэкап + дифференцированные бэкапы в течении дня ) добавили для перестраховки повторный утренний бэкап на сторонний диск (повторный бэкап конечно же делался уже после основного) . При этом "дублирующий" бэкап особо не хранился - его через сутки благополучно убивали (и затирали новым).

В один прекрасный момент ребята решили восстановить базу из вчерашнего Утреннего (основного) бэкапа и диф.бэкапа (который делался в тот же день но уже ближе к вечеру). После какой-то там неудачной попытки позвонили мне типа "какого хрена?". Ну..., я только развёл руками... PS Как всегда "мы ни чего не делали" и "оно само"...

PPS А возможно, что "засада" кроется изначально в самом механизме "стороних" бэкапов когда разработчики средств бэкапирования ориентируются не на структуру файлов сиквела а на состояния файла и диска (кажется, у Русиновича читал про "безопасное" состояние, которое выставляется на уровне ОС (флагом?) и даёт понять, что в этот момент можно бэкапировать данные как валидные и непротиворечивые).
...
Рейтинг: 0 / 0
29.09.2020, 03:25
    #40003726
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление базы MS SQL из резервной копии
SIMPLicity_,

Делать бекап НЕ ДОСТАТОЧНО в любом случае. Нужно еще делать контрольное восстановление, желательно на другом устройстве.
...
Рейтинг: 0 / 0
29.09.2020, 11:45
    #40003882
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление базы MS SQL из резервной копии
Relic Hunter
SIMPLicity_,

Делать бекап НЕ ДОСТАТОЧНО в любом случае. Нужно еще делать контрольное восстановление, желательно на другом устройстве.


Вечное: "Все dba делятся на две категории: одни делают бэкапы, другие - будут делать" . А вот восстанавливают - единицы. Как правило - это те, кто однажды сильно обжёгся. Хотя в любом учебнике вторым пунктом прописано о стратегии восстановления.

P.S. Сам вчерашней ночью удачно забэкапился,- и уже пять часов спустя восстанавливал случайно прибитую базу из бэкапа,- по счастью с двух ночи до 8 утра торгпреды "в полях" ночью не работали. Повезло.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Восстановление базы MS SQL из резервной копии / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]