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

Откуда:
Сообщений: 50
Здраствуйте.

Подскажите пожалуйста, возможно ли восстановить базу если её бэкапов разные вилки восстановления(recovery_fork_guid)?
Суть вот в чем, есть полный бэкап и с десяток транзакционных, после фэйловера есть еще десяток транзакционных но уже с другой вилкой. LSN в порядке и цепочка не разбита. Можно ли как-то подружить все бэкапы и накатить на базу транзакции которые после фэйловера?
Фэйловер случился в зеркале, база одна.

При попытке накатить логи, вываливается ошибка:
This backup set cannot be applied because it is on a recovery path that is inconsistent with the database. The recovery path is the sequence of data and log backups that have brought the database to a particular recovery point. Find a compatible backup to restore, or restore the rest of the database to match a recovery point within this backup set, which will restore the database to a different point in time. For more information about recovery paths, see SQL Server Books Online.

Microsoft SQL Server 2012 (SP1) - 11.0.3156.0 (X64)
May 4 2015 18:48:09
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
15 окт 15, 02:54    [18280722]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы с разными путями восстановления.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
ZaloJNik,

или не верно понял или чего-то не договариваете.

К сообщению приложен файл. Размер - 59Kb
15 окт 15, 08:13    [18280878]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы с разными путями восстановления.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
у меня джобы бэкапов в паре primary/mirroring на обоих сервера. но бэкапится только текущий primary. и когда апдейты на сервера накатую (роли переключаю), то логи начинают бэкапиться с другого узла (активного в данный момент). потом переключаю обратно - бэкапятся с другого и т. д.. цепочка вполне подходит для восстановления.
15 окт 15, 08:15    [18280881]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы с разными путями восстановления.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015


К сообщению приложен файл. Размер - 31Kb
15 окт 15, 08:22    [18280890]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы с разными путями восстановления.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015


К сообщению приложен файл. Размер - 28Kb
15 окт 15, 08:22    [18280893]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы с разными путями восстановления.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
ZaloJNik
Можно ли как-то подружить все бэкапы


можно попробовать подправить заголовок бэкапа. что-то из этого да выйдет. :)
15 окт 15, 08:25    [18280900]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы с разными путями восстановления.  [new]
ZaloJNik
Member

Откуда:
Сообщений: 50
Переключение было в асинхронном режиме с помошью set partner force_service_allow_data_loss. После чего база какое-то время пожила на вотричном, а когда основной заработал, благополучно переехал на основной.
В синхронном режиме все работает прекрасно.
А как можно подправить заголовок бэкапа, не подскажите?

К сообщению приложен файл. Размер - 19Kb
15 окт 15, 11:48    [18281906]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы с разными путями восстановления.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
ZaloJNik
Переключение было в асинхронном режиме с помошью set partner force_service_allow_data_loss. После чего база какое-то время пожила на вотричном, а когда основной заработал, благополучно переехал на основной.
В синхронном режиме все работает прекрасно.
А как можно подправить заголовок бэкапа, не подскажите?


вон оно что. теперь понятно. если диапазоны LSN'ов перекрываются, то вполне можно попробовать обмануть команду restore...

1) чтобы поправить заголовок - надо отыскать где ваша версия субд сохраняет в заголовке каждого бэкапа recovery_fork_guid. и заменить его на recovery_fork_guid из какого-нибудь бэкапа до failover с помощью hex editor'а.
2) найти смещение - варианта два: берете первые пару десятков Кб от бэкапа до и от бэкапа после.
3) hex editor'ом делаете diff полученных кусков. он покажет смещения начиная с которых есть отличия. в отличающихся кусках надо искать ваш uniqueidentifier (почитайте как он хранится, всякие byte order и т. п..). некоторые так умеют Картинка с другого сайта.
4) после этого сделайте себе КОПИЮ бэкапа сделанную после failover'a, следующего по LSN за последним бэкапом до failover'a
5) по найденному смещению перетаскиваете hex editor'ом guid из бэкапа до в (4). сохраняете и пытаетесь восстановить последовательность в сторонке - не получилось... ищите такие же guid'ы дальше и повторяйте шаг (5).
6) как только (6) сработает - вы попали в точку. можете проделать тоже самое с КОПИЯМИ остальных бэкапов после файловера. и восстановить базу.

6) все получится, думаю. надеюсь понятно описал.
15 окт 15, 12:31    [18282129]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы с разными путями восстановления.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
+
чтобы трошки сэкономить время используйте restore headeronlyfrom disk = '...' чтобы понять - правка туда попала или нет. если туда - только тогда пытайтесь восстанавливать.

еще можно поготовить себе базу в norecovery подогнаную к LSN после которого должен идти уже бэкап после файловера. и пытаться на вот этой заготовке восстанавливать пофиксенный лог... чтобы постоянно не гонять восстановление с нуля.
15 окт 15, 12:36    [18282152]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы с разными путями восстановления.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
подкину оптимизма вам. попробовал бы сам. да напряг щас...

18115261 (тут описуется как обмануть backup database, ... смещения были найдены похожим образом)
18218293 (битый sysrowsets)
18243889 (битый boot page)
15 окт 15, 12:44    [18282191]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы с разными путями восстановления.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
+ когда будут неудачные правки копии файла бэкапа лога. если они большие чтобы не тратить время (созданием новой копии файла бэкапа из исходника). перед правками сделайте бэкап куска файла hex-редактором. - первые несколько десятков килобайт. и откатуйте только их тем же hex редактором.
15 окт 15, 12:51    [18282232]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы с разными путями восстановления.  [new]
ZaloJNik
Member

Откуда:
Сообщений: 50
Вот спасибо добрый человек!!!!! буду пробовать.
15 окт 15, 12:57    [18282265]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить