powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Восстановление базы данных из ldf-файла
25 сообщений из 40, страница 1 из 2
Восстановление базы данных из ldf-файла
    #38665233
777ser777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Возможно ли выполнить восстановление базы имея:
1) MDF-файл на начальную дату (месячной давности);
2) LDF-файл на текущую дату.
Бэкап и шринк не делался. Если можно то какими средствами?
Спасибо.
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665241
Фотография Гадя Петрович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665251
Фотография Гадя Петрович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, пардон, не так понял
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665255
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
777ser777Добрый день!
Возможно ли выполнить восстановление базы имея:
1) MDF-файл на начальную дату (месячной давности);
2) LDF-файл на текущую дату.
Бэкап и шринк не делался. Если можно то какими средствами?
Спасибо.
модель восстановления у базы какая была?
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665351
777ser777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex777ser777Добрый день!
Возможно ли выполнить восстановление базы имея:
1) MDF-файл на начальную дату (месячной давности);
2) LDF-файл на текущую дату.
Бэкап и шринк не делался. Если можно то какими средствами?
Спасибо.
модель восстановления у базы какая была?

Full (полная) конечно!
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665512
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Восстанавливаете полный бэкап с norecovery, восстанавливаете бэкап журнала с recovery. Ваш LDF должен принадлежать той забэкапленной базе, разумеется, и иметь резервную копию.
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665580
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
777ser777msLexпропущено...

модель восстановления у базы какая была?

Full (полная) конечно!

Теоретически .

Можно попробовать просто приатачить mdf + ldf файл. Если база подцепится (я не знаю, что может помещать), весь непримененный (тот, что после последнего checkpoint-а) лог должен накатиться на базу, а с учетом того, что checkpoint LSN храниться в самой базе, то проблем возникнуть не должно.



Перед экспериментом желательно скопировать оба файла, дабы иметь еще одну попытку.
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665707
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовВосстанавливаете полный бэкап с norecovery, восстанавливаете бэкап журнала с recovery. Ваш LDF должен принадлежать той забэкапленной базе, разумеется, и иметь резервную копию.Дык нету бакапа, в этом и прикол!
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665725
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexМожно попробовать просто приатачить mdf + ldf файл. Если база подцепится (я не знаю, что может помещать), весь непримененный (тот, что после последнего checkpoint-а) лог должен накатиться на базу, а с учетом того, что checkpoint LSN храниться в самой базе, то проблем возникнуть не должно. База может и подцепится, а вот лог накатываться то уже точно не будет. С таким же успехом можно просто восстановить mdf файл без ldf. Результат скорее всего будет тот же.
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665735
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MindmsLexМожно попробовать просто приатачить mdf + ldf файл. Если база подцепится (я не знаю, что может помещать), весь непримененный (тот, что после последнего checkpoint-а) лог должен накатиться на базу, а с учетом того, что checkpoint LSN храниться в самой базе, то проблем возникнуть не должно. База может и подцепится, а вот лог накатываться то уже точно не будет. С таким же успехом можно просто восстановить mdf файл без ldf. Результат скорее всего будет тот же.
по-чему такая уверенность?
по факту эта ситуация (mdf - месячной давности + "современный" ldf) ничем не отличается от ситуации когда месяц не делался чекпоинт а потом пристрелили процесс sql server-а
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665768
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexпо-чему такая уверенность?Можно снять tail log backup, но накатить его будет не на что - полного бекапа нету. А если подцепить имеющийся mdf месячной давности и сделать полный бекап, то LSN'ы в нем будут уже совершенно другие.
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665773
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmmsLexпо-чему такая уверенность?Можно снять tail log backup, но накатить его будет не на что - полного бекапа нету. А если подцепить имеющийся mdf месячной давности и сделать полный бекап, то LSN'ы в нем будут уже совершенно другие.

либо я вас не понимаю, либо вы меня.

предположим у нас есть база на момент времени t1, mdf и ldf "согласованны", "грязных" страниц нет, checkpoint lsn = последнему lsn в логе.

мы производим некое количество изменений, коммитем их которые, они попадают в лог, но из кеша на диск в mdf не сбрасываются, и того у нас получается mdf на момент t1 и ldf на момент времени t2.

в этот момент мы "жестко" ребутаем сервис, sql server по логу повторно накатит все изменения в mdf и принудительно сделает checkpoint

ситуация автора по сути ничем не отличается, только между t1 и t2 прошел месяц.
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665797
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexситуация автора по сути ничем не отличается, только между t1 и t2 прошел месяц.По сути всё правильно, но сиквел не умеет востанавливать данные на дату ранее, чем сделан бакап.

mdf файл да, старый, но бакап то можно сделать только сейчас, вот и восстановить можно будет на момент "сейчас".

То есть у сиквела маловато возможностей, не предусмотрены операции, которые теоретически можно сделать и даже совсем несложно технически.

Разве что попробовать присоединить файл с включённым аттрибутом read-only, может сиквел не поменяет ему всякие LSN-ы, и сделать бакап...

А вообще это лишний раз напоминает о необходимости делать бакапы. Надеюсь, что 777ser777 из тех специалистов, которые потеряли данные из за отсутствия бакапа единственный раз в жизни, как и положено.
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665798
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
нет, не прокатит.
проверяю так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
create database db8;
go

alter database db8
set recovery full;
go

backup database db8
to disk = 'Z:\Anna\_backups\hp\db8\db8_full.bak';
go

alter database db8
set offline;
go

/* copy .mdf to Z:\Anna\_backups\hp\db8, rename .ldf 

test it on another server:
USE [master]
GO
CREATE DATABASE [db8] ON 
( FILENAME = N'Z:\Anna\_backups\hp\db8\db8.mdf' )
 FOR ATTACH
GO

------------
File activation failure. The physical file name "C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\db8_log.LDF" may be incorrect.
New log file 'Z:\Anna\_backups\hp\db8\db8_log.LDF' was created.

drop database db8;
go

re-copy .mdf to Z:\Anna\_backups\hp\db8, rename .ldf
*/

alter database db8
set online;
go

use db8;
go

with cte as(
select number as n
from master..spt_values
where type = 'p' and number between 0 and 999)

select c1.n * 1000 + c2.n + 1  as n
into dbo.num1
from cte c1 cross join cte c2;
go

alter database db8
set offline;
go


/* copy .ldf to Z:\Anna\_backups\hp\db8*/

/* go to another server */
USE [master]
GO
CREATE DATABASE [db8] ON 
( FILENAME = N'Z:\Anna\_backups\hp\db8\db8.mdf' ),
( FILENAME = N'Z:\Anna\_backups\hp\db8\db8_log.LDF' )
 FOR ATTACH
GO



-----------------------------------
Msg 1813, Level 16, State 2, Line 1
Could not open new database 'db8'. CREATE DATABASE is aborted.
Msg 5125, Level 24, State 1, Line 1
File 'Z:\Anna\_backups\hp\db8\db8.mdf' appears to have been truncated by the operating system. Expected size is 3328 KB but actual size is 2304 KB.
Msg 3313, Level 21, State 2, Line 1
During redoing of a logged operation in database 'db8', an error occurred at log record ID (30:122:54). Typically, the specific failure is previously logged as an error in the Windows Event Log service. Restore the database from a full backup, or repair the database.


не могу сейчас объяснить, на какой момент он требует .mdf,
но файл не обрезан.
опыт был проведен 2 раза, файл копируется нормально.
для проверки в третий раз просто пробую сразу же приаттачить этот .mdf без .ldf,
и все с ним ok.

к концу выполнения заполнения таблицы чисел .mdf становится 18.688 Кб,
сервер же требует .mdf размером в 3328 KB
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665804
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
стукнуло мне, что он хочет файл .mdf на момент после его первого автоприращения (былo 1 Мб в первом опыте),
повторяю эксперимент, задаю нач. размер для .mdf 5 Мб, автоприращение 2 Мб .
проделываю все вышеописанное, вылазит ошибка:

Msg 1813, Level 16, State 2, Line 1
Could not open new database 'db8'. CREATE DATABASE is aborted.
Msg 5125, Level 24, State 1, Line 1
File 'Z:\Anna\_backups\hp\db8\db8.mdf' appears to have been truncated by the operating system. Expected size is 6144 KB but actual size is 5120 KB.
Msg 3313, Level 21, State 2, Line 1
During redoing of a logged operation in database 'db8', an error occurred at log record ID (30:123:186). Typically, the specific failure is previously logged as an error in the Windows Event Log service. Restore the database from a full backup, or repair the database.


ну не знаю я, почему он на мегабайт больше ждет, нету идей, завтра еще подумаю,
а может кто-то знает и поделится соображениями.

судя по ошибке, он все же начинает накатывать,
что такое log record ID, что ему соответствует в выводе fn_dblog?
а то можно посмотреть в исходной базе в fn_dblog, что там за операция, на к-ой спотыкается
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665873
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
o-oстукнуло мне, что он хочет файл .mdf на момент после его первого автоприращения (былo 1 Мб в первом опыте),
повторяю эксперимент, задаю нач. размер для .mdf 5 Мб, автоприращение 2 Мб .
проделываю все вышеописанное, вылазит ошибка:

Msg 1813, Level 16, State 2, Line 1
Could not open new database 'db8'. CREATE DATABASE is aborted.
Msg 5125, Level 24, State 1, Line 1
File 'Z:\Anna\_backups\hp\db8\db8.mdf' appears to have been truncated by the operating system. Expected size is 6144 KB but actual size is 5120 KB.
Msg 3313, Level 21, State 2, Line 1
During redoing of a logged operation in database 'db8', an error occurred at log record ID (30:123:186). Typically, the specific failure is previously logged as an error in the Windows Event Log service. Restore the database from a full backup, or repair the database.


ну не знаю я, почему он на мегабайт больше ждет, нету идей, завтра еще подумаю,
а может кто-то знает и поделится соображениями.

судя по ошибке, он все же начинает накатывать,
что такое log record ID, что ему соответствует в выводе fn_dblog?
а то можно посмотреть в исходной базе в fn_dblog, что там за операция, на к-ой спотыкается
Log rec id очень похож на обычный lsn (hex или dec непонятно), а каким образом отцеплялся mdf? Останавливался сервер или база детачилась?
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665909
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexпредположим у нас есть база на момент времени t1, mdf и ldf "согласованны", "грязных" страниц нет, checkpoint lsn = последнему lsn в логе.
...
ситуация автора по сути ничем не отличается, только между t1 и t2 прошел месяц.Очень даже отличается - чекпоинты были. Так что если гипотетически предположить, что удалось присоединить БД из старого mdf и нового ldf, накат лога пойдет с момента последнего чекпоинта.
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665912
Фотография Гадя Петрович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в порядке эксперимента можно попробовать всякие разные сторонние тулзы
сам, правда, никогда не пользовался
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38665954
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmmsLexпредположим у нас есть база на момент времени t1, mdf и ldf "согласованны", "грязных" страниц нет, checkpoint lsn = последнему lsn в логе.
...
ситуация автора по сути ничем не отличается, только между t1 и t2 прошел месяц.Очень даже отличается - чекпоинты были. Так что если гипотетически предположить, что удалось присоединить БД из старого mdf и нового ldf, накат лога пойдет с момента последнего чекпоинта.
Lsn последнего чекпоинта храниться в странице 1:9 (boot page) самой базы. В mdf месячной давности и LSN чекпоинта месячной давности. Т.е. по идее, именно с этого lsn и должно начаться применения лога
Сейчас попробую провести эксперемент.
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #38666104
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил.

1. Создал базу с полной моделью восстановления.
2. Сделал полный бекап (до этого база по факту в simple )
3. Сделал detach.
4. Скопировал mdf
5. Сделал attach
6. Внес изменения в данные.
7. Сделал checkpoint
8. Сделал detach.
9. Подменил mdf на скопированную в 4-том пункте
10. Сделал attach

база подцепилась, но изменений пункта 6 нет, в checkpoint lsn в странице 1:9 храниться lsn завершения последнего checkpoint-а из лога.

видимо, либо в логе также где-то храниться информация о последнем checkpoint lsn, либо sql сканирует лог находит lsn последнего checkpoint-а.
можно "поизвращаться" дальше, найти место хранения checkpoint lsn в логе и в базе и подменить.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Восстановление базы данных из ldf-файла
    #39938619
sirsyslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
Восстанавливаете полный бэкап с norecovery, восстанавливаете бэкап журнала с recovery. Ваш LDF должен принадлежать той забэкапленной базе, разумеется, и иметь резервную копию.


здравствуйте. у меня проблема аналогичная что и у топикстартера. а именно шифровальщик покушал MDF а последний актуальный бекап 3 недельной давности. но есть нетронутый шифровальщиком LDF

сервер мускула не поднимается, вероятно пожрано что то из системного
не могли бы вы подробнее описать вами вышеуказанный порядок действий на новом экземпляре сервера?

---Восстанавливаете полный бэкап с norecovery--- это мне относительно понятно
---восстанавливаете бэкап журнала с recovery--- я так понимаю, речь идет об отдельном бекапе LDF, если да как его получить из оригинального LDF?
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39938656
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sirsyslik,

у Вас должна быть резервная копия журнала при условии, что база имеет полную модель восстановления.
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39938662
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
База данных в какой модели восстановления?
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939176
sirsyslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,

полная, файл журнала около 90гб, при том что сама база +-2гб. Шринк не производился ни разу.
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939192
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если базу не отсоединили от сервера, выполните Log tail backup . Это и будет ваш бэкап лога.
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Восстановление базы данных из ldf-файла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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