Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
Доброго времени уважаемые форумчане.
По необходимости появилась необходимость восстановить базу из резервной копии по состоянию на 17 декабря. Все хорошо, бэкапы делаются, взялся за восстановление. Пользовался MSSQL Studio. Вроде как все просто. Создаем новую базу, По необходимой базе кликаем правой кнопкой, Восстановить, указываем в качестве источника родительскую базу, в качестве результата - тестовую. В интервале времени - выбираем нужную дату и вперед.
И вот на этом этапе начинаются чудеса. База исходная встает на "Восстановление из копии" С тестовой базой ничего не происходит.
Через некоторое время, я обнаружил, что бэкапы из SQL не выполнялись по причине переноса виртуальной машины с сервером 1С и MSSQL на другой RAID-контроллер, в следствии чего скуль ругался на изменение размера кластера на устройстве резервного копирования. Как итог, резервные копии базы есть только от 16-06-2018 и бэкап файла журнала транзакций, размеров в 1,6ГБ.
-
Внимание вопрос: Есть ли хотя бы теоретическая возможность на основании имеющихся данных - восстановить утраченные за 3 месяца данные?
-
Я совсем новичок в вопросах MSSQL и понимаю, что я где то накосячил. Вопрос в том где именно и как избежать повторения таких ситуаций в будущем? Систему резервного копирования я переделал, пересоздал устройства резервного копирования и выполнил тестовое задание по резервированию баз. Теперь все работает нормально. Мне очень нужна Ваша помощь!
25 дек 18, 16:09    [21773092]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Danion
Member

Откуда: Москва
Сообщений: 203
Siver,

Что в результате с бекапами? "Все хорошо, бэкапы делаются" или бэкапы из SQL не выполнялись?

Вы хотели восстановить бекап в новую базу с другим именем? Там нужно указывать восстановление с перемещением, новые имена файлов. У SSMS заметил особенность: начали восстанавливать в тестовую базу, выбрали бекап с диска - название перезаписываемой базы изменилось на ту, что была в бекапе. Это нужно отследить и поправить обратно, иначе с включенной перезаписью можно потерять исходную.

Исходная база в каком состоянии, случаем не по схеме из моего прошлого пункта пошло?
25 дек 18, 16:18    [21773107]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
Danion,

я был уверен, в том, что бэкапы делаются. так как бекапы проводятся в 2 этапа, первый это сам скуль бэкапит базы на локальный диск, второй, это сторонняя софтина забирает данные с локального диска, запихивает их в зашифрованный архив и складывает на сетевую шару. Вот второй этап - работал без сбоев, создавая на шаре архивы с датами, все как положено. Проблема в том, что во всех этих архивах информация от 16-08-2017. То есть первый этап как остановился на 16 августа, так эта инфа и множилась. А мозгов, для того что бы проверить содержимое архива - у меня не хватило.
-
25 дек 18, 16:28    [21773120]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
invm
Member

Откуда: Москва
Сообщений: 9347
Выполните
restore headeronly from disk = резервная копии базы есть только от 16-06-2018
restore headeronly from disk = бэкап файла журнала транзакций

И покажите FirstLSN и LastLSN из результирующих наборов.
25 дек 18, 17:20    [21773163]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
Siver
Как итог, резервные копии базы есть только от 16-06-2018 и бэкап файла журнала транзакций, размеров в 1,6ГБ.
То есть бакапов журнала тоже нет? Новых не делалось, либо старые стирались?
25 дек 18, 17:45    [21773184]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
alexeyvg,

простите мне мою неосведомленность - но я не знаю =) имеется только то, что я указал выше а именно резервная копия БД от 16-08 и резервная копия журнала транзакций этой же базы от 24-12 сего года.
25 дек 18, 19:15    [21773274]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
invm,

сейчас уже дома и не смог подключиться к серверу по удаленке. Завтра прямо с утра сделаю. Буду очень признателен, если подскажете сразу, где именно это нужно выполнить?
25 дек 18, 19:16    [21773275]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
invm
Member

Откуда: Москва
Сообщений: 9347
Siver
Буду очень признателен, если подскажете сразу, где именно это нужно выполнить?
В Management Studio.
25 дек 18, 19:37    [21773293]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
invm,

Я понял, что используется Management Studio. У меня там 16 баз. мне нужно кликнуть по нужной бази и выбрать "создать запрос" ? или "Задачи" - "Создать резервную копию" и там по отдельности создать еще раз бэкап старой базы и повторно по тем же меню, но создать бекап файла транзакций ?
26 дек 18, 00:02    [21773471]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
у меня есть 2 фала
база - backup_UZBI.bak (1 205 397 KB) от 16 08 2018
журнал - UZBI_LogBackup_2018_12_24_21_10_23.bak (1 675 642 KB) от 24 12 2018
-
в самом SQL сейчас есть база UZBI которая развернута из фала базы. При подключении в 1С к этой базе там последняя запись от 16 08 2018.
-
Я действительно только что столкнулся с MSSQL вообще и с подобными проблемами в частности. Я готов заплатить за решение если оно есть и предоставить удаленный доступ. Просто я боюсь, что моей компетенции нулевой - не хватит даже для того что бы последовать Вашим советам. Я не ленивый, правда, у меня просто нет времени от слова совсем. Три рабочих дня осталось...
26 дек 18, 00:12    [21773475]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
komrad
Member

Откуда:
Сообщений: 5244
Siver,

в студии нажмите кнопку New Query и выполните команды, которые попросил invm ("И покажите FirstLSN и LastLSN из результирующих наборов.")

restore headeronly from disk='...\backup_UZBI.bak'
restore headeronly from disk='...\UZBI_LogBackup_2018_12_24_21_10_23.bak'


замените три точки на полный путь до файла
26 дек 18, 00:52    [21773492]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
komrad,

спасибо большое!!!
--
для базы - FirstLSN 224000002606800131, LastLSN 224000002613100001
для файла журнала FirstLSN 194000002252800289, LastLSN 247000008034300001
26 дек 18, 01:11    [21773497]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
invm
Member

Откуда: Москва
Сообщений: 9347
Siver
для базы - FirstLSN 224000002606800131, LastLSN 224000002613100001
для файла журнала FirstLSN 194000002252800289, LastLSN 247000008034300001
Можно восстановить БД и накатить бекап лога.
Только сначала на кошках потренируйтесь.
26 дек 18, 09:52    [21773597]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
invm,

буду категорически Вам признателен, если Вы мне на пальцах объясните как это сделать! Потому что я не в состоянии ... навыков и знаний не хватает
26 дек 18, 10:00    [21773603]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
все что смог найти в интернете - не помоглопробовал создавать пустую базу и накатывать туда сначала бекап базы - потом оставшийся файл транзакций, и получал сообщение либо о невозможности восстановить данные потому что путь не согласован либо что то типа "отсутствуют файлы для наката"
26 дек 18, 10:05    [21773609]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
все что смог найти в интернете - не помоглопробовал создавать пустую базу и накатывать туда сначала бекап базы - потом оставшийся файл транзакций, и получал сообщение либо о невозможности восстановить данные потому что путь не согласован либо что то типа "отсутствуют файлы для наката"
26 дек 18, 10:32    [21773644]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
invm
Member

Откуда: Москва
Сообщений: 9347
Восстановить в текущую БД
use master;
alter database MyDB set single_user with rollback immediate;

restore database MyDB from disk = 'полный бекап' with replace, norecovery;
restore log MyDB from disk = 'бекап журнала' with recovery;


Восстановить в новую БД
restore database MyNewDB from disk = 'полный бекап' with
 move 'Логическое имя1' to 'Новое расположение файла1',
 ...
 move 'Логическое имяN' to 'Новое расположение файлаN',
 norecovery;
restore log MyNewDB from disk = 'бекап журнала' with recovery;
Соответствие логических имен файлам можно узнать из результата
restore filelistonly from disk = 'полный бекап';


Прежде чем что-то делать изучите документацию - https://docs.microsoft.com/ru-ru/sql/relational-databases/backup-restore/back-up-and-restore-of-sql-server-databases?view=sql-server-2017
26 дек 18, 11:05    [21773672]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
invm,

выполнил Вашу инструкцию следующим образом:
1. создал базу TEST
2. выполнил скрипт вида
+
DBCC CHECKDB
restore database TEST from disk = 'G:\backup\1111\1\backup_UZBI.bak' with
move 'F:\1c\UZBI.mdf' to 'G:\backup\1111\1\UZBI.mdf',
move 'D:\logs\UZBI_log.ldf' to 'G:\backup\1111\1\UZBI_log.ldf',
norecovery;
restore log TEST from disk = 'G:\backup\1111\1\uzbi.bak' with recovery;

где путь G:\backup\1111\1\ - временное хранилище в котором лежат файлы полной копии и файл журнала
команда restore filelistonly from disk = 'G:\backup\1111\1\backup_UZBI.bak'; выдала следующий результат
+
LogicalName PhysicalName
UZBI F:\1c\UZBI.mdf
UZBI_log D:\logs\UZBI_log.ldf

в итоге выполнение восстановления в новую БД заняло около 20 секунд и выдало результат
+
Результаты DBCC для "UZBI".
CHECKDB обнаружил 0 ошибок размещения и 0 ошибок согласованности в базе данных "UZBI".
Выполнение DBCC завершено. Если DBCC выдает сообщения об ошибках, обратитесь к системному администратору.
Сообщение 3154, уровень 16, состояние 4, строка 2
Резервный набор данных содержит копию базы данных, отличной от существующей базы данных "TEST".
Сообщение 3013, уровень 16, состояние 1, строка 2
RESTORE DATABASE прервано с ошибкой.
Сообщение 3154, уровень 16, состояние 4, строка 6
Резервный набор данных содержит копию базы данных, отличной от существующей базы данных "TEST".
Сообщение 3013, уровень 16, состояние 1, строка 6
RESTORE LOG прервано с ошибкой.

--
куда копать дальше ? или что я сделал не так?
-
за ссылку большое спасибо, обязательно прочту!
26 дек 18, 11:38    [21773704]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
invm,

попытка выполнить запрос вида
+
use master;
alter database UZBI set single_user with rollback immediate;

restore database UZBI from disk = 'G:\backup\1111\1\backup_UZBI.bak' with replace, norecovery;
restore log UZBI from disk = 'G:\backup\1111\1\UZBI.bak' with recovery;

привела к результату
+
Неуточненные транзакции проходят откат. Предварительно выполнение отката: 0%.
Неуточненные транзакции проходят откат. Предварительно выполнение отката: 100%.
Обработано 151384 страниц для базы данных "UZBI", файл "UZBI" для файла 1.
Обработано 4 страниц для базы данных "UZBI", файл "UZBI_log" для файла 1.
RESTORE DATABASE успешно обработал 151388 страниц за 15.211 секунд (77.754 MБ/сек).
Сообщение 4330, уровень 16, состояние 1, строка 5
Невозможно применить резервный набор данных, так как он находится на пути восстановления, который не согласован с базой данных. Путь восстановления - это последовательность данных и резервных копий журналов, проходя через которые, база данных достигает определенной точки восстановления. Найдите совместимую резервную копию для восстановления или восстановите остальную часть базы данных для соответствия точке восстановления в пределах данного резервного набора, который восстановит базу данных к другому моменту времени. Дополнительные сведения о путях восстановления см. в электронной документации по SQL Server.
Сообщение 3013, уровень 16, состояние 1, строка 5
RESTORE LOG прервано с ошибкой.
26 дек 18, 11:53    [21773711]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Danion
Member

Откуда: Москва
Сообщений: 203
Siver,

Restor с move у Вас кривой.
По Вашему примеру:
restore database TEST from disk = 'G:\backup\1111\1\backup_UZBI.bak' with
move 'UZBI' to 'G:\backup\1111\1\UZBI.mdf',
move 'UZBI_log' to 'G:\backup\1111\1\UZBI_log.ldf',
norecovery;
restore log TEST from disk = 'G:\backup\1111\1\uzbi.bak' with recovery;


Файлов UZBI.mdf и UZBI_log.ldf по пути G:\backup\1111\1\ сейчас же нет?

После move нужно указать логическое имя файла из бекапа, а не физическое mdf\ldf.

К сообщению приложен файл. Размер - 42Kb
26 дек 18, 15:20    [21773912]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
Danion,

Спасибо Вам за помощь. В результате выполнения написанного Вами запроса ответ получился таким
+
Сообщение 3154, уровень 16, состояние 4, строка 2
Резервный набор данных содержит копию базы данных, отличной от существующей базы данных "UZBI".
Сообщение 3013, уровень 16, состояние 1, строка 2
RESTORE DATABASE прервано с ошибкой.
Сообщение 3154, уровень 16, состояние 4, строка 6
Резервный набор данных содержит копию базы данных, отличной от существующей базы данных "UZBI".
Сообщение 3013, уровень 16, состояние 1, строка 6
RESTORE LOG прервано с ошибкой.
26 дек 18, 15:40    [21773938]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Danion
Member

Откуда: Москва
Сообщений: 203
Siver,

Подобная ошибка, если пытаться перезаписать существующие файлы.

До этого спрашивал:
"Файлов UZBI.mdf и UZBI_log.ldf по пути G:\backup\1111\1\ сейчас же нет?"
Для перезаписи используется replace, но Вы можете и что-то нужное перезаписать...

Попробуйте этот вариант. И текущее не перезапишите и вряд ли база\файлы TEST1234 есть.
 USE [master]
restore database TEST1234 from disk = 'G:\backup\1111\1\backup_UZBI.bak' with
move 'UZBI' to 'G:\backup\1111\1\TEST1234.mdf',
move 'UZBI_log' to 'G:\backup\1111\1\TEST1234_log.ldf',
norecovery;
restore log TEST from disk = 'G:\backup\1111\1\uzbi.bak' with recovery;
26 дек 18, 16:04    [21773970]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
Danion,

+
Обработано 151384 страниц для базы данных "TEST1234", файл "UZBI" для файла 1.
Обработано 4 страниц для базы данных "TEST1234", файл "UZBI_log" для файла 1.
RESTORE DATABASE успешно обработал 151388 страниц за 13.058 секунд (90.574 MБ/сек).
Сообщение 4330, уровень 16, состояние 1, строка 6
Невозможно применить резервный набор данных, так как он находится на пути восстановления, который не согласован с базой данных. Путь восстановления - это последовательность данных и резервных копий журналов, проходя через которые, база данных достигает определенной точки восстановления. Найдите совместимую резервную копию для восстановления или восстановите остальную часть базы данных для соответствия точке восстановления в пределах данного резервного набора, который восстановит базу данных к другому моменту времени. Дополнительные сведения о путях восстановления см. в электронной документации по SQL Server.
Сообщение 3013, уровень 16, состояние 1, строка 6
RESTORE LOG прервано с ошибкой.
26 дек 18, 16:14    [21773982]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Danion
Member

Откуда: Москва
Сообщений: 203
Siver,

Да, до этого была попытка перезаписать существующие файлы.

invm написал:
"Можно восстановить БД и накатить бекап лога.
Только сначала на кошках потренируйтесь. "

Я, честно говоря, не помню, как по LSN определить относятся ли файлы к одной цепочке бекапов. Но у меня возник вопрос:
У бекапа лога расширение .trn, что тогда такое:
"журнал - UZBI_LogBackup_2018_12_24_21_10_23.bak (1 675 642 KB) от 24 12 2018" Это не diff случаем?
26 дек 18, 16:30    [21773996]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из журнала транзакций  [new]
Siver
Member

Откуда: Челябинск
Сообщений: 21
Danion,

я писал выше, этот файл сформировался как раз в момент ошибочной перезаписи базы, после, когда я пробовал своими силами и мыслишкой все восстановить - при перезаписи тестовой базы - у меня формировались похожие файлы и в процессе их создания писалось что то вроде "бэкап журнала транзакций". Поэтому я решил, что это он и есть.
26 дек 18, 16:33    [21774002]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить