восстановление данных
скопируем скрипт создания менеджера и создадим нового, в название добавим «restr»
cp createmqmgr createmqrestr
#!/bin/bash
2.sc
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
~
запустим
./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