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

Откуда:
Сообщений: 13
Добрый день!

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

Кратко: случилось ЧП с железкой (сервером), что повлекло за собой незначительные повреждения БД

Последовательность действий

1) БД запустил и посыпались запросы с ошибками к некоторым таблицам. БД 4 ТБ
2) было принято решение попробовать восстановить отдельные страницы из бэкапа+лога
3) Запустил тестово восстановление 1 страницы из полного бэкапа WITH NO RECOVERY в онлайн-режиме SQL 2012 и выполнил, но последовательность дальше не продолжил, т.к. заметил, что после поднятия бД оказалась в SIMPLE режиме, поднял в FULL. Поэтому получается, что после краха система 4 часа работала в режиме SIMPLE и лог транзакций не писался?
5) На паре таблиц выполнил CHECKDB с разрешением потери данных и посмотрел потери. Они оказались приемлемы. Было принято решение отработать инциденты согласно логу ошибок, чтобы быстро запустить базу, а глобальную проверку сделать на выходных.
6) Прошелся CHECKDB 10 таблиц, в том числе и ту, в которой ПРЕДВАРИТЕЛЬНО не закончил завершение восстановления страницы.


Результат: БД работает, все хорошо.

НО:

а) лог транзакций не бэкапится, т.к. ругается на отсутствие бэкапа
б) бэкап полный сделать не могу, т.к. ругается на незаконченную последовательность
в) пытаюсь закончить последовательность (запустил повторное восстановление этой же страницы, но уже WITH RECOVERY - ругается на несоответствие LSN
г) пытаюсь выполнить просто БД with recovery, ругается на то, что БД используется и т.п.



Что делать???

Цель: отменить или завершить незаконченную последовательность, при этом не навредить текущим данным!!! Выполнить бэкап наконец!!!
Как это сделать???
5 сен 15, 00:51    [18111929]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Igor Sa
бэкап полный сделать не могу, т.к. ругается на незаконченную последовательность
Полный текст ошибки какой?

И статус у базы какой?

Сообщение было отредактировано: 5 сен 15, 00:54
5 сен 15, 00:54    [18111935]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Телепатией не обладаю. С подобной ошибкой не сталкивался.
Но если вдруг с бэкапом не получится - сделай экспорт(есть типовой матер настроек) данных в отдельную БД. Потом переименуешь ее и уже возьмешь за рабочую.
5 сен 15, 11:56    [18112429]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
Igor Sa
Member

Откуда:
Сообщений: 13
Вот ошибки во вложении!

К сообщению приложен файл (ошибки.docx - 79Kb) cкачать
5 сен 15, 12:57    [18112545]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
https://technet.microsoft.com/en-us/library/ms187851(v=sql.105).aspx

Ну и вообще, изучать обе ссылки:
https://msdn.microsoft.com/en-us/library/ms188671.aspx
https://technet.microsoft.com/en-us/library/ms187486(v=sql.105).aspx
5 сен 15, 13:41    [18112622]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Igor Sa
Вот ошибки во вложении!

Приложенный файл (ошибки.docx - 79Kb)
Модератор: На будущее. Нет никакой необходимости засовывать все это в непонятные файлы, которые половина участников форума даже не будет качать, тем более с картинками, с которых ничего не скопировать. Достаточно было просто скопировать ошибки в пост.
5 сен 15, 13:44    [18112627]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Igor Sa,

1. Если вам непонятны сообщения на английском - включите для своей сессии русский язык.
2. В документации подробно, с примерами и объяснениями, расписано как восстанавливать отдельные страницы.
5 сен 15, 13:45    [18112630]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
Igor Sa
Member

Откуда:
Сообщений: 13
Гавриленко Сергей Алексеевич,

Спасибо, хорошо
5 сен 15, 15:43    [18112817]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
Igor Sa
Member

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

Мне все понятно
Мой вопрос заключается в следующем :

1) Как отменить (откатить) восстановление страницы если я выполнил with no recovery и не хочу это применять
2) если п.1 невозможен, как вернуть бд в состояние при котором будет возможно выполнить полный бэкап не меняя никакой информации, не накатывая логи (писал выше, что база 4 часа работала в simple режиме и я не могу накатывать логи поэтому )
Повторюсь , моя цель не восстановление страницы до конца , а возможность привести в состояние , в котором она даст выполнить полный бэкап, не нарушив текущей структуры данных, либо применив только 1 страницу (т.е. Малой кровью )
5 сен 15, 15:51    [18112833]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Igor Sa,

Страницы нельзя восстановить, если БД в simple. БД нельзя перевести в simple, если она находится в процессе восстановления страниц.
Так что-то вы от нас умалчиваете.
5 сен 15, 16:30    [18112934]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
Igor Sa
Member

Откуда:
Сообщений: 13
ничего не умалчиваю))

после краха БД была в simple
Спустя 4 часа увидел это и перевел в full
Потом начал восстановление страницы with no recovery из полного бэкапа
Затем от идеи решил отказаться и не применять with recovery, решил проблему альтернативным способом

Все работало и я не знал, что нужно заканчивать последовательность

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

И я начал читать про эту последовательность, пытаться как-то это обойти, а нигде ничего про это нет.

Получается замкнутый круг - чтобы завершить это все мне нужно все логи накатить, а мне этого делать нельзя т.к. тогда я потеряю 4 часа работы БД (когда она была в simple)

А как отменить восстановление страницы нигде инфы нет

Вот я и спрашиваю что делать...
5 сен 15, 17:20    [18113076]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
churupaha
Member

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


+ вредные мысли вслух. не пытаться так делать! автор ответственности не несет


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

Можно попытаться покрамсать с помощью dbcc writepage заголовок файла, страница которого восстанавливалась.

Увидеть текущее содержимое страницы-заголовка файла можно так:

автор
dbcc traceon(3604);
go

dbcc page(dbname, 1 /* file_id */, 0, 3)
go


параметры вроде restore RestoreRedoStartLsn... там несколько. их видно в sys.database_files как redo_start_lsn...

можно попытаться затереть эти параметры нулями НА ТЕСТОВОЙ БАЗЕ с таким же диагнозом.

а потом попробовать backup тестовая_база to disk = '...';

5 сен 15, 19:44    [18113362]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Igor Sa
после краха БД была в simple
Спустя 4 часа увидел это и перевел в full
Потом начал восстановление страницы with no recovery из полного бэкапа
Похоже на багу - возможно начать восстановление страниц, когда БД в pseudo-simple.
Igor Sa
Вот я и спрашиваю что делать...
Можно пойти путем, предложенным churupaha'ой, и попытаться найти признак, ответственный за page recovery pending и убрать его.
Можно соединиться под DAC, далее
use master;
alter database MyDB set emergency;
alter database MyDB set single_user;
dbcc checkdb(MyDB, repair_allow_data_loss);
После перелить данные в новую БД.
5 сен 15, 21:46    [18113626]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Инфу использовать на свой страх и риск. Автор ответственности не несет.

Делал только из интереса - удастся нащупать или нет... Сделал не до конца. Но что-то удалось. Дальше желания нет :).

К сообщению приложен файл. Размер - 136Kb
5 сен 15, 22:15    [18113689]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
+ портянка образовавшаяся по ходу теста (понятное дело, автор ответственности не несет)

use master;
go

drop database bdsm
go

create database bdsm;
go

use bdsm;
go

create table t(id int, d sysname)
go

insert into t(id, d) select column_id, name from sys.all_columns;
go

backup database bdsm to disk = 'c:\temp\bdsm_full_bkp.bak';
go

insert into t(id, d) values(-777, '!!!test!!!');
go

backup log bdsm to disk = 'c:\temp\bdsm_log_01.bak';
go

insert into t(id, d) values(-888, '!!!test2!!!');
go

backup log bdsm to disk = 'c:\temp\bdsm_log_02.bak';
go

select *
from
	sys.dm_db_database_page_allocations(db_id(N'bdsm'), object_id(N'dbo.t'), 0, null, 'DETAILED')
go

dbcc traceon(3604);
go

dbcc page(bdsm, 1, 121, 3)
go
dbcc page(bdsm, 1, 0, 3)
go

select * from sys.database_files
go

use master;
go

restore database bdsm page = '1:121' from disk = 'c:\temp\bdsm_full_bkp.bak' with norecovery;
go

backup database bdsm to disk = 'c:\temp\test_backup.bkp';
go

/*
Msg 3016, Level 16, State 1, Line 45
Backup of file 'bdsm' is not permitted because it contains pages subject to an online restore sequence. Complete the restore sequence before taking the backup, or restrict the backup to exclude this file.
Msg 3013, Level 16, State 1, Line 45
BACKUP DATABASE is terminating abnormally.
*/

dbcc traceon(3604);
go

dbcc page(bdsm, 1, 0, 3)
go

alter database bdsm set single_user with rollback immediate
go
dbcc writepage(bdsm, 1, 0, 5633/* 0x1601 */, 10, 0x00000000000000000000);
go
dbcc writepage(bdsm, 1, 0, 5643/* 0x1601 */, 10, 0x00000000000000000000);
go
dbcc writepage(bdsm, 1, 0, 5747/* 0x1601 */, 10, 0x00000000000000000000);
go
alter database bdsm set offline
go
alter database bdsm set online
go
select * from bdsm.sys.database_files
go

dbcc traceon(3604);
go

dbcc page(bdsm, 1, 0, 3)
go

-- дальше не хочется.

5 сен 15, 22:18    [18113702]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
Igor Sa
Member

Откуда:
Сообщений: 13
Большое спасибо за реальные предложения!
Перезаливать бД 4 ТБ у меня нет места, поэтому для меня подходит больше вариант только по dbcc writepage, как я вижу.
Перешел по ссылке. Очень страшно написано....
Я готов оттестировать на тестовой БД, сейчас читаю эту статью по ссылке.

Если есть возможность, дабы я не накосячил, опишите подробнее последовательность действий как мне это сделать на тестовой БД (для начала).

Как организовать ситуацию я понял: просто начать последовательность восстановления из бэкапа. У меня как раз есть тестовая бД.
Но что делать дальше?

На "живой" базе я знаю только номер страницы, который восстанавливать пытался и LSN, которые он выругался.
5 сен 15, 22:24    [18113729]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
Igor Sa
Member

Откуда:
Сообщений: 13
спасибо огромное!!
Как это все опасно..(((
Поковыряюсь в тесте

Есть еще у кого-нибудь мысли что можно сделать? Мало ли...
5 сен 15, 22:29    [18113741]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Igor Sa
Большое спасибо за реальные предложения!
Перезаливать бД 4 ТБ у меня нет места, поэтому для меня подходит больше вариант только по dbcc writepage, как я вижу.
Перешел по ссылке. Очень страшно написано....
Я готов оттестировать на тестовой БД, сейчас читаю эту статью по ссылке.

Если есть возможность, дабы я не накосячил, опишите подробнее последовательность действий как мне это сделать на тестовой БД (для начала).

Как организовать ситуацию я понял: просто начать последовательность восстановления из бэкапа. У меня как раз есть тестовая бД.
Но что делать дальше?

На "живой" базе я знаю только номер страницы, который восстанавливать пытался и LSN, которые он выругался.


Дайте я вас отговорю, раз такое дело.

Если такие вопросы возникают - то лучше воспользоваться, всеже, документированными способами 18113626 и 18112429. А удаленно за такое никто не возьмется (я точно нет), специалисты MS, разве что. И заметьте, в примере нащупал только 1 параметр. При этом 3 раза куда-то записав последовательность из 10 нулей просто потому, что там содержались похожие значения. И это не все. DBCC PAGE(db, 1, 0, 3) изменение увидел он не просто дамп показал, а написал RestoreStartLSN = (0:0:0), а вьюшка sys.database_files нет - не увидела, откуда она тянет... А RestoreStatus = 12 сбросить в 0? Там таких "12" - штук 7. Это если все более менее сделать - как такой базе доверять? Где-то останется какая нибудь мелкая пимпочка или лишнее потрется. И потом штатные команды некоторые начнут глючить. Потом и из MS не помогут, скажут - чего лезли туда руками?... Так что лучше воспользуйтесь документированными способами сохранить данные. :)

Если зудит, всеже, напишите в бложик тому дядьке у которого читали по DBCC WRITEPAGE. Вдруг, он поделится полным описанием FIleHeader'a :).
5 сен 15, 22:50    [18113781]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
Igor Sa
Member

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

Согласен с доводами...
Напиши мне в скайп плиз (я ISSS) у тебя в скайпе есть. Мы оказывается знакомы)))
5 сен 15, 22:58    [18113791]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Это очень рискованно по моему мнению.(база 4 тб) Нужно общаться с собственниками бизнеса. Первое - работаете без бэкапов. Что будет если ваш вариант восстановления не пройдет? - Скорей всего потеряете несколько дней. Плюс сколько то времени простоя. Вариантов несколько, перенести данные без остановки основной системы - можно репликацию, always on с изменением по всем данным(с учетом методики на основе лога транзакций восстановления есть вариант что не пройдет) и есть еще пару способов.
Впрочем если вы сторонник кардинальных методов и рисковый парень то обсуждение бессмысленно.
5 сен 15, 23:50    [18113923]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Помню по своему опыту. Было в практике пару случаев когда было все очень плохо.(по не зависящим от меня причинам). Мой совет - готовьте несколько сценариев и один из них обязательно самый плохой. Пытайтесь его донести руководству. В противном случае вы сидите на пороховой бочке. Тем более если это не ваша вина? Зачем эту ситуацию скрывать? Разве нет дублирующих серверов? Скажите что для решения экстренной ситуации нужно взять их в аренду. С другой стороны видел ситуации когда на разрушенном раиде работали еще очень долго и в целом успешно.(как объяснял админ что руководство очень жадное и я их предупреждал:)) Может когда все навернется - это будет не ваша проблема.
5 сен 15, 23:58    [18113945]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
Igor Sa
Member

Откуда:
Сообщений: 13
Когда речь о таких вещах, я не рисковый совсем...
Полностью согласен, что описанный выше вариант слишком рискованный для применения
Спасибо огромное за совет

Сейчас пытаюсь составить разные альтернативные решения и сценарии

Место найти можно, но нужно время его подготовить.
Я надеялся найти более простое решение ....
6 сен 15, 00:13    [18114003]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Мой совет - ищите место, разумеется заранее подготовив почву пообщавшись с руководством. Если? победите на авось - никто не оценит. Не победите - будете врагом номер один для руководства.(ну и в принципе это верно).
P.s. Да ну нафиг, нужны такие эксперименты и стрессы, да и еще за свой счет!(все риски только на себе, я имею ввиду даже не материальные).
6 сен 15, 01:03    [18114166]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
churupaha
Member

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

планируют переливать в другую БД.
6 сен 15, 01:52    [18114270]     Ответить | Цитировать Сообщить модератору
 Re: Помогите! Как Отменить восстановление последовательности страниц из бэкапа?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Был с обеих сторон барикад. Помню мой первый вопрос моего падавана(руководителя IT) - а ты знаешь мой любезный друг сколько простой компании стоит? А сколько твое неверное решение стоит? Мне же казалось что я хочу оптимизировать затраты, ну и на авось наше...
Насчет переливки БД - включаю режим телепат. Если скорость будет неудовлетворительна, то включайте параллелизм(параллельные вычисления).
6 сен 15, 02:23    [18114327]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить