YarrowSoft

Архив : Re[2]: [cache_ru] Откат по журналу ^JOURNAL ^JRNUTIL : группа пользователей постреляционной СУБД Cache


[Предыдущее - Re: [cache_ru] Откат по журналу ^JOURNAL ^JRNUTIL] [Следующее - [cache_ru] Re: нРЙЮР ОН ФСПМЮКС ^JOURNAL ^JRNUTIL]


Письмо #5324

Тема: Re[2]: [cache_ru] Откат по журналу ^JOURNAL ^JRNUTIL
Начало этой темы: [cache_ru] Откат по журналу ^JOURNAL ^JRNUTIL
Это ответ на: Re: [cache_ru] Откат по журналу ^JOURNAL ^JRNUTIL
Ответ на это письмо: Re: [cache_ru] Откат по журналу ^JOURNAL ^JRNUTIL
От: Sergij Gromov Дата: 03 Ноября 2006 02:01

КАВ>> Тут вчера произошел неописуемый случай.
КАВ>> в 16-30(!) случайно произошел kill ^МОВД
КАВ>> где МОВД - МНОГО ОЧЕНЬ ВАЖНЫХ данных.

КАВ>> В журнале я этот килл нашел довольно быстро. А вот исправить ситуацию
КАВ>> быстро не смог (не был подготовлен, да и опыта мало в этом деле). В
КАВ>> общем, пока придумал, как исправлять, прикладники эти данные как-то
КАВ>> собрали... (выручило то, что на нормализацию БД нормальные программеры
КАВ>> наклали). А у меня получилась тренировка.

КАВ>> Появилось несколько вопросов:

КАВ>> 1. Как я понял, при использовании ^JOURNAL, большое значение имеет
КАВ>> размер файла журнала. У меня был установлен максимум 1024 МВ и в день
КАВ>> получалось максимум два файла журнала (это пару раз в месяц). Обычный
КАВ>> размер - около 200 МВ.

КАВ>> ВОПРОС: Какой максимальный размер имеет смысл ставить? Сейчас я
КАВ>> поставил 50 М, но сомневаюсь, как система прореагирует на 20-ть и
КАВ>> более файлов журналов в сутки?

КАВ>> 2. Очень приятная (с виду) утилита ^JRNUTIL. Но почему-то работает
КАВ>> странно:

КАВ>>         w
КАВ>> !,$$OPENJRN^JRNUTIL("/usr/cachesys/mgr/journal/20061101.001")
КАВ>>         w
КАВ>> !,$$USEJRN^JRNUTIL("/usr/cachesys/mgr/journal/20061101.001")
КАВ>>         w !,$$GETREC^JRNUTIL(180546768,.a)
КАВ>>         w
КАВ>> !,$$CLOSEJRN^JRNUTIL("/usr/cachesys/mgr/journal/20061101.001")

КАВ>> Видим, что вроде все ок, но в "a" оказывается не совсем то, что
КАВ>> обещали:

КАВ>> w
КАВ>> a(1,1)="10338/180546728/180546804:K:5:^["^^/usr/cachesys/наша_область/"]МОВД"
КАВ>> a(1,1,3)="60570,58494"

КАВ>> Вроде понятно, что а(1,1,2) быть и не должно - кильнули же.
КАВ>> А вот где так нужные данные из а(1,1,1)?????

КАВ>>  ;              JRNODE(1,1)=
КАВ>> pid,remsysid/prev/next:type:collation:glo ;LFT379 added collation
КАВ>>  ;                 pid  is the process id on the remote system
КАВ>>  ;                 remsysid is the internal unique id of the remote
КАВ>>  ;                      system
КАВ>>  ;                 prev/next are previous/next adjacent record addrs
КАВ>>  ;                 type is "S", "K", "k", "ZK", "B", "C", "NS, "NK",
КАВ>>  ;                      "s" (for Set $BIT), "Ns" (for network Set $BIT), ;RAM990
КАВ>>  ;                      or "ZNK" designating the type of the record.
КАВ>>  ;                 glo is the complete global reference name.
КАВ>>  ;                         
КАВ>>  ;              JRNODE(1,1,1) contains the old value if the global had
КАВ>>  ;              a previous value and this record is for a SET or KILL.
КАВ>>  ;              In the case of Set $BIT, the old value is in the form
КАВ>>  ;              bitpos^bitval, where bitpos is the 1-based integer bit
КАВ>>  ;              position of the bit and bitval is either 0 or 1.
КАВ>>  ;
КАВ>>  ;              JRNODE(1,1,2) contains the new value if type is "S"
КАВ>>  ;                  (for SET) or "s" (for Set $BIT)         ;RAM990
КАВ>>  ;              In the case of Set $BIT, the new value is in the form
КАВ>>  ;              bitpos^bitval, where bitpos is the 1-based integer bit
КАВ>>  ;              position of the bit and bitval is either 0 or 1.
КАВ>>  ;
КАВ>>  ;              JRNODE(1,1,3) contains the timestamp in $H format

КАВ>> 3. Возникла версия: удалить из журнала запись о килле и восстановить
КАВ>> данные по журналу. Тоже не проходит:

КАВ>>         w
КАВ>> !,$$OPENJRN^JRNUTIL("/usr/cachesys/mgr/journal/20061101.001")
КАВ>>         w
КАВ>> !,$$USEJRN^JRNUTIL("/usr/cachesys/mgr/journal/20061101.001")
КАВ>>         w !,!,$$DELREC^JRNUTIL(180546768)
КАВ>>         w
КАВ>> !,$$CLOSEJRN^JRNUTIL("/usr/cachesys/mgr/journal/20061101.001")

КАВ>> Получаем:

КАВ>> 1
КАВ>> 1
КАВ>> -15,Unsuccessful operation
КАВ>> 1

КАВ>> С правами на файл вроде все нормально - rw-rw-rw-. C чоуном тоже.
КАВ>> Похоже, не получается отработать у $zu(78,19,ADDR). Но почему -
КАВ>> непонятно. М.б. есть версии?

КАВ>> Журнал перед всеми операциями был переключен. Пробовал и отключать
КАВ>> журналирование вообще на время операции.

d> Давным давно была такая плохая система MSM. Но в ней при
d> восстановлении можно было интерактивно указывать пошаговость операций.
d> Типа того: восстанавливай отсюда и до туда (критерии выбора - любые:
d> имя глобала, тип команды и т.п.). При наличии бэкапа и таких
d> возможностей восстановления из журнала легко восстанавливались
d> удаленные данные (без лишних тренировок).

d> Неоднократные обращения в суппорт привели к угасанию моего энтузиазма.
d> Ответ был один - "напиши свою утилиту восстановленяи из журнала, у нас
d> есть АПИ к нему". БОЛЬШЕ МНЕ ДЕЛАТЬ НЕЧЕГО, КАК ПИСАТЬ СИСТЕМНЫЕ
d> УТИЛИТЫ ДЛЯ КАШЕ !

d> Теперь про Ваши попытки. Они тщетны ! Поскольку журнал хранит максимум
d> 65535 (по умолчанию 1000) узлов для каждого Кила, выполненного в рамках транзакции. У вас
d> даже похоже не в транзкции было. Так что достать МНОГО БОЛЬШИХ И
d> ВАЖНЫХ ДАННЫХ из журнала Каше вам все равно не удастся (если только
d> они не были удалены в рамках транзакции и ол-во узелков дерева было
d> меньше ограничения).

d> Носов Дмитрий

Упомянулась "такая плохая система MSM" - уж воткну 5коп.

Тот  журнал,  о  котором  написал  Дмитрий,  поможет, если заполненные
журналы  не  трансформировать в "повторное использование", а хранить в
отдельном месте. Тогда - всё, как сказано - "без лишних тренировок".

Я пользую этот журнал исключительно для случаев отказа системы, посему
в штатной вертушке имеются 5 файлов журнала, которые юзаются в цикле и
молча переходят в "REUSABLE".

А  вот  для  случая  отката  удалённых  глобалей  у меня есть механизм
навеяный  виндовским рециклом. Ясно и прозрачно. В MSM-е он реализован
на  описываемом  журнале  +  небольшая  моя  приблуда. За 8 лет работы
трижды  восстанавливал ^МБИВД одним кликом мыши. Думаю что портировать
в Кашу - не проблема знатоку М-языка.

--
Sergij Gromov
JSC Bank "Lviv"
+380(32)245-64-20
ICQ#137727952

http://www1.bank.lviv.ua/clients.php




--


[2000|2001|2002|2003|2004|2005|2006|2007|2008] [Январь|Февраль|Март|Апрель|Май|Июнь]
[01|02|03|04|05|06]

Error. Page cannot be displayed. Please contact your service provider for more details. (12)