восстановление данных
скопируем скрипт создания менеджера и создадим нового, в название добавим «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*)
обе очереди имеют по 5 ообщений
AMQ8450I: Сведения команды Показать состояние очереди.
QUEUE(QL.B) TYPE(QUEUE)
CURDEPTH(5)
AMQ8450I: Сведения команды Показать состояние очереди.
QUEUE(QL.A) TYPE(QUEUE)
CURDEPTH(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(Стандартное завершение)
выключаем и делаем копию виртуальной машины или всех папок(data,log) касаемых mqm
QMNAME(MQL1) STATUS(Стандартное завершение)
QMNAME(QML1) STATUS(Стандартное завершение)