Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Восстановление БД (полный бэкап + логи)  [new]
Max_Tpop
Member

Откуда:
Сообщений: 103
Каждый день в 20:00 делается полный бэкап БД (продолжительность ~ 1 ч. 30 мин.).
Каждые два часа делается бэкап лога (продолжительность ~ 3 мин.).
Из-за чего в 20:00 делается одновременно полный бэкап БД и бэкап лога.

Пытаюсь восстановить БД на другой машине.
Восстановил полный бэкап БД за 13.05.2015 20:00:00 - успешно.
Пытаюсь накатить лог за 13.05.2015 20:00:00 - ошибка.
+
Журнал в этом резервном наборе данных заканчивается на номере LSN 73371000016592700001, который является слишком ранним для применения к базе данных. Можно восстановить более позднюю резервную копию журналов, включающую номер LSN 73536000000179300001.

Пытаюсь накатить лог за 13.05.2015 22:00:00 - ошибка.
+
Невозможно применить резервный набор данных, так как он находится на пути восстановления, который не согласован с базой данных. Путь восстановления - это последовательность данных и резервных копий журналов, проходя через которые, база данных достигает определенной точки восстановления. Найдите совместимую резервную копию для восстановления или восстановите остальную часть базы данных для соответствия точке восстановления в пределах данного резервного набора, который восстановит базу данных к другому моменту времени. Дополнительные сведения о путях восстановления см. в электронной документации по SQL Server.


Как быть? Как восстановить БД до текущего момента?
14 май 15, 15:05    [17640073]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление БД (полный бэкап + логи)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
Max_Tpop
Как быть? Как восстановить БД до текущего момента?
Указать правильную последовательность файлов для восстановления.

Предварительно можно прочитать содержимое файлов бакапов, что бы понимать, что там лежит, что раньше, а что позже. Командой RESTORE HEADERONLY
Max_Tpop
Каждый день в 20:00 делается полный бэкап БД (продолжительность ~ 1 ч. 30 мин.).
Каждые два часа делается бэкап лога (продолжительность ~ 3 мин.).
Вы бы их разнесли по времени, что бы не путаться... Допустим, делайте полный бакап в 20:20. Чисто для удобства.
14 май 15, 16:04    [17640546]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление БД (полный бэкап + логи)  [new]
Glory
Member

Откуда:
Сообщений: 104751
Max_Tpop
Можно восстановить более позднюю резервную копию журналов, включающую номер LSN 73536000000179300001.

И в какой из ваших бэкапов лога попал этот LSN ?
14 май 15, 16:09    [17640584]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление БД (полный бэкап + логи)  [new]
Max_Tpop
Member

Откуда:
Сообщений: 103
Вот таблица msdb.dbo.backupset

typefirst_lsnlast_lsncheckpoint_lsndatabase_backup_lsnbackup_start_datebackup_finish_date
L737380000316712000017373900001369440000173739000013117000013733710000165728002042015-05-14 10:00:02.0002015-05-14 10:00:04.000
L737250000039181000017373800003167120000173738000030549900001733710000165728002042015-05-14 08:00:03.0002015-05-14 08:00:05.000
L737070000058615000017372500000391810000173725000002760900001733710000165728002042015-05-14 06:00:01.0002015-05-14 06:00:03.000
L736790000036740000017370700000586150000173707000005679000001733710000165728002042015-05-14 04:00:02.0002015-05-14 04:00:05.000
L736430000014369000017367900000367400000173679000003462400001733710000165728002042015-05-14 02:00:02.0002015-05-14 02:00:05.000
L735760000013453000017364300000143690000173642000001092200008733710000165728002042015-05-14 00:00:02.0002015-05-14 00:00:07.000
L733710000165927000017357600000134530000173575000002201700001733710000165728002042015-05-13 22:00:02.0002015-05-13 22:00:05.000
L733600000121943000017337100001659270000173371000016572800204733170002173714001812015-05-13 20:00:03.0002015-05-13 20:00:20.000
D733710000161561000017353600000014280000173371000016572800204733170002173714001812015-05-13 20:00:02.0002015-05-13 21:06:14.000
L733500000135066000017336000001219430000173360000011643800001733170002173714001812015-05-13 18:00:03.0002015-05-13 18:00:06.000
L733390000067789000017335000001350660000173350000013451100001733170002173714001812015-05-13 16:00:02.0002015-05-13 16:00:05.000
L733260000093866000017333900000677890000173339000005705800008733170002173714001812015-05-13 14:00:03.0002015-05-13 14:00:06.000
L733190002386498000017332600000938660000173326000007689800001733170002173714001812015-05-13 12:00:02.0002015-05-13 12:00:07.000
L733190001356158000017331900023864980000173319000237678000001733170002173714001812015-05-13 10:00:02.0002015-05-13 10:00:03.000
L733190000742264000017331900013561580000173319000134927400001733170002173714001812015-05-13 08:00:02.0002015-05-13 08:00:02.000
L733190000208660000017331900007422640000173319000072961300012733170002173714001812015-05-13 06:00:02.0002015-05-13 06:00:02.000
L733180002540042000017331900002086600000173319000020004100001733170002173714001812015-05-13 04:00:03.0002015-05-13 04:00:04.000
L733180001784220000017331800025400420000173318000252144000010733170002173714001812015-05-13 02:00:02.0002015-05-13 02:00:03.000
L733180000350913000017331800017842200000173318000177169100001733170002173714001812015-05-13 00:00:02.0002015-05-13 00:00:04.000


Этот LSN 73536000000179300001 попадает в лог на 22:00
14 май 15, 16:49    [17640920]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление БД (полный бэкап + логи)  [new]
Max_Tpop
Member

Откуда:
Сообщений: 103
Правильно ли я понимаю, что надо было восстанавливать так:
Делаем восстановление полного бэкапа + лога за 22:00 + последующие логи.
Либо восстанавливаем полный бэкап с переводом БД в "NORECOVERY", а дальше накатываем логи с 22:00 и последний лог с переводом БД в "RECOVERY".
14 май 15, 17:50    [17641315]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Восстановление БД (полный бэкап + логи)  [new]
SuperioRus
Member

Откуда:
Сообщений: 3
Max_Tpop,
Да, именно так, из-за нарушения хронологии LSN один из бэкапов файла лога должен быть пропущен при восстановлении.
Причём GUI не позволяет снять нужную галку. У меня была аналогичная проблема, решилось скриптом, в котором самый ближний файл лога пропускался (т.к. создание полной копии завершалось позже бэкапа лога, а начинались они одновременно).
Вывод: при резервном копировании разные виды копий не должны стартовать в одно время.

Эта ветка помогла сегодня разобраться.
2 июн 20, 20:36    [22144517]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление БД (полный бэкап + логи)  [new]
uaggster
Member

Откуда:
Сообщений: 1056
Вот уж никогда не заморачивался, чтобы снимать нужные галки :-)
Берем вот такой скрипт:
:setvar _path '\\s01db23\logshipping\'
:setvar _base db2300
:setvar _stopat '20200325T12:00'

Use [master]
go

IF OBJECT_ID('tempdb..#filetmp') IS NOT NULL  DROP TABLE #filetmp ;
create table #filetmp (Name nvarchar(255) NOT NULL, depth int NOT NULL, IsFile bit NULL) 
insert #filetmp 
EXECUTE master.dbo.xp_dirtree $(_path), 1, 1 

select 'print ''' +  $(_path) + name + '''
restore log [$(_base)] from disk =''' + $(_path) + name + '''  WITH NORECOVERY, STOPAT = '$(_stopat)'
GO 
'
from #filetmp where IsFile=1
Order by name asc
For xml path(''), type

Если запускать из ssms - то нужно включить режим sqlcmd.

Щелкаем по выводу. Копируем в новое окно. Запускаем.

И, собственно, никакого смысла искать файл log'a с нужным lsn нет. В куче файлов он найдется и накатится самостоятельно, а остальные просто не накатятся.
Единственное, за чем нужно следить - чтобы имена файлов бекапов шли в порядке возрастания.
Можно, конечно, это обойти - нужно только сортировать файлы по дате, но xp_dirtree не подойдет.

Причем, хочу сказать, даже если у вас 100500 файлов бэкапов лога - отбирать нужные, даже грубо, тоже нет никакого смысла.
Сервер сам проверяет пригодность практически мгновенно.

Сообщение было отредактировано: 2 июн 20, 21:58
2 июн 20, 21:56    [22144536]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить