powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Восстановление базы MS SQL из резервной копии
12 сообщений из 12, страница 1 из 1
Восстановление базы MS SQL из резервной копии
    #40002951
SV056
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеем резервный набор данных:
- Полный бэкап БД
+
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
Восстановление базы MS SQL из резервной копии
    #40002956
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если база открыта (восстановление из последнего бакапа лога было с 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
Восстановление базы MS SQL из резервной копии
    #40002959
SV056
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ.
База сейчас в режиме 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
Восстановление базы MS SQL из резервной копии
    #40002983
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Восстановление базы MS SQL из резервной копии
    #40003028
SV056
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У нас нет отдельно лежащего журнала транзакции в файле trn, а есть только резервный набор данных в файле bak с полным бэкапом и двумя журналами транзакций.
Нужный нам бэкап журнала транзакций был сохранен в резервный набор данных для возможности отката перед обновлением, затем произошёл сбой и появилась необходимость отката к сохраненному состоянию базы.
Что невозможно, т.к СУБД отказывается выборочно накатывать журнал транзакций, включая в набор данных и созданную ранее информацию, которая уже есть в базе.
Т. Е есть 1 журнал транзакций, и база в котой эта инфа уже есть. И 2 журнал транзакций которого в базе нет.
Нужно накатить только 2 журнал транзакций, но так сделать не получается. Т. К. в bak файле одновременно лежат два журнала транзакций. И пытаются накатиться транзакции из bak файла набора 1которые уже есть в СУБД , о чем СУБД и сообщает.
Также после сбоя был выполнен ещё один полный бэкап и журнал транзакций. .
...
Рейтинг: 0 / 0
Восстановление базы MS SQL из резервной копии
    #40003091
SV056
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[img=]
...
Рейтинг: 0 / 0
Восстановление базы MS SQL из резервной копии
    #40003100
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Восстановление базы MS SQL из резервной копии
    #40003194
SV056
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По итогу.

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


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
Восстановление базы MS SQL из резервной копии
    #40003292
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SV056
То есть даже при наличии сохраненного журнала транзакции средствами базы, после события бакапа Acronis-ом делает его бесполезным, так как нарушена цепочка последовательности из-за физически отсутствующего первого бакапа журнала транзакций в резервной копии Acronis-а.
Да, известная бага, почему то многие программы централизованного управления резервным копированием по умолчанию рушат последовательности бакапов сиквела.
Не знаю, зачем так сделано, но факт, нужно за этим параметром следить.
...
Рейтинг: 0 / 0
Восстановление базы MS SQL из резервной копии
    #40003711
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Два последовательных бэкапа,- и при этом попытка выбрать в качестве отправной точки первый бэкап?

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

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

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

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

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


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

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


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