восстановление данных скопируем скрипт создания менеджера и создадим нового, в название добавим "restr" cp createmqmgr createmqrestr '' #!/bin/bash \\ echo '---------------Create MQM-------------'\\ . ~/.bash_profile\\ endmqm -p QML1\\ #######\\ dltmqm QML1\\ ######\\ echo "----------------crtmqm---------------"\\ crtmqm -q -md /home/mqm/data -ld /home/mqm/log -ll -lf 8096 'MQL1'\\ # ll - линейный лог\\ #lf размер журнала в блоках 4096\\ #\\ #\\ strmqm 'MQL1'\\ #---------------------------------------------\\ runmqsc 'MQL1' < 2.sc > report.log\\ \\ ~\\ '' vim 2.sc ''* ------------------------ настройки менеджера\\ ALTER QMGR SCMDSERV (QMGR)\\ ALTER QMGR DESCR ('test arministrator for restore')\\ ALTER QMGR DEADQ (badqueue)\\ * Создание очередей\\ DEFINE QLOCAL ('badqueue') DESCR ('очередь отвергнутых сообщений')\\ DEFINE QLOCAL (QL.A) MAXDEPTH (100) MAXMSGL(100) DEFPSIST(YES)\\ DEFINE QLOCAL (QL.B) MAXDEPTH (100) MAXMSGL(100) DEFPSIST(YES)\\ '' запустим ./createmqrestr После этого подключимся к менеджеру runmqsc QML1 посмотрим все очереди DIS QL (Q*) поместим в них сообщения '' amqsput QL.A QML1\\ Sample AMQSPUT0 start\\ target queue is QL.A\\ aaaa\\ a1\\ a2\\ Sample AMQSPUT0 end\\ '' ''amqsput QL.B QML1\\ Sample AMQSPUT0 start\\ target queue is QL.B\\ bbbb\\ b1\\ b2\\ Sample AMQSPUT0 end '' просмотрим статус очереди DISPLAY QSTATUS (QL.A) Видим длинну очереди создадим алиасы ''DEFINE QALIAS (A) TARGET (QL.A) DEFPSIST (NO) REPLACE\\ DEFINE QALIAS (B) TARGET (QL.B) DEFPSIST (NO) REPLACE\\'' Если в очереди DEFPSIST=YES , а в алиасе DEFPSISTT=NO, и обращение через алиас, то данные на диск не пишутся Посмотрим состояние алиасов '' DISPLAY qa (A)\\ DISPLAY qa (B)\\ '' Состояние алиаса мы увидеть не можем, можем только описание добавим по 2 сообщения в алиасы '' amqsput A QML1\\ Sample AMQSPUT0 start\\ target queue is A\\ 1111\\ 1111\\ Sample AMQSPUT0 end'' ''amqsput B QML1\\ Sample AMQSPUT0 start\\ target queue is B\\ 2222\\ 2222\\ Sample AMQSPUT0 end'' посмотрим статусы очередей ''DISPLAY QS (Q*)\\ AMQ8450I: Сведения команды Показать состояние очереди.\\ QUEUE(QL.B) TYPE(QUEUE)\\ CURDEPTH(5)\\ AMQ8450I: Сведения команды Показать состояние очереди.\\ QUEUE(QL.A) TYPE(QUEUE)\\ CURDEPTH(5) '' обе очереди имеют по 5 ообщений перезагрузим сервер после перезаргузки увидим что сообщений осталость по 3 ВОССТВНОВЛЕНИЕ ПОТЕРЕННЫХ СООБЩЕНИЙ просмотрим ~/log/QML1/active Используем утилиту ''rcrmqobj -m QML1 -t all QL.A\\ rcrmqobj -m QML1 -t qlocal QL.B'' Данные восстановить не удалось рассмотрим другую ситацию - проблема с диском для эмуляции проблемы удалим /home/mqm/data/QML1/queues/QL!1 перезапустим менеджер очередей и проверим статусы очередей '' DISPLAY QS (Q*)\\ 1 : DISPLAY QS (Q*)\\ AMQ8450I: Сведения команды Показать состояние очереди.\\ QUEUE(QL.B) TYPE(QUEUE)\\ CURDEPTH(3)'' '' DISPLAY QS (QL.A)\\ 2 : DISPLAY QS (QL.A)\\ AMQ8149S: Объект IBM MQ поврежден.'' попробуем восстановить rcrmqobj -m QML1 -t qlocal QL.A проверим состояние очереди ''DISPLAY QS (QL.A)\\ 1 : DISPLAY QS (QL.A)\\ AMQ8450I: Сведения команды Показать состояние очереди.\\ QUEUE(QL.A) TYPE(QUEUE)\\ CURDEPTH(3) CURFSIZE(1)\\ CURMAXFS(2088960) IPPROCS(0)\\ LGETDATE( ) LGETTIME( )\\ LPUTDATE( ) LPUTTIME( )\\ MEDIALOG(S0000000.LOG) MONQ(OFF)\\ MSGAGE( ) OPPROCS(0)\\ QTIME( , ) UNCOM(NO) '' чередь восстановилась получим из нее данные amqsbcg QL.A QML1 Все данные доступны. Сделаем ХОЛОДНУЮ копию сервера Необходимо остановить все менеджеры посморим какие запущены ''dspmq QMNAME(servermqg1/M1) STATUS(Выполняется)\\ QMNAME(MQL1) STATUS(Выполняется)\\ QMNAME(QML1) STATUS(Выполняется)'' остановим менеджеры '' endmqm QML1\\ endmqm MQL1\\ endmqm servermqg1/M1 '' проверим еще раз dspmq ''QMNAME(servermqg1/M1) STATUS(Стандартное завершение)\\ QMNAME(MQL1) STATUS(Стандартное завершение)\\ QMNAME(QML1) STATUS(Стандартное завершение) '' выключаем и делаем копию виртуальной машины или всех папок(data,log) касаемых mqm