Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / После восстановления 0 уровня накатывается только один логический журнал / 13 сообщений из 13, страница 1 из 1
18.03.2009, 12:22
    #35876278
defocus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После восстановления 0 уровня накатывается только один логический журнал
Всем привет !

Linux CentOS 5, Informix Dynamic Server Version 9.40.UC6

Натолкнулся на какую то фигню - После восстановления 0 уровня накатывается только один логический журнал ...

Все по порядку :
/opt/informix/etc/onconfig :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
ALARMPROGRAM    /usr/scripts/bin/inf_alarm.sh # Alarm program path

TAPEDEV         /backup/testcomp_base   # Tape device path
TAPEBLK         8               # Tape block size (Kbytes)
TAPESIZE        999999999       # Maximum amount of data to put on tape (Kbytes)

LTAPEDEV        /backup/testcomp_log    # Log tape device path
LTAPEBLK        8               # Log tape block size (Kbytes)
LTAPESIZE       999999999       # Max amount of data to put on log tape (Kbytes)

Логи оттаскиваются скриптом /usr/scripts/bin/inf_alarm.sh который создает fifo и с одной стороны запускат ontape -a , а с другой cat fifo | gzip -c >testcomp_log.StartNumber-EndNumber.gz

Это бэкап 0 уровня и логи за ним :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
[root@testcomp 11]# l /backup/11/
total 178208
drwxrwxr-x 2 informix informix      4096 Mar 18 11:59 ./
drwxr-xr-x 7 informix informix      4096 Mar 18 11:53 ../
-rw-rw-r-- 1 informix informix 182232437 Mar 18 10:34 testcomp_base.0.gz.aa
-rw-rw---- 1 informix informix      7427 Mar 18 10:37 testcomp_log.255-255.gz
-rw-rw---- 1 informix informix      5434 Mar 18 10:40 testcomp_log.256-256.gz
-rw-rw---- 1 informix informix       893 Mar 18 10:41 testcomp_log.257-257.gz
-rw-rw---- 1 informix informix      4600 Mar 18 10:41 testcomp_log.258-258.gz

1. Разворачиваю бэкап 0 уровня :
Код: plaintext
1.
2.
3.
4.
5.
/etc/init.d/informix stop
FIFO=`grep '^TAPEDEV' $INFORMIXDIR/etc/onconfig | awk '{print $2}'`
mkfifo -m 660 $FIFO ; chown informix:informix $FIFO
for i in 1 2 ; do cat /backup/11/testcomp_base.0.gz.* | gzip -cd >$FIFO ; done &
ontape -r
...
Please mount tape 1 on /backup/testcomp_base and press Return to continue ... <ENTER>
...
Continue restore? (y/n)y
Do you want to back up the logs? (y/n)n

В логе :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
11:44:21  IBM Informix Dynamic Server Started.
11:44:21  Segment locked: addr=0x44000000, size=227794944

Wed Mar 18 11:44:22 2009

11:44:22  Event alarms enabled.  ALARMPROG = '/usr/scripts/bin/inf_alarm.sh'
11:44:22  Booting Language <c> from module <>
11:44:22  Loading Module <CNULL>
11:44:22  Booting Language <builtin> from module <>
11:44:22  Loading Module <BUILTINNULL>
11:44:27  IBM Informix Dynamic Server Version 9.40.UC6
11:44:27  IBM Informix Dynamic Server Initialized -- Shared Memory Initialized.

11:44:27  Data replication type and state information reset. To start DR, use
          the 'onmode -d' command and wait for the pair to be operational,
          before shutting down the database server

11:44:27  Dataskip is now OFF for all dbspaces
11:44:27  Restartable Restore has been DISABLED
11:44:27  Recovery Mode
11:44:30  Physical Restore of rootdbs, physdbs, logicdbs, maindbs started.

11:44:30  Checkpoint Completed:  duration was 0 seconds.
11:44:30  Checkpoint loguniq 255, logpos 0x12018, timestamp: 0x31b392b

11:44:30  Maximum server connections 0
11:44:30  Checkpoint Completed:  duration was 0 seconds.
11:44:30  Checkpoint loguniq 255, logpos 0x12018, timestamp: 0x31b393b

11:44:30  Maximum server connections 0
11:44:30  Checkpoint Completed:  duration was 0 seconds.
11:44:30  Checkpoint loguniq 255, logpos 0x12018, timestamp: 0x31b394b

11:44:30  Maximum server connections 0
11:46:15  Checkpoint Completed:  duration was 0 seconds.
11:46:15  Checkpoint loguniq 255, logpos 0x12018, timestamp: 0x31b395a

11:46:15  Maximum server connections 0
11:46:15  Physical Restore of rootdbs, physdbs, logicdbs, maindbs Completed.
11:46:15  Checkpoint Completed:  duration was 0 seconds.
11:46:15  Checkpoint loguniq 255, logpos 0x12018, timestamp: 0x31b3967

Restore a level 1 archive (y/n) n
Do you want to restore log tapes? (y/n)y

Roll forward should start with log number 255

Please mount tape 1 on /backup/testcomp_log and press Return to continue ...

В логе :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
11:46:15  Maximum server connections 0
11:46:27  Logical Recovery Started.
11:46:27  1 recovery worker threads will be started.
11:46:27  Checkpoint Completed:  duration was 0 seconds.
11:46:27  Checkpoint loguniq 255, logpos 0x12018, timestamp: 0x31b397c

11:46:27  Maximum server connections 0
11:46:27  Start Logical Recovery - Start Log 255, End Log ?
11:46:27  Starting Log Position - 255 0x12018
11:46:27  Clearing the physical and logical logs has started
11:46:39  Cleared 299 MB of the physical and logical logs in 12 seconds

Запускаю с другой консоли :
Код: plaintext
1.
2.
3.
LFIFO=`grep '^LTAPEDEV' $INFORMIXDIR/etc/onconfig | awk '{print $2}'`
mkfifo -m 660 $LFIFO ; chown informix:informix $LFIFO
cat /backup/11/testcomp_log* | gzip -cd >$LFIFO

Жму ENTER на сообщении
Please mount tape 1 on /backup/testcomp_log and press Return to continue ...

В логе :
Код: plaintext
1.
2.
3.
4.
11:53:26  Checkpoint Completed:  duration was 0 seconds.
11:53:26  Checkpoint loguniq 255, logpos 0x13018, timestamp: 0x31b3989

11:53:26  Maximum server connections 0

Do you want to restore another log tape? (y/n)n

Далее onmode -m и вижу, что база в состоянии после лога 255 и до 256 ...
если же на предложение Do you want to restore another log tape? (y/n)
сказать 'y' и дать ему
Код: plaintext
1.
cat /backup/11/testcomp_log.256-256.gz | gzip -cd >$LFIFO

То он накатит 256 лог ... ну и т.д...

Так я помру догонять базу до актуала ...

Почему сконкатенированный поток из логов ( cat /backup/11/testcomp_log* | gzip -cd >$LFIFO ) воспринимается как один первый лог ?

В семерке тот же способ вроде работал правильно ... поток логов воспринимался нормально и догонялся правильно ...

P.S. Если сгрудить все логи в один простой файл
Код: plaintext
1.
2.
rm $LFIFO
cat /backup/11/testcomp_log* | gzip -cd >$LFIFO 
И подставить его при восстановлении, ко картина таже ...

Может есть у кого какаие мысли ?
...
Рейтинг: 0 / 0
18.03.2009, 12:41
    #35876368
svat2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После восстановления 0 уровня накатывается только один логический журнал
(в качестве предположения)

...в одном из очень давних обсуждений (лень искать ссылки) упоминалось, что (на вашем примере) в команде:
Код: plaintext
cat /backup/11/testcomp_base.0.gz.* | gzip -cd >$FIFO
необходимо организовать доп.буферизацию перед передачей в FIFO.
Т.е. привести к виду:
Код: plaintext
cat /backup/11/testcomp_base.0.gz.* | gzip -cd | blockread >$FIFO

Где blockread (у нас) - самописная Си-программа в неск. строк, могу дать исходники.
...
Рейтинг: 0 / 0
18.03.2009, 12:50
    #35876402
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После восстановления 0 уровня накатывается только один логический журнал
svat2(в качестве предположения)

...в одном из очень давних обсуждений (лень искать ссылки) упоминалось, что (на вашем примере) в команде:
Код: plaintext
cat /backup/11/testcomp_base.0.gz.* | gzip -cd >$FIFO
необходимо организовать доп.буферизацию перед передачей в FIFO.
Т.е. привести к виду:
Код: plaintext
cat /backup/11/testcomp_base.0.gz.* | gzip -cd | blockread >$FIFO

Где blockread (у нас) - самописная Си-программа в неск. строк, могу дать исходники.

http://www.sql.ru/forum/actualthread.aspx?tid=369246&hl=blockread#3490788
...
Рейтинг: 0 / 0
18.03.2009, 12:50
    #35876406
defocus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После восстановления 0 уровня накатывается только один логический журнал
Это тут не причем - восстановление то идет нормально и все читается ...
Смысл вопроса совсем не в этом.
Про blockread тема была другой - там на каких то юниксах типа Irix или солярке pipe не выдавал блоками и приходилось так делать. Здесь это не нужно.
...
Рейтинг: 0 / 0
18.03.2009, 13:10
    #35876471
svat2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После восстановления 0 уровня накатывается только один логический журнал
defocus
Это тут не причем - восстановление то идет нормально и все читается ...


ясно, я не вник, предположение отбрасываем :)

defocus
Так я помру догонять базу до актуала ...
...
Может есть у кого какаие мысли ?

если суть вопроса в вышезацитированном, то это можт АнатоЛой подскажет,
у него схожая проблема была, можт он ее как решил...
Cхематически подход был в объединении и "ontape -l" и "cat ... > $FIFO" в один
скрипт, в цикле по файлам логов, проблема была только в подсовывании ontape-у
злощасного подтверждения "y". Ибо действительно, при большом количестве логов -
утомляет...
...
Рейтинг: 0 / 0
18.03.2009, 13:51
    #35876619
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После восстановления 0 уровня накатывается только один логический журнал
svat2если суть вопроса в вышезацитированном, то это можт АнатоЛой подскажет,
у него схожая проблема была, можт он ее как решил...
Cхематически подход был в объединении и "ontape -l" и "cat ... > $FIFO" в один
скрипт, в цикле по файлам логов, проблема была только в подсовывании ontape-у
злощасного подтверждения "y". Ибо действительно, при большом количестве логов -
утомляет...expect
...
Рейтинг: 0 / 0
18.03.2009, 19:42
    #35877746
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После восстановления 0 уровня накатывается только один логический журнал
defocus
Так я помру догонять базу до актуала ...

Эээ... Из форумчан никто не помер от этого?! :)

defocus
Почему сконкатенированный поток из логов ( cat /backup/11/testcomp_log* | gzip -cd >$LFIFO ) воспринимается как один первый лог ?

Ну... Во первых, где гарантия что "cat /backup/11/testcomp_log*" запихнёт их в ПРАВИЛЬНОЙ последовательности?!
А во-вторых, дело, скорее всего, непосредственно в ontape. Например, ontape может после обнаружения признака конца первого лога (ну или отчитав кол-во байт по длине лога), просто заканчивать обработку потока, а получив подтверждение о готовности следующего: закрывать и открывать поток заново... :(

defocus
В семерке тот же способ вроде работал правильно ... поток логов воспринимался нормально и догонялся правильно ...

Дааа???

defocus
Может есть у кого какаие мысли ?


Пессимистичная: поставить восстановление, и спокойно пить кофе на кухне у меня так и не получилось.

Оптимистичная: добиться того, чтобы на загрузку одного лога требовалось только несколько нажатий клавиши - уже давно реализованная задача (причём не мной :)). svat2 как раз про неё упоминал. Не полный фен-шуй, но и раздражения УЖЕ особо не вызывает :).

Суть в следующем:
1. Запускаем процесс, который в цикле в ПРАВИЛЬНОМ порядке, скармливает ОТДЕЛЬНО каждый лог в LFIFO.
2. Запускаем ontape, который начинает задавать свои любимые вопросы. Вот тут и приходится нажимать на эти пресловутые клавиши: "y", "Enter", "Enter".
И эта обратная связь со строны "оператора-администратора" необходима, поскольку между событиями "ontape закончил читать лог N" и "ontape начал читать лог N+1" процессу-кормильцу очень нужно успеть подключить шланг лога N+1 к LFIFO.
Иначе возникают неприятные накладки (не пытайте - не вспомню :( ).
Кроме того,
1) с одной стороны, иногда ontape открывает текущий лог дважды :(.
2) с другой стороны, если ontape'у скормить один и тот же лог несколько раз, ontape повторы просто игнорирует (что видно только по подозрительно быстрой скорости обработки).
В результате приходиться процессу-кормильцуLFIFO в цикле каждый лог скармливать дважды.

Вроде всё... Ну разве что можно добавить, что если порыться в инете - то эта схема найдётся уже реализованным скриптом где-нить на просторах IIUG, а также можно эту схему организовать в одном скрипте...

To Журавлёв:
какое из русских значений слова expect подразумевается? :)
...
Рейтинг: 0 / 0
18.03.2009, 20:06
    #35877784
svat2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После восстановления 0 уровня накатывается только один логический журнал
АнатоЛой
To Журавлёв: какое из русских значений слова expect подразумевается? :)

To АнатоЛой:
:) Толик, подразумевается название утилиты.

См. http://ru.wikipedia.org/wiki/Expect

... хотя мне больше "по душе" empty
(cм. http://empty.sourceforge.net/
а более подробно и по-русски: http://www.opennet.ru/base/dev/interactive_tools.txt.html)

Единственное, что сейчас нету тестовой железяки, на которой бы можно было бы,
никому не мешая, испытать одну из этих утилит в своих скриптах...
...
Рейтинг: 0 / 0
19.03.2009, 09:43
    #35878323
defocus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После восстановления 0 уровня накатывается только один логический журнал
АнатоЛойВо первых, где гарантия что "cat /backup/11/testcomp_log*" запихнёт их в ПРАВИЛЬНОЙ последовательности?!
В данном случае логи именуются
-rw-rw---- 1 informix informix 7427 Mar 18 10:37 testcomp_log.255-255.gz
-rw-rw---- 1 informix informix 5434 Mar 18 10:40 testcomp_log.256-256.gz
-rw-rw---- 1 informix informix 893 Mar 18 10:41 testcomp_log.257-257.gz
-rw-rw---- 1 informix informix 4600 Mar 18 10:41 testcomp_log.258-258.gz
"*" в никсах выдает список отсортированный по алфавиту, поэтому в ДАННОМ случае последовательность будет правильной. Другие случаи я не рассматриваю.

АнатоЛойНапример, ontape может после обнаружения признака конца первого лога (ну или отчитав кол-во байт по длине лога), просто заканчивать обработку потока, а получив подтверждение о готовности следующего: закрывать и открывать поток заново... :(
Как тогда объяснить тот факт, что восстановление не через pipe (из обычного файла) приводит к тем же самым результатам (накатывается только первый лог) ?
Поясню еще раз - сливаем содержимое всех логов в один ПРОСТОЙ файл (не pipe)
cat /backup/11/testcomp_log* | gzip -cd >/backup/testcomp_log
и при восстановлении из него накатывается только первы лог.
Если слить в него логи 256-258, то восстановится только 256 лог, ну и т.д по индукции ...
pipe тут явно ни при чем.

defocusВ семерке тот же способ вроде работал правильно ... поток логов воспринимался нормально и догонялся правильно ...
Если смогу - сегодня проверю и отпишу.

Как то все грустно получается...Чего то я не понимаю - ведь наверное с ленточкой таких проблем не возникает ? Типа вставьте ленточку с логами - вставляем и за один раз накатываем все что на ней есть ? или нет ?

Может я использую неправильную схему хранения и оттаскивания логов ?
Напомню еще раз мою схему :
Скриптом обрабатывается сигнал переключения на следующий лог и делается ontape -a в pipe, который с другой стороны подхватывается гзипом и укладывается куда надо с соответствующими номерами логов.
Если можно делать это как то удобнее - скажите пожалуйста.

С expect-ом проблем нет, могу и с ним скрипт написать... но по моему опыту работы с ним - зачастую он сильно глючит и делает то, чего не ожидается от него..
...
Рейтинг: 0 / 0
19.03.2009, 12:56
    #35878984
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После восстановления 0 уровня накатывается только один логический журнал
defocusАнатоЛойНапример, ontape может после обнаружения признака конца первого лога (ну или отчитав кол-во байт по длине лога), просто заканчивать обработку потока, а получив подтверждение о готовности следующего: закрывать и открывать поток заново... :(
Как тогда объяснить тот факт, что восстановление не через pipe (из обычного файла) приводит к тем же самым результатам (накатывается только первый лог) ?
Поясню еще раз - сливаем содержимое всех логов в один ПРОСТОЙ файл (не pipe)
cat /backup/11/testcomp_log* | gzip -cd >/backup/testcomp_log
и при восстановлении из него накатывается только первы лог.
Если слить в него логи 256-258, то восстановится только 256 лог, ну и т.д по индукции ...
pipe тут явно ни при чем.

В моём предположении меняем "поток" на "файл" - и получаем тот же результат. Думаю, всё-таки стоит принимать во внимание, что ontape нацелен был на работу с лентами... И не зря он [она?!] пошленько переспрашивает не только про "хотите ли продолжить?", но и про "вставили ли?"...

П.С.: В 11-ке вон ontape уже сам в каталог складывает и файлы нумерует, и сам потом оттуда их подымает при восстановлении...

defocus
Как то все грустно получается...Чего то я не понимаю - ведь наверное с ленточкой таких проблем не возникает ? Типа вставьте ленточку с логами - вставляем и за один раз накатываем все что на ней есть ? или нет ?

Честно, сам я ленту не только в руках не держал, но наверное и не видел даже :)
...
Рейтинг: 0 / 0
19.03.2009, 13:18
    #35879067
defocus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После восстановления 0 уровня накатывается только один логический журнал
В семерке таже фигня. Ладно. понятно. буду писать на expect.
Всем спасибо !
...
Рейтинг: 0 / 0
19.03.2009, 14:52
    #35879406
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После восстановления 0 уровня накатывается только один логический журнал
defocusЕсли можно делать это как то удобнее - скажите пожалуйста.
А почему не хотите попробовать OnBar с каким-то Storage Manager-ом, тем же ISM ?
Все достаточно удобно, автоматизировано, можно сжимать архивы на лету и т.д.
...
Рейтинг: 0 / 0
19.03.2009, 15:03
    #35879446
defocus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
После восстановления 0 уровня накатывается только один логический журнал
Про OnBar знаю, но не пробовал. Спасибо.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / После восстановления 0 уровня накатывается только один логический журнал / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]