Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché Новый топик    Ответить
 Как настроить удаление файлов журнала на количество этих файлов?  [new]
я
Guest
В ПУ есть только опции на количество дней или количество удачных бэкапов. Но в базу валится 10+млн записей в час. Плюс очищаются устаревшие 10+млн. Итого в журнале много транзакций записи и удаления. Причем данные сырые и не очень важно, насколько они хорошо легли в базу. Но %Save все равно пишет в журнал, даже если журналирование этой БД отключено. В итоге кривая занятости диска превращается в прямую x = ky где k - минус 0.5 примерно xD
Спасло бы удаление файлов журналов так, чтобы их только пара-тройка оставалась.
Спасибо.
1 мар 17, 07:16    [20252840]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3420
Попробуйте класс %SYS.Journal.File для удаления старых журналов.
1 мар 17, 08:20    [20252908]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3420
Еще можно подумать над тем, чтобы не создавать логи при записи и удалении.
Я так понимаю, отключить журналирование на базе вы не можете? Или хотя бы вынести перезаписываемые данные в отдельную базу без журналирования и замапить на основную область.
Я так понимаю, вы пробовали использовать DISABLE^%SYS.NOJRN и ENABLE^%SYS.NOJRN для локального отключения журналирования, но сохранение использует транзакции, которые автоматом включают журналирование? Можно попробовать сделать сви методы сохранения, которые не используют транзакции.
1 мар 17, 08:42    [20252960]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
Ptn
Guest
я
Но %Save все равно пишет в журнал, даже если журналирование этой БД отключено


DO DISABLE^%NOJRN

Всегда выручал
1 мар 17, 09:20    [20253102]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3420
Ptn,

Да, действительно, я напутал. Если принудительно отключать журналирование, то транзакция его не включает. А если журналирование отключено на базе, то транзакция его на время включит. Но это не касается временной базы.
1 мар 17, 10:02    [20253243]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1355
ISC не зря советует журналировать всё (в документации об этом есть, да и Портал ругается при попытке создать нежурналируемую БД).

Если временное отключение журнала действует по отношению к глобалу, журналируемому "в мирное время", то это добавляет проблем с т.з. эксплуатации, т.к. в одном глобале могут оказать данные обеих категорий: записанные в журнал и нет. Как его восстанавливать, случись что? Ведь запись в глобал могла идти и во время бэкапа, и элементарно могут появиться незакрытые транзакции (а журнала в помощь не будет).

С ходу вижу лишь один "безопасный" случай, когда данные, записанные без журналирования, не имеют связей с "нормальными" данными, т.е. их действительно не страшно потерять. Но это идиллия.

Кстати, когда активно "зеркало" (mirroring), DISABLE^%NOJRN игнорируется.

Для снижение нагрузки на дисковую подсистему рекомендуется отвести для журналов отдельный физический диск (в случае СХД: отдельный LUN в отдельной дисковой группе) с достаточно высокой производительностью по последовательной записи. Об этом тоже сказано в документации. ISC даже приводит некоторые цифры в качестве ориентиров, см. на коммьюнити.
1 мар 17, 11:56    [20253605]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
я
Guest
Alexey Maslov,
Данные все равно перепроверяются при действиях пользователя - т.е. они копятся сотнями миллионов, но когда юзер тыкает в конкретную запись, идет отдельный запрос к источнику данных (в сеть) с проверкой текущего состояния записи из того источника. И целостность сырых данных не нужна. Как и журнал на их запись-удаление. Да и про диски речь не идет - сервер все равно в облаке. Один диск или двадцать пять - без разницы. Есть лимит облачного плана - он только размера касается ;)
1 мар 17, 13:42    [20254021]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1355
Если в облаке, аптайм должен быть огромным у сервера (если только вы сами его не завесите))), поэтому я хранил бы все сырые данные во временных глобалах, которые в cachetemp, не заморачиваясь с включением-выключением журнала.
1 мар 17, 14:02    [20254116]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
я
Guest
Alexey Maslov,
Хм... А как это сделать, если не секрет?
1 мар 17, 14:20    [20254193]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3420
Alexey Maslov,

Каким бы огромным не был аптайм, но он не бесконечный. И риск потерять все данные в случае сбоя ненулевой, так что я бы не рекомендовал нужные данные хранить во временных глобалах.

Я работал на конфигурации с зеркалированием и очень сильно сомневаюсь, что в ней DISABLE^%SYS.NOJRN совсем не работает. Совершенно точно, что он не может отключить его полностью (тогда бы нарушилась целостность данных), и какие-то нюансы точно должны быть, но у нас запись логов при сбоях была через DISABLE^%NOJRN, и я очень удивлюсь, если мы теряли все данные при сбоях в транзакции. В общем, это нужно проверять, но сейчас не на чем (документация говорит Disabling journaling using DISABLE^%NOJRN does not affect mirrored databases.).
1 мар 17, 15:05    [20254422]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1355
Блок А.Н.
(документация говорит Disabling journaling using DISABLE^%NOJRN does not affect mirrored databases.).
Собственно, и я о том же :)
Проверить, что данный вызов ничего не делает в зеркале, вполне могу, хотя на 100% уверен в результате, иначе вышло бы противоречие с идеологией зеркала: часть данных из зеркалируемой БД "отзеркалилась", а часть - нет.
Блок А.Н.
...риск потерять все данные в случае сбоя ненулевой, так что я бы не рекомендовал нужные данные хранить во временных глобалах.
Согласен, но ТС намекнул, что не сильно опасается потерять сырые данные. А если опасается, то надо журналировать. Тот, кто хоть раз ремонтировал незажурналированные глобалы, меня поймёт :(

P.S. На облаке обычно есть разные виды бэкапов, в том числе и бэкап образа VM. Интересно, можно ли из такого бэкапа вытащить сохранённую БД CACHETEMP и подсунуть в работающую Cache под другим именем, после чего, используя ^GBLOCKCOPY, восстановить нужные глобалы?
1 мар 17, 17:33    [20255012]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3420
С этой Cachetemp есть такая проблема, что глобалы могут в нее тупо не записываться, оставаться только в кэше.
Ну и при старте они могут удаляться. Так что Cachetemp использовать при любом раскладе не стоит.

Но и использовать объекты при миллионах записей в час странновато. Мне кажется, там лишние накладные расходы присутствуют
1 мар 17, 18:46    [20255247]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1355
Блок А.Н.
С этой Cachetemp есть такая проблема, что глобалы могут в нее тупо не записываться, оставаться только в кэше.
Могут, если они короткоживущие: у WD отдельная очередь буферов для CACHETEMP, она просто более длинная, чем для остальных баз.

При старте Cache БД CACHETEMP всегда чистится, но если делать внешний бэкап с заморозкой (недавно здесь обсуждалось), то WD сбросит грязные буфера перед заморозкой, поэтому CACHETEMP в сохранённом образе будет полностью комплектен на заданный момент времени.

Блок А.Н.
Но и использовать объекты при миллионах записей в час странновато. Мне кажется, там лишние накладные расходы присутствуют
Миллионы в час - это не миллионы в секунду... К тому же ТС, похоже, не жалуется на производительность.

Можно делать инкрементные бэкапы хоть каждый час, тогда критерий очистки журналов будет срабатывать настолько часто, насколько часто делаются бэкапы. Для ускорения бэкапа можно оставить в списке только "основную" БД, выделив сырые данные в другую, отдельную от неё, БД. Отвечая на вопрос анонимного "я": это делается в конфигурации областей, глобалы - добавить отображение, либо в CACHETEMP, либо в специально созданную БД - как хотите. Как правильно задать маску имён глобалов для заданных классов, думаю, сообразите сами.
2 мар 17, 11:18    [20256741]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 677
Alexey Maslov,
Маслов Великий, он все знает!
Добрый день, Алексей.
Вопрос:
Смотрю содержимое файла журнала после записи, там для каждой записи есть поле дата-время.

23:59:35
00:00:01 26с
00:00:58 57с
00:01:17 19с
00:01:30 13с
00:01:42 12с
00:01:55 13с
00:01:56 1с
00:03:07 71с
00:03:17 10с
00:03:25 8с
... и так далее.

Т.е. информация в журнал после записи сбрасывается нерегулярно. Там где разница в 1 сек похоже по заполнению буфера, там действительно много тыс записей.
А там где времена побольше количество записей в пределах 1 тыс. т.е. сбрасывается информация не по переполнению, но с разным периодом.

Что сие означает? может я чего не так думаю?

Всем откликнувшимся тоже буду благодарен!
2 мар 17, 11:55    [20256887]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3420
Alexey Maslov
Можно делать инкрементные бэкапы хоть каждый час, тогда критерий очистки журналов будет срабатывать настолько часто, насколько часто делаются бэкапы.
Это выглядит хорошим решением, но есть нюанс - проблема журналов волнует ТС в контексте расходуемого места. И с инкрементальными бэкапами в облаке тоже придется что-то делать.
2 мар 17, 12:03    [20256936]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1355
Блок А.Н.
... И с инкрементальными бэкапами в облаке тоже придется что-то делать.
Это уже проблемы ТС :)
- возможно, существует более дешёвый тарифный план с более медленной скоростью доступа к СХД (где-то читал, что такое бывает, именно для архивации данных),
- к тому же, если не бэкапить ту БД, куда пишутся 10 млн. записей в час, inc-файлы будут скорее всего весьма скромного размера,
- наконец, можно удалять эти файлы неким внешним (или внутренним) скриптом, который несложно написать.
2 мар 17, 12:31    [20257043]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1355
AlexKB,

Добрый день, Алексей. Прощаю наглую лесть, но только первый раз :)

Если речь о Cache, то журнал не совсем правильно называть "журнал после записи", т.к. запись в журнал обычно попадает раньше, чем в БД.

По поводу меток даты-времени в журнале: мне когда-то объясняли, что это время записи блока журнала в файл. Демон журнала просыпается очень часто: 1 раз в 2 сек, и при отсутствии ECP пишутся лишь полные буфера (всего их 128*64KB); по ссылке, которую приводил ранее, утверждается, что за 1 раз может писаться от 4K до 4M. Могу предположить, что при небольшом потоке записи порой пишутся и неполные буферы, иначе возник бы риск, что информация, записанная в БД, отсутствует в журнале, а насколько помню, существует гарантия, что всё, что сохранено в БД, должно быть уже в журнале, причём физически.

Подробностей алгоритмов не знаю, но из объяснений саппорта ISC помню главное: не стоит искать логику в журнальных временных метках, и тем более делать далеко идущих выводов.
2 мар 17, 12:59    [20257189]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 677
Alexey Maslov,
Я тоже помню про то, что каждые 2 сек должен произойти сброс в файл журнала и то, что если буфер журнала переполнен, то сброс произойдет чаще чем раз в 2 сек.
Просто меня насторожило это поле времени, мол если произойдет падение в середине этих периодов, то я потеряю больше, чем наработка только за обещанные ИС 2 сек.

Так можно не бояться и не обращать внимания на эти времена, так ли это?
Что из опыта падавших и восстановившихся?
2 мар 17, 13:23    [20257350]     Ответить | Цитировать Сообщить модератору
 Re: Как настроить удаление файлов журнала на количество этих файлов?  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1355
Своё мнение о метках я высказал. Ещё вспомнил, что во новом файле [иногда] дублируется последний недозаполненный блок из предыдущего файла (со старыми метками, естественно).

Насчёт того, сколько можно потерять, вопрос более интересный. Начиная с какой-то версии Cache (кажется, 2013.1), если от демона журнала нет ответа в течение 10 сек, формируется предупреждение (оно пишется в console log), если же нет ответа в течение 30 секунд, формируется ошибка и запись в журнал замораживается. Если в конфигурации системы (... -> Настройка журнала) активна опция "Замораживать систему при ошибках журнала", работа пользователей будет приостановлена. В таких условиях можно потерять журнальные записи за последние 30 сек перед аварийной остановкой Cache, если она всё же произойдёт. Если же опция не активна, и ошибка фатальна (журнал остановился), то работа пользователей продолжится, но уже без журнала.
2 мар 17, 14:11    [20257563]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché Ответить