Восстановление сервера с помощью onbar и ISM
Итак, резервная копия DB-пространств и журналов, созданная с помощью
onbar и ISM, у нас есть (в предыдущей статье
мы создали ее на диске, в каталогах c:\tmp\bardata и
c:\tmp\barlog.). Достаточно ли созданных там файлов для успешного
восстановления в случае любого сбоя? Конечно, нет!
В разделе "Which Administrative Files to Back UP?" руководства
по резервному копированию Informix сказано, что для успешного восстановления в
случае сбоя дисков, на которых находилось ПО Informix, или для восстановления
данных на другой машине, необходимо, в простейшем случае, иметь также актуальную
копию следующих административных файлов:
- Файл параметров конфигурации сервера Informix,
ONCONFIG.имя_сервера в каталоге %INFORMIXDIR%\etc.
- Файлы аварийной начальной загрузки
Для ISM - это файл
ixbar.номер_экземпляра в каталоге %INFORMIXDIR%\etc.
- Файл sm_versions в каталоге %INFORMIXDIR%\etc.
В нашем
случае он является копией стандартного, sm_versions.std, так что,
копировать его не так уж обязательно - можно будет воссоздать после
переустановки ПО сервера Informix, если понадобится.
- Реестр SQLHOSTS.
Его можно будет либо воссоздать вручную, либо
предварительно экспортировать с помощью программы regedit.
- Файл oncfg_имя_сервера.номер_экземпляра.
Этот файл
изменяется при каждом успешном запуске сервера или изменении конфигурации
дискового компонента.
- Файлы конфигурации и данных диспетчера хранения данных.
Вот это
действительно тонкий момент, требующий знания особенностей используемого
диспетчера хранения данных. В случае ISM можно, конечно, копировать все
содержимое каталога %ISMDIR%. Но, это будет несколько "избыточное"
решение. По идее, содержимого каталогов %ISMDIR%\index,
%ISMDIR%\mm и %ISMDIR%\res будет вполне достаточно.
Актуальность копии административных файлов означает, что входящие в нее файлы
соответствуют моменту создания последней успешной резервной копии сервера в
целом. Рекомендуется копировать эти административные файлы сразу же после
успешного резервного копирования сервера с помощью onbar.
Постановка задачи
Итак, считаем, что мы полностью подготовились к восстановлению. У нас есть
резервные копии всех необходимых административных файлов, а также резервная
копия сервера в целом, созданная так, как было описано в предыдущей статье.
И тут на нашем сервер Informix произошел сбой. В результате сбоя стали
недоступны все чанки всех DB-пространств. Для демонстрации я просто удалю
каталог c:\IFMXDATA, в котором у меня созданы чанки всех DB-пространств.
c:\IFMXDATA>cd c:\
c:\>rmdir /s /q IFMXDATA
Чанков нет вообще. Мы "потеряли" все данные. Попытаемся запустить сервер из
окна командной строки Informix:
C:\Informix>starts ol_creator
C:\Informix>onstat -m
Informix Dynamic Server Version 9.30.TC2 -- Initialization
-- Up 00:00:06 -- 17280 Kbytes
Message Log File: C:\Informix\ol_creator.log
...
16:10:40 Informix Dynamic Server Started.
Sun May 16 16:10:41 2004
16:10:41 Booting Language <c> from module <>
16:10:41 Loading Module <CNULL>
16:10:41 Booting Language <builtin> from module <>
16:10:41 Loading Module <BUILTINNULL>
16:10:46 Informix Dynamic Server Version 9.30.TC2
Software Serial Number AAC#J415297
16:10:46 Cannot Open Primary Chunk
'C:\IFMXDATA\ol_creator\rootdbs_dat.000', errno = 2
C:\Informix>onstat -
shared memory not initialized for INFORMIXSERVER 'ol_creator'
Как видите, сервер не запускается, поскольку не доступен, как минимум, первый
чанк rootdbs. Это и будет исходная задача, которую предстоит решать.
Мы предполагаем, что ОС работает, все диски уже доступны, ПО сервера Informix
установлено и все содержимое каталога %INFORMIXDIR% доступно. Сервер
зарегистрирован как служба, хотя и не запускается. Предполагаем также, что в
%ISMDIR% доступно содержимое подкаталога bin (это программы,
обеспечивающие работу ISM), и подкаталогов index, mm и res
(это файлы конфигурации и данных диспетчера хранения данных, которые мы
копировали отдельно). Предполагаем, что все три службы ISM успешно запущены.
Кстати, в процессе запуска они и создадут, при необходимости, недостающие
подкаталоги %ISMDIR%.
Все последующие шаги по восстановлению системы в целом я и опишу далее.
Вариантов восстановления может быть несколько - до момента времени, до
определенного журнала, до момента, максимально близкого к моменту сбоя и т.п.
Все они будут отличаться, по сути, только опциями, которые надо будет задать
утилите onbar на конечном этапе восстановления.
Конечно, возможны сбои, в результате которых у нас ничего описанного выше
тоже не будет. Например, компьютер, на котором работает сервер Informix, могут
просто украсть. Тогда надо сначала привести (новую) систему к тому состоянию,
которое описано выше, а именно:
- Установить необходимую версию ОС.
- Воссоздать устройства, на которых было установлено ПО Informix и
размещались чанки.
- Установить ПО сервера Informix. Я предлагаю сразу и проинициализировать
экземпляр сервера Informix с тем же именем, что и ранее работавший, в тот же
каталог %INFORMIXDIR%, с минимальной стандартной конфигурацией. Это даст нам
все необходимые пять служб Informix, включая три службы ISM, автоматически
запущенные. Будут также созданы необходимые серверу записи в реестре,
пользователи и группы.
Описание всех этих действий выходит за рамки данной статьи. Выполнение же
первых двух действий имеет отношение, скорее, к администрированию ОС...
Последовательность восстановления
1. Восстановить конфигурацию сервера и ISM
Останавливаем службы ISM, если они работают, и помещаем на свои места все
описанные выше
административные файлы. У вас ведь есть их актуальные копии, правда?
Речь идет о следующих файлах:
- Файл ONCONFIG.имя_сервера из каталога
%INFORMIXDIR%\etc.
- Файл ixbar.номер_экземпляра из каталога
%INFORMIXDIR%\etc.
- Файл sm_versions из каталога %INFORMIXDIR%\etc.
- Файл oncfg_имя_сервера.номер_экземпляра из каталога
%INFORMIXDIR%\etc.
- Файлы из каталогов %ISMDIR%\index, %ISMDIR%\mm и
%ISMDIR%\res.
Далее, воссоздаем содержимое реестра SQLHOSTS. По идее, конфигурация,
существовавшая на момент создания последней резервной копии, восстановлена.
Снова запускаем службы ISM.
2. Проверить конфигурацию ISM
Если все файлы конфигурации и данных ISM восстановлены полностью, мы должны
увидеть смонтированные устройства (они же были смонтированы на момент завершения
копирования). В окне командной строки сервера Informix выполняем:
C:\Informix>set PATH=%PATH%;c:\ISM\2.20\bin
C:\Informix>ism_show -devices
(nothing) mounted on 4mm tape \\.\Tape0
file disk Data1 mounted on c:\tmp\bardata, write enabled
file disk Logs1 mounted on c:\tmp\barlog, write enabled
C:\Informix>ism_show -volumes
volume pool flags written (%) expires
Bootstrap1 ISMDiskData 0 KB 04/21/06
Data1 ISMDiskData 16 MB 100% 04/21/06
Logs1 ISMDiskLogs 192 KB 100% 04/21/06
Итак, устройства доступны, тома смонтированы. Если это не так (вы
демонтировали тома, и лишь затем скопировали файлы конфигурации и данных ISM),
придется воспользоваться командами монтирования томов (см. предыдую
статью). Если отсутствуют устройства, с которыми вы ранее работали,
значит, копия файлов данных и конфигурации ISM оказалась не настолько
актуальной... Ищем актуальную копию или готовимся к тому, что данные
восстановить не удастся.
У нас, похоже, конфигурация в порядке, поэтому можно переходить к
восстановлению сервера в целом, с автоматическим созданием отсутствующих
чанков.
3. Восстановить сервер с помощью onbar
Выполняем соответствующую команду onbar (см. руководство по
восстановлению):
C:\Informix>onbar -r -w -O
Verifying physical disk space, please wait ...
Error opening file C:\IFMXDATA\ol_creator\rootdbs_dat.000.
Ага, проблемы... Похоже, файл чанка автоматически создать не получилось.
Посмотрим, что пишет утилита onbar в своем журнале сообщений (по
умолчанию, %INFORMIXDIR%\bar_имя_сервера.log):
2004-05-16 17:12:10 2864 2864 C:\Informix\bin\onbar_d -r -w -O
2004-05-16 17:12:11 2864 2864 Unable to create
C:\IFMXDATA\ol_creator\rootdbs_dat.000, there may not be
enough space
2004-05-16 17:12:11 2864 2864 There are no storage
spaces/logical logs to backup/restore.
2004-05-16 17:13:33 2864 2864 C:\Informix\bin\onbar_d
complete, returning 147 (0x93)
Создадим вручную каталог, в котором он находился:
C:\Informix>mkdir c:\IFMXDATA\ol_creator
Кстати, если вам пришлось восстанавливать ПО Informix путем переустановки
сервера и последующей инициализации, а все чанки находились в одном,
стандартном, каталоге, то такая проблема может и не возникнуть.
Пробуем теперь еще раз. Теперь результат лучше:
C:\Informix>onbar -r -w -O
Verifying physical disk space, please wait ...
Verifying physical disk space, please wait ...
Verifying physical disk space, please wait ...
C:\Informix>echo %ERRORLEVEL%
179
Отсюда вывод: опция -O не создаст каталоги, в которых находятся чанки.
Каталоги придется создать вручную. Что именно создавать, будет понятно по
сообщениям onbar.
У нас, похоже, были воссозданы три чанка. Код возврата 179, как сказано в
руководстве по onbar,
означает успешное воссоздание отсутствующих чанков в ходе восстановления.
Посмотрим, что сказано в журнале сообщений onbar:
2004-05-16 17:22:34 3160 3160
C:\PROGRA~1\Informix\bin\onbar_d -r -w -O
2004-05-16 17:22:43 3160 3160 Creating
C:\IFMXDATA\ol_creator\rootdbs_dat.000 to allow restore
2004-05-16 17:22:51 3160 3160 Creating
c:\IFMXDATA\ol_creator\sbspace_dat.000 to allow restore
2004-05-16 17:23:02 3160 3160 Creating
c:\IFMXDATA\ol_creator\workdbs_dat.000 to allow restore
2004-05-16 17:23:05 3160 3160 Successfully connected to
Storage Manager.
2004-05-16 17:23:07 3160 3160 Begin cold level 0 restore
rootdbs (Storage Manager copy ID: 1099 0).
2004-05-16 17:23:42 3160 3160 Completed cold level 0 restore
rootdbs.
2004-05-16 17:23:43 3160 3160 Begin cold level 0 restore
sbspace (Storage Manager copy ID: 1100 0).
2004-05-16 17:23:45 3160 3160 Completed cold level 0 restore
sbspace.
2004-05-16 17:23:46 3160 3160 Begin cold level 0 restore
workdbs (Storage Manager copy ID: 1101 0).
2004-05-16 17:23:47 3160 3160 Completed cold level 0 restore
workdbs.
2004-05-16 17:23:49 3160 3160 Completed whole system
restore.
2004-05-16 17:23:52 3160 3160 Successfully connected to
Storage Manager.
2004-05-16 17:23:52 3160 3160 Begin restore logical log 17
(Storage Manager copy ID: 1102 0).
2004-05-16 17:23:53 3160 3160 Completed restore logical log
17.
2004-05-16 17:23:54 3160 3160 Begin restore logical log 18
(Storage Manager copy ID: 1105 0).
2004-05-16 17:23:55 3160 3160 Completed restore logical log
18.
2004-05-16 17:23:56 3160 3160 Begin restore logical log 19
(Storage Manager copy ID: 1107 0).
2004-05-16 17:23:57 3160 3160 Completed restore logical log
19.
2004-05-16 17:24:05 3160 3160 Completed logical restore.
2004-05-16 17:24:07 2360 2360 C:\Informix\bin\onbar_d -b -l
2004-05-16 17:24:08 2360 2360 C:\Informix\bin\onbar_d
complete, returning 0 (0x00)
2004-05-16 17:24:11 3160 3160 C:\Informix\bin\onbar_d
complete, returning 179 (0xb3)
Похоже, сервер восстановлен вплоть до последнего логического журнала,
резервная копия которого была обнаружена. Что и требовалось. Проверим режим
работы и сообщения сервера:
C:\Informix>onstat -m
Informix Dynamic Server Version 9.30.TC2 -- Quiescent --
Up 00:34:21 -- 3366
4 Kbytes
Message Log File: C:\Informix\ol_creator.log
17:24:05 Logical Recovery Complete.
20 Committed, 0 Rolled Back, 0 Open, 0 Bad Locks
17:24:05 Logical Recovery Complete.
17:24:06 Quiescent Mode
17:24:06 Logical Log 19 Complete.
17:24:06 Checkpoint Completed: duration was 0 seconds.
17:24:06 Checkpoint loguniq 20, logpos 0x18
17:24:06 Maximum server connections 0
17:24:08 Booting Language <spl> from module <>
17:24:08 Loading Module <SPLNULL>
17:29:31 Fuzzy Checkpoint Completed: duration was 0
seconds, 2 buffers not flushed.
17:29:31 Checkpoint loguniq 20, logpos 0x804c
17:29:31 Maximum server connections 0
17:34:31 Fuzzy Checkpoint Completed: duration was 0
seconds, 2 buffers not flushed.
17:34:31 Checkpoint loguniq 20, logpos 0x904c
17:34:31 Maximum server connections 0
Переводим сервер в многопользовательский режим, и все:
C:\Informix>onmode -m
C:\Informix>onstat -
Informix Dynamic Server Version 9.30.TC2 -- On-Line -- Up
00:46:49 -- 33664
Kbytes
Все действительно так просто, при наличии резервных копий всего, что
необходимо. Даже чанки вручную создавать не пришлось.
Заключение
В этой статье я описал основные шаги восстановления данных сервера Informix
при наличии резервной копии на диске, созданной с помощью утилиты onbar и
диспетчера хранения данных ISM. Мы рассмотрели ряд нюансов этой простой
процедуры, дополнительные шаги по резервному копированию всех необходимых
административных файлов, а также определили предварительные условия, при которых
она непосредственно применима.
Документация
1.
Informix Storage Manager Administrator's Guide, Version 2.2 (G251-0498-00).
2.
Informix Backup and Restore Guide, Version 8.31/9.3 (G251-0481-00)