Как снова заработал it.icmp.ru

http://it.icmp.ru/content/img/design/itc-logo.png
Пост из серии лучше поздно, чем никогда. :)

По весне сервер it.icmp.ru не работал больше месяца, и наверное у многих постоянных посетителей есть вопрос - что было? Попытаюсь кратко рассказать о восстановлении.
Никто из нас сейчас не занимается админством профессионально, и вобщем получилось, что восстанавливали сервер на коленке.

От Ferret-а было получено три диска по 1TB, которые надо было поставить на сервер и пакет с разными полезными вещами, в том числе чудо-диск с копией софта от HP. А из Экспресс сети забрали сам сервер и привезли всё в контору.



http://fotki.ykt.ru/albums/userpics/2014/07-08/1.jpeg

Тяжеленький...


После включения оказалось, что система не грузится. Мало ли что могло случится, поэтому не обратили внимания. Файлы были скопированы на отдельный диск, при этом оказалось, что часть файлов скопироваться не может. В том числе 2 ГБ папки аплоад и база данных WSUS. Это был первый звоночек.

http://fotki.ykt.ru/albums/userpics/2014/07-08/2.jpeg



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

http://fotki.ykt.ru/albums/userpics/2014/07-08/normal_3.jpg

Домашний инструмент не подвел, и диски были заменены и встали в корпус.

Новая задача - выбрать конфигурацию RAID для SAS-контроллера. Никогда не доверял RAID-5, потому что https://www.google.com/search?q=RAID-5+%D0%B7%D0%BB%D0%BE . Поэтому наш выбор RAID-1 и третий диск оставляем просто так. Может потом еще диском разживемся и будет два RAID-1.

http://fotki.ykt.ru/albums/userpics/2014/07-08/4.jpeg


Теперь настала очередь установки операционной системы, по каким то причинам сказали ставить старичка Windows2003 R2. Осмотр файлов показал что как будто была установлена 64bit-ная система и был раздобыт соотвествующий образ.


http://fotki.ykt.ru/albums/userpics/2014/07-08/1404802180_5.jpg

Чудо-диск


Хочу немного рассказать о чудо-диске. Вначале не обратил на него внимания, но как оказалось он самым чудесным образом помог в установке системы. Кроме того что чудо диск загружаемый и все программы в нем имеют удобный графический интерфейс, у него есть чудесная утилита которая сама формирует дистрибутив установки системы со всеми нужными дополнительными драйверами оборудования! Просто выбираем пункт меню и отвечаем на вопросы, затем после запроса меняем CD-диск на нужный образ. После копирования нужно просто перегрузить компьютер и начнется автоматическая установка системы. Кому довелось ставить WinXP на нетбук AHCI, без USB дисковода должны понять меня.


http://fotki.ykt.ru/albums/userpics/2014/07-08/1404802180_6.jpg

Установка ОС превратилась в праздник.



Собственно it.icmp.ru работает на ASP.NET MVC2. Поэтому чтобы востановить работу сервера просто поставили все что было до аварии: NET4.0, mvc2, MSSQL 2008 Express и все обновления.

http://fotki.ykt.ru/albums/userpics/2014/07-08/normal_6_1.png

IE нужен, только для установки обновлений :)


Вобщем ничего не предвещало проблем, как вдруг, выяснилось что невозможно сделать разбакуп базы данных. На диске были в наличие два разных последних бакупа, но ни один не работал, по причине испорченного содержимого. Понятно что это продолжение банкета с проблемными файлами при копировании перед заменой HDD. Причина совершенно непонятна (Контроллер? Память? Аварийная остановка?). Последствия, впрочем, ясны: перестала загружаться ОС, испорчены некоторые файлы, нет последнего бакупа.

http://fotki.ykt.ru/albums/userpics/2014/07-08/1404802181_7.png


Последний рабочий бакуп был на март 2013 года.

Раз не работает бакуп пробуем поднять сами файлы MSSQL из каталога данных прошлой системы — itc_mvc.mdf (данные) и itc_mvc.ldf (лог транзакций).

Кто хочет изучить подробнее разные аспекты востановления, рекомендую статью
http://sqlinthewild.co.za/index.php/2009/06/09/deleting-the-transaction-log/


Поднять базу с другого сервера очень просто - создаем пустую БД, и копируем в папку данных файлы с теми же именами. К сожалению база не смогла поднятся вместе с оригинальным логом транзакций.

SQL Server detected a logical consistency-based I/O error: incorrect checksum (expected: 0xXXXXXX; actual: 0xXXXX). It occurred during a read of page (x:xxxxx) in database ID 

Видимо работа сервера была остановлена аварийно в момент записи, поэтому всё сломалось.



Не беда. На этот случай есть план Б: руками скопируем сохранившиеся данные в режиме EMERGENCY.
Для этого поднимем еще две базы itc-mvc2 и itc-mvc3 — одна для экспериментов, вторая «чистовая» - та на которую будем востанавливать. Так как в наличии есть бакуп от марта 2013 года восстанавливаем его на itc-mvc3 . Учитывая то, что структура БД с того времени не менялась, это большое подспорье в нелегком деле востановления битых данных.

Делается это следующим образом: создаем пустую базу, останавливаем MSSQL и заменяем файл MDF, файл LDF удаляем, запускаем MSSQL обратно.

Затем даем команды:
alter database "itc-mvc" set online;
alter database "itc-mvc" set emergency;
Всё БД доступна для запросов.

Еще советуют dbcc checkdb ('itc-mvc', REPAIR_ALLOW_DATA_LOSS); но не сработало. Вроде как востанавливает базу в рабочее состояние с потерей данных.

Схема востановления — делаем выборку из сломанной базы в рабочую.
Например, вот востановление БД сообщений:

set identity_insert [itc3-mvc].[dbo].[Messages] on – разрешаем добавление воля IDENTITY
insert into [itc3-mvc].[dbo].[Messages] ([Id]
,[ReceiverId]
,[SenderId]
,[Title]
,[Text]
,[DeletedForReceiver]
,[DeletedForSender]
,[CreateDate]
,[IsReceiverRead])
SELECT *
FROM [itc-mvc].[dbo].[Messages] where [ID] >307 – берем все сообщения отправлные после последнего бакупа (март 2013)
GO
set identity_insert [itc3-mvc].[dbo].[Messages] off - возвращаем флаг в нормальное состояние


Некоторые проблемы:

С таблицей постов случилась беда:

Could not continue scan with NOLOCK due to data movement.

http://fotki.ykt.ru/albums/userpics/2014/07-08/normal_8.jpeg


Пришлось обойти сломанную запись, так что в пропал пост номер 7513, комментарии кстати сохранились в старой БД.

Так что было два запроса, и предложения where были такими:
where [ID] > 7513 order by [ID] desc
where [ID] < 7513 and [ID] > 7419 order by [ID] desc


С таблицей Users тоже было не все в порядке:
видимо поломался индекс PRIMARY KEY, и выводило данные пользователей до 8 ноября 2013.

http://fotki.ykt.ru/albums/userpics/2014/07-08/normal_1404802182_9.png

Куча ботов



Пришлось востанавливать командой:
set IDENTITY_INSERT [itc3-mvc].[dbo].[Users]  on; 
insert into [itc3-mvc].[dbo].[Users] ( [Id]
,[Nick]
,[Password]
,[CreateDate]
,[Role]
,[Email]
,[HeadersCounter]
,[PostsCount]
,[CommentsCount]
) select *
FROM [itc-mvc].[dbo].[Users]
where creATEdate >'1.10.2013' and [ID] >5318 order by creATEdate desc
set IDENTITY_INSERT [itc3-mvc].[dbo].[Users] off;

С другим индексом слава богу всё оказалось нормально.

http://fotki.ykt.ru/albums/userpics/2014/07-08/normal_1404802182_10.png


Остальное прошло без особых приключений. Разве что сейчас MVC ASP приложение настроено нелучшим образом - все запросы обрабатывает ASP.NET. Надо будет посмотреть, что можно сделать.

После востановления отвезли в серверную, где Чеширский кот поставил его на свое место.


http://fotki.ykt.ru/albums/userpics/2014/07-08/normal_1404802183_11.jpg


Итоги востановления после аварии - не работает WSUS, и не работает FTP files.it.icmp.ru. Пропала одна статья и пропали последние опросы. Еще очень вероятны проблемы с файлами из коллекции сайта, надо постепенно всё проверить и удалить испорченное.
  • 08 июля 2014, 16:52
  • ed
  • просмотров: ~1738
  • рейтинг: ?

Комментарии (14)

Вы - anonymous, войти ?

можно использовать bbcode-теги
[b]жирный текст[/b]
[i]курсив[/i]
[u]underline[/u]
[s]зачеркнутый текст[/s]
[size=20px]размер шрифта[/size]
всякие изменения текста
[left][/left]
[right][/right]
[center][/center]
позиционирование элементов: картинки, текст и т.д
[url][/url]
[email][/email]
внутри тега [url] помещайте ссылки, а внутри [email] адрес электронной почты;
так же [url] можно использовать в виде:
[url=http://example.com]пример[/url],
[url=http://test.ru][img]http://flickr.com/givemeimg.png[/img][/url]
[code][/code]
[quote][/quote]
внутри тега [code] можно помещать программный код (подстветка попытается включиться автоматически); для выделения цитат используйте [quote]
также можно напрямую указать язык [code=cpp]int i;[/code]
[list][/list]
создаем списки, каждый элемент пишется после [*].

Можно указывать маркер - [list=marker].
возможные маркеры 1(decimal), i(lower-roman), I(upper-roman), a(lower-alpha), A(upper-alpha). Примеры:

[list][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[list=1][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[list=A][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[table][/table]
оформляем таблицу, используя внутренние теги [tr] и [td].
[tr] - строка, [td] - поле в строке,
[table=100%] - можно задавать ширину в процентах, по-умолчанию ширина 100%
[td=2] - можно задавать сколько столбцов входит в это поле. Пример:

[table=50%][tr][td]столбец 1[/td][td]столбец 2[/td][/tr][tr][td]значение 1[/td][td]значение 2[/td][/tr][tr][td=2]сразу 2 столбца[/td][/tr][/table]
[img][/img]
тег для вставки фото или картинок, мы любим картинки. Примеры использования:

[img]http://ya.ru/logo.png[/img],
[img=100x100px]http://ya.ru/logo.png[/img]
[img=fullimg.url]thumbimg.url[/img],
Пожалуйста загружайте картинки на наш сайт, либо вставляйте с бекбоновских ресурсов.
[video][/video]
Проигрывает видео, внутрь вставляем ссылки на видео, поддерживается Play.Ykt.Ru(нужно вставить ссылку на страницу с видео) и tv.ykt.ru(нужно вставить ссылку на адрес файла)