пятница, 24 октября 2008 г.

Из жизни. SQL, Mirror & все-все-все.

Многие, думаю, знают, что такое зеркалирование в MS SQL Server. Я тоже в курсе, мало того, часто приходится с этой технологией работать. Спасает она меня регулярно, но и подводные камни иной раз подставляет такие, что мама не горюй.

Например, в какой-то момент случилась такая вот оказия:

Перестает отвечать сервер principal. Мы его перезагрузили, но переключение зеркала не произошло, хотя и присутствовал witness. Мало того, после перезагрузки основного сервера у меня на руках оказалось два Principal… Да-да. Именно так мне и писалось. Увы, скриншот снять не догадался – не до того было ;)

Но на одном хосте состояние всех баз было “Principal, Disconnected”, а на втором “Principal, Disconnected/In Recovery” , по-моему.

Ужасная ситуация. Я начал с одной самой маленькой базы – удалил ее с основного хоста и стал восстанавливать зеркало. Восстановил базу на сервер с NORECOVERY и попытался запустить зеркало. Мастер Configure Security отработал на ура, но при попытке запустить зеркалирование я получил ошибку…

image_4

Опа… Какие-такие endpoints… Не брал. И Астрахань-то с Казанью вместе не брал, а уж endpoints… И вовсе не трогал. Начинаем ковыряться и находим статейку, с помощью которой видим, что все отлично работает:

image

Совсем упс… Пинговаться все пингуется, никаких внезапных файрволлов между узлами за те несколько минут, что все лежит тоже не появилось… Ужас. Совершенно непонятная ситуация, а время идет. Дальнейшее расследование нужного результата не давала. Даже нужный порт слушался на обоих серверах. Все было бессмысленным, надежда на премию таяла… И тут где-то промелькнула мысль, что, о ужас, строка, показанная на предыдущем скриншоте, может выдавать неверную информацию не только в случае, указанном в разделе Using The Error Log File For Diagnosis в последней ссылке. Итак, срочно запускаем

alter endpoint mirror state = started

на обоих серверах и – вуаля! Как только я это сделал, все старые базы просто-напросто заработали в штатном режиме зеркала, а та, где я успел убить зеркало дала его восстановить.

Глубинные причины происшедшего мне непонятны пока – расследование все еще ведется, но сам результат уже почти устраивает ;)

2 комментария:

Анонимный комментирует...

Что мне нравтся в системах резрвирования, что никогда не узнаешь работает ли резерв, пока на него не перейдешь!!!

Alexander Trofimov комментирует...

Ну... В данном случае это один сбой на множественные отказы. Потому, скорее оно работет, чем наоборот =)