|
Восстановление базы MS SQL из резервной копии
|
|||
---|---|---|---|
#18+
Имеем резервный набор данных: - Полный бэкап БД + 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 - не дает восстановиться из журнального файла? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 21:07 |
|
Восстановление базы MS SQL из резервной копии
|
|||
---|---|---|---|
#18+
Если база открыта (восстановление из последнего бакапа лога было с 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 21:21 |
|
Восстановление базы MS SQL из резервной копии
|
|||
---|---|---|---|
#18+
Спасибо за ответ. База сейчас в режиме 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 21:40 |
|
Восстановление базы MS SQL из резервной копии
|
|||
---|---|---|---|
#18+
SV056 База сейчас в режиме NORECOVERY. Что мешает накатить последний лог L 2020-09-25 17:14:22.000 199441000020554600001 199417000011515700238 0 Код: sql 1.
SV056 Как пропустить ненужный и устаревший лог:И зачем он вам нужет если есть полный от 2020-09-24 22:00:23. Ну кривой у вас лог бакап от L 2020-09-24 20:51:35.000 и что, ну выпадет у вас два часа на которые можно восстановится. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 01:38 |
|
Восстановление базы MS SQL из резервной копии
|
|||
---|---|---|---|
#18+
У нас нет отдельно лежащего журнала транзакции в файле trn, а есть только резервный набор данных в файле bak с полным бэкапом и двумя журналами транзакций. Нужный нам бэкап журнала транзакций был сохранен в резервный набор данных для возможности отката перед обновлением, затем произошёл сбой и появилась необходимость отката к сохраненному состоянию базы. Что невозможно, т.к СУБД отказывается выборочно накатывать журнал транзакций, включая в набор данных и созданную ранее информацию, которая уже есть в базе. Т. Е есть 1 журнал транзакций, и база в котой эта инфа уже есть. И 2 журнал транзакций которого в базе нет. Нужно накатить только 2 журнал транзакций, но так сделать не получается. Т. К. в bak файле одновременно лежат два журнала транзакций. И пытаются накатиться транзакции из bak файла набора 1которые уже есть в СУБД , о чем СУБД и сообщает. Также после сбоя был выполнен ещё один полный бэкап и журнал транзакций. . ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 12:01 |
|
Восстановление базы MS SQL из резервной копии
|
|||
---|---|---|---|
#18+
[img=] ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 16:05 |
|
Восстановление базы MS SQL из резервной копии
|
|||
---|---|---|---|
#18+
SV056 У нас нет отдельно лежащего журнала транзакции в файле trn, а есть только резервный набор данных в файле bak с полным бэкапом и двумя журналами транзакций. Вам надо узнать номер позиции вашего файла. Только как гуем восстанавливать я не подскажу ибо ни разу не делал. Выполните Код: sql 1.
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 16:51 |
|
Восстановление базы MS SQL из резервной копии
|
|||
---|---|---|---|
#18+
По итогу. В последовательности бэкапов: 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-а. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 07:40 |
|
Восстановление базы MS SQL из резервной копии
|
|||
---|---|---|---|
#18+
SV056 То есть даже при наличии сохраненного журнала транзакции средствами базы, после события бакапа Acronis-ом делает его бесполезным, так как нарушена цепочка последовательности из-за физически отсутствующего первого бакапа журнала транзакций в резервной копии Acronis-а. Не знаю, зачем так сделано, но факт, нужно за этим параметром следить. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 12:09 |
|
Восстановление базы MS SQL из резервной копии
|
|||
---|---|---|---|
#18+
Два последовательных бэкапа,- и при этом попытка выбрать в качестве отправной точки первый бэкап? На одном из серваков, в дополнение к стандартной процедуре ( Утренний полный бэкап + дифференцированные бэкапы в течении дня ) добавили для перестраховки повторный утренний бэкап на сторонний диск (повторный бэкап конечно же делался уже после основного) . При этом "дублирующий" бэкап особо не хранился - его через сутки благополучно убивали (и затирали новым). В один прекрасный момент ребята решили восстановить базу из вчерашнего Утреннего (основного) бэкапа и диф.бэкапа (который делался в тот же день но уже ближе к вечеру). После какой-то там неудачной попытки позвонили мне типа "какого хрена?". Ну..., я только развёл руками... PS Как всегда "мы ни чего не делали" и "оно само"... PPS А возможно, что "засада" кроется изначально в самом механизме "стороних" бэкапов когда разработчики средств бэкапирования ориентируются не на структуру файлов сиквела а на состояния файла и диска (кажется, у Русиновича читал про "безопасное" состояние, которое выставляется на уровне ОС (флагом?) и даёт понять, что в этот момент можно бэкапировать данные как валидные и непротиворечивые). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2020, 00:02 |
|
Восстановление базы MS SQL из резервной копии
|
|||
---|---|---|---|
#18+
SIMPLicity_, Делать бекап НЕ ДОСТАТОЧНО в любом случае. Нужно еще делать контрольное восстановление, желательно на другом устройстве. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2020, 03:25 |
|
Восстановление базы MS SQL из резервной копии
|
|||
---|---|---|---|
#18+
Relic Hunter SIMPLicity_, Делать бекап НЕ ДОСТАТОЧНО в любом случае. Нужно еще делать контрольное восстановление, желательно на другом устройстве. Вечное: "Все dba делятся на две категории: одни делают бэкапы, другие - будут делать" . А вот восстанавливают - единицы. Как правило - это те, кто однажды сильно обжёгся. Хотя в любом учебнике вторым пунктом прописано о стратегии восстановления. P.S. Сам вчерашней ночью удачно забэкапился,- и уже пять часов спустя восстанавливал случайно прибитую базу из бэкапа,- по счастью с двух ночи до 8 утра торгпреды "в полях" ночью не работали. Повезло. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2020, 11:45 |
|
|
start [/forum/topic.php?fid=46&msg=40003292&tid=1685596]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 251ms |
total: | 371ms |
0 / 0 |