Подробная информация об исторической БД

Эта глава предназначена для продвинутых пользователей и описывает точки данных и внутренние процессы во время архивирования. По умолчанию, «КАСКАД Цифра» запускает историческую БД (см. useValueArchive).

Конфигурация архивирования значений

Историческое архивирование изменений значений выполняется, до сих пор, посредством конфигурационного элемента _archive (см. _archive configs).

IconПРИМЕЧАНИЕ

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

archiveReqTimeout

Этот параметр используется чтобы гарантировать, что если архив остановился, запросы по-прежнему будут иногда получать ответы (то есть, максимум через ххх секунд). С помощью конфигурационной записи можно определить, сколько секунд (максимум) должен ожидать менеджер данных(= историческая БД) эти ответы из архивов(с dpPeriodRequest(), dpGetAsynch() и dpQuery()). Если ответ от всех архивов не был получен за этот период времени, запрос будет завершен с ошибкой. Значением должно оставаться 0 (значение по умолчанию), что означает неограниченное время ожидания. В противном случае значимыми будут значения, начинающиеся со 120 [сек], так как некоторые запросы могут занять больше времени.

[data]
archiveReqTimeout = 120

-report 11

Этот параметр командной строки предоставляет информацию о том, сколько сделано запросов, и в каком архиве сохраняются отдельные точки данных. Параметр командной строки также предоставляет информацию об имени точки данных, количестве точек данных и списке времени. Можно получить общую информацию о исторической БД с параметром командной строки -report all. Примите во внимание, что этот параметр командной строки должен быть активирован для менеджера данных.

Запуск/остановка процесса архивирования

Процессы архивирования запускаются и останавливаются с помощью консоли. Также определяется номер архива («-num x«) как параметр командной строки. Архив соединяется с менеджером данных и получает необходимые данные о конфигурации (например, присвоенный каталог). Именем процесса в консоли является WCCOAvalarch (см. Запуск архивирования)..

Поскольку части данных конфигурации архива также хранятся в самом архиве, значения в архиве сравниваются с сохраненными значениями в архивной ТД. В случае разногласий, система действует как в случае изменения пользователем параметров архива. Действия с такого рода различиями описаны в главах, посвященных отдельным параметрам архива.

Если внутренняя архивная ТД недоступна при запуске архива, исторический уровень снова закрывает архив. Все параметры архива, которые передаются посредством dpSet(), также изменяются вместе в архиве.

Имя и номер архива

Имя или номер архива присваиваются посредством элемента точки данных.(_ValueArchive_x.general.arName). В настоящее время имена точек данных для внутренних ТД предопределены в виде _ValueArchive_x (x представляет собой номер архива). Для проектов с резервированием для каждого архива существует другая внутренняя ТД. Имя точки данных заканчивается на «_<num>_2». Цифра 2 указывает на резервирование, а первая цифра представляет собой номер архива.

IconПРИМЕЧАНИЕ

Рекомендуется осуществлять настройки для точек данных с помощью панелей.

Кроме того, существует новый элемент «UserValueArchive» типа «bool» во внутренней точке данных менеджера данных («_DataManager»). Этот элемент показывает, используется ли историческая база данных в данный момент. Значение этого элемента происходит от соответствующей записи в конфигурационном файле (см. выше). Чтобы установить новый архив, создается новая архивная ТД, а в списке процессов консоли должна быть создана запись. Значение предназначено только для чтения и не изменяется.

Кроме того, должен быть задан элемент во внутреннем архивном ЭТД (_ValueArchive.general.createArchive), чтобы архив создал первую архивную запись. Соответствующий архив не будет запускаться автоматически.

Удаление архива включает в себя задание «состояния» элемента архивной ТД (см. ниже) как удаленного, и удаление процесса архивирования из списка процессов консоли (это не выполняется автоматически). При запуске архива с состоянием «удален», он будет немедленно снова закрыт. Кроме того, все ЭТД, присвоенные этому архиву, должны быть перенесены в другой архив или архивирование должно быть отключено. Это также не выполняется автоматически. Если ЭТД присваивается удаленному архиву, он будет сохранен в архиве по умолчанию (архив 0). Все исторические данные ЭТД (для удаленного архива) будут потеряны. Файлы архива не будут автоматически удалены.

Мониторинг и контроль архивных процессов

Задание параметров архива

Параметры архива управляются как элементы архивных точек данных (_ValueArchiv). При этом, существуют оригинальные параметры и действия. В то время как параметры только сообщаются в архив, действия вызывают процессы в архивном процессе. Отчеты процессов возвращаются посредством других ЭТД архивной точки данных. «Простые» параметры архива описаны в этой главе.

Элементы <DPE>.Getи <DPE>.Set используются для параметров, которые изменяются в архиве не сразу. Требуемое изменение вводится в <DPE>.Set. Текущее состояние архива отображается в <DPE>.Get.

Данные времени для запуска различных событий реализуются как ссылки на тип точки данных _TimedFunc. Если ТД еще не был создана и настроена для процесса, отображается сообщение об ошибке.

Таблица: Части точки данных _ValueArchive

ЭлементЭлементIntНазначение
arNr 21номер архива
state2) 210 = стоп, 1 = активен / онлайн, 2 = выгружен, 3 = удален —
общий 1 
 arType1)210 = значения, 1 = сообщения; по умолчанию: 0
 arName42имя архива [18]; Внимание: Langtext!; по умолчанию: ValueArchive_x
 hostNameGet3)25Хост-компьютер для .Archive [32]
 hostNameSet25Задание хост-компьютера
 filePathGet3)25основной путь для архивных записей, 128], по умолчанию.: <proj_path>/db/VA_000x
 filePathSet25Задание основного пути
 fileNameGet4)25правило имени файла для архивных записей, 64],- по умолчанию: YYYYMMDDHHMOSS
 fileNameSet25Задание правила имени файла
 createArchive3)211=создать архив (учитывается только, если путь к архиву еще не содержит каких-либо архивных записей)
 forwardToRDB Определяет, происходит ли переадресация значений из архива значений в RDB, или нет. По умолчанию:  false
error1) 1 
 errNum21Ошибка последней архивной операции.
 errDp27DpId, вызвавший ошибку (например, переполнение архива)
 errBit23задается в случае переполнения архива (обработка алармов)
размер 1 
 maxDpElGet4)20Макс. количество элементов ТД
 maxDpElSet20Задание максимального количества ЭТД
 maxValuesGet4)20Макс. количество записей значений
 maxValuesSet20Задание макс. количества записей значений
 maxFillPctGet4)21Макс. скорость заполнения в %, 0 = 100 -1 = никаких изменений архивной записи, если был достигнут параметр maxValues
 maxFillPctSet21Задание макс. скорости заполнения
 maxHeapSizeGet4)20Макс. размер массива памяти (в килобайтах)
 maxHeapSizeSet20Задание макс. размера массива памяти
  20Макс. размер входного буфера архива в МБ
 maxCacheSet20Задание макс. размера входного буфера архива (по умолчанию 32 МБ)
 maxCorrCacheGet20Макс. размер входного буфера корректирующего значения в МБ
 maxCorrCacheSet20Задание макс. размера входного буфера корректирующего значения
интервалы 1 
 aliveInterval20Время цикла для отметки времени (в секундах)
 saveCycle20Время цикла для оперативного (онлайн) резервного копирования текущей архивной записи (в секундах)
setMgmt 1 
 fileSwitch1 
  switchTimeGet4)41Время изменения архивной записи, ссылка на _TimedFunc управляется самим архивом
  switchTimeSet41Задание времени
  switchRoundOffGet20Период в секундах, который указывает, когда значения фактически записываются в новый архив. Это означает, что новая архивная создается во время switchTime, но активируется на switchRoundOff секунд позже. Поэтому, «настоящим» временем переключения является switchTime + switchRoundOff —
  switchRoundOffSet20Задание переходного периода
  overflowCountGet4)20мин. количество пустых кортежей значений в каждой ЭТД в сжатой архивной записи, на уровне 1.
  overflowCountSet20Задание мин. количества пустых кортежей значений
  overflowPctGet4)21Процент пустых кортежей значений в сжатой архивной записи на уровне 1
  overflowPctSet21Задание процента пустых кортежей значений
  overlapPeriodGet 4)20Продолжительность времени, которое указывает, как долго обе архивных записи остаются открытыми, когда изменяется архивная запись (в секундах)
  overlapPeriodSet20Задание времени
  expKeepPeriodGet4)20Гистерезис для расширенной необновляемой архивной записи (в секундах)
  expKeepPeriodSet20Задание гистерезиса
 fileCompression1 
  packCountGet 4)20Кол-во архивных записей на уровне сжатия 1
  packCountSet20Задание кол-ва архивных записей
  packTimeGet 4)41Время сжатия, на уровне 2, ссылка на _TimedFunc управляется самим архивом
  packTimeSet41 Задание времени
  autoStartAfterSwitchGet 23Запускается автоматически после изменения файла. Если значением является TRUE, архивы сжимаются автоматически.
  autoStartAfterSwitchSet 23Запускается автоматически после заданного изменения файла. Если значением является TRUE, архивы сжимаются автоматически.
 fileMerge 4)1 
  mergeCountGet 4)20Количество архивных записей, используемых для определения уровня переполнения. Это означает, что если это значение архивных записей превышено, значения объединяются.
  mergeCountSet20Задание кол-ва архивных записей
  mergeTimeGet4)41Время для объединения, ссылка на _TimedFunc. Управляется самим архивом
  mergeTimeSet41Задание времени
 fileDeletion1 
  keepCountGet4)20Макс. количество сохраненных архивных записей, 0 = использовать только интервал
  keepCountSet20Задание макс. кол-ва сохраненных архивных записей
  removeTimeGet4)41Время удаления. Ссылка на _TimedFunc. Управляется архивом. Время для сохранения хранится в части интервала этого ЭТД (в секундах)
  removeTimeSet41Задание времени
files2)  1передаются из архива в начале и в случае изменения
 fileName9Массив всех архивных файлов (без пути), первым является самый ранний (0 = текущий)
 state5Состояния отдельных архивных файлов (0 = активен / онлайн -1 = удален)
 compressionState5Состояния сжатия
 startTime10Время начала архивных записей
 endTime10Время конца архивных записей
статистика 1Значения задаются только после задания индекса
 index20Индекс в files.filename, который запрашивается архивом (значение может быть записано)
 dpElementCount2)20Кол-во ЭТД в архивной записи
 dpElements2)29Все ЭТД данной архивной записи
 dpValues2)5Количество записей значений для каждого ЭТД
 size2)20размер архивной записи

Примечания:

1) может быть задано только при создании архива, в противном случае только для чтения

2) только для чтения

3) активное начало с начала следующего архива, только для чтения

4) активное начало со следующего изменения архивной записи, только для чтения

Изменение / сжатие / удаление архивной записи

Изменения архивной записи могут быть вызваны автоматически (с помощью параметра архива, см. предыдущую главу) и/или вручную. Для последнего метода используется ЭТД _ValueArchive_X.action.fileSwitch.startсоответствующей архивной ТД. Текущее состояние изменения архивной записи отображается посредством ЭТД _ValueArchive_X.action.fileSwitch.progress. То же самое относится к процессам сжатия и удаления архивных записей. Если указанные процессы инициируются вручную, всегда затрагивается старейшая архивная запись (или записи)(исключение: в случае управления через конфигурационный интерфейс [..progress = 2] затрагиваемые архивные записи могут быть указаны непосредственно, см. раздел 5). При удалении архивных записей, помимо указания количества сохраняемых архивных записей, также можно указать период времени (в части интервала элемента removeTime). Значение 0 (как интервал или количество) означает, что этот тип спецификации не должен использоваться. Если указаны оба параметра, сначала учитывается параметр интервала, а затем параметр количества. Все методы, описанные в этой главе, выполняются самим архивом или могут быть инициированы вручную с помощью элемента ТД .start.

Архив изменяется при достижении максимального количества значений. Это может быть предотвращено путем задания значения параметра maxFillPct -1. В этом случае также могут быть потеряны значения. errDp-DPE DPE показывает, какие ЭТД вызвали заполнение архивной записи. В этом случае errBit также настраивается на обработку алармов. Для сжатия, резервного копирования и удаления (в каждом случае) можно натроить 9999 наборов архивов.

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

 Необходимо задать правильное значение для элемента setMgmt.fileSwitch.switchRoundOff внутренней ТД ValueArchive (по умолчанию 30 секунд).

Если срабатывает ручное или настроенное по времени изменение набора архивов, и предыдущий архив заполняется в период между переключением и количеством секунд из параметра «switchRoundOff», дополнительный набор архивов не создается (обычно создается набор архивов). В этом случае могут быть потеряны данные. Также примите во внимание, что ручное или настроенное по времени переключение набора архивов не может происходить позже, чем указано в параметре switchRoundOff. Более поздние переключения могут привести к различным именам наборов архивов в системах с резервированием.

Происходящее по времени переключение набора архивов во время синхронизации файлов теперь подавляется. Переключения, которые должны выполняться во время резервного копирования, выполняются после резервного копирования (с исходной отметкой времени!).

Примите во внимание, что, если происходит переключение наборов архивов по времени после синхронизации файлов и перед запуском соответствующего архива на пассивной системы, создаются разные имена файлов наборов архивов.

Таблица: Действие ЭТД точки данных _ValueArchive._ValueArchive

ЭлементЭлементIntНазначение
action 1 
 fileList9Содержит имена архивных записей для сжатия
 fileSwitch1 
  start23Активация переключения архивной записи
  progress231 = в процессе, 0 = закончено
 fileCompression1 
  start23Активация сжатия
  progress231 = в процессе, 0 = закончено, 2 = экспорт fileList
  targetCompression (не используется)20требуемый уровень сжатия (0,1,2), возможно только с fileList
 fileMerge1 
  start23Активация процесса слияния:
  progress231 = в процессе, 0 = закончено, 2 = экспорт fileList
 fileDeletion1 
  start23Активация удаления
  progress231 = в процессе, 0 = закончено, 2 = экспорт fileList
 fileBackup1 
  startTimeGet41Время резервного копирования, ссылка на _TimedFunc управляется конфигурационным интерфейсом
  startTimeSet41Задание времени
  saveCountGet20Количество архивных записей, которые не должны быть резервированы (начиная с самой ранней), 0 = для всех завершенные архивных записей выполняется резервное копирование
  saveCountSet20Задание количества
  start23Активация резервного копирования, см. главу 5)
  progress231 = в процессе, 0 = закончено, 2 = экспорт fileList, 3 = файлы готовы к резервному копированию, 4 = резервное копирование завершено
 fileRestore1 
  start23Активация восстановления (см. главу 5)
  progress231 = в процессе, 0 = закончено, 2 = экспорт fileList

Операция fileSwitch может быть активирована только архивом или вручную, путем установки элемента запуска на 1. Операции fileCompression, fileMerge и fileDeletion могут быть активированы самим архивом, путем установки элемента запуска на 1 вручную, и с помощью конфигурационного интерфейса (см. Архивирование данных). Операция fileRestore может быть активирована только с помощью конфигурационного интерфейса.

Резервное копирование/Выгрузка/Удаление

Методы, описанные здесь, работают совместно с конфигурационным интерфейсом и уровнем истории. Уровень истории должен проверить, может ли процесс быть выполнен в данный момент. Если нет, устанавливается и выводится код ошибки, вместо списка файлов.

При запуске архива элемент action.*.progress устанавливается в значении 0 исторической БД (исключение: fileBackup.progress, чтобы запущенное резервное копирование могло быть продолжено). При запуске конфигурационного интерфейса все состояния (..progress) сбрасываются. Если состояние было > 0, операция перезапускается (повтор).

Оперативное (онлайн) резервное копирование

В отличие от выгрузки, оперативное резервное копирование используется для резервного копирования всех файлов архива. Резервное копирование не выполняется самим архивом. Архив только должен закрыть все файлы на кратчайший срок. Выполнить резервное копирование этих файлов может операция резервного копирования с внешним запуском, которое не является частью процесса архивации или уровня истории. Система различает между текущей архивной записью и закрытыми архивными записями. Это означает, что они могут быть запрошены отдельно. По этой причине период времени, в течение которого не может быть использована текущая запись архива, должен быть сведен к минимуму. Имена в настоящее время закрытых файлов отображаются в action.fileList.

Оперативное резервное копирование может быть повторно импортировано только тогда, когда архив будет остановлен. Этот процесс также должен быть инициирован извне, и не является частью архива или уровня истории.

Таблица: ЭТД onlineBackup точки данных _ValueArchive

ЭлементЭлементIntНазначение
action11 
 onlineBackup1 
  startTime41для автоматической ссылки N/A на _TimedFunc, определяет продолжительность задержки архива:0 = с _Timed Func ,MAXTIME = без задержки,в ином случае = период времени = задержка
  endTime41для автоматической ссылки N/A на _TimedFunc. Определяет продолжительность задержки архива:0 = расчет посредством _Timed Func ,MAXTIME = без задержки,в ином случае = период времени = задержка
  startCurrent23Активизирует режим резервного копирования (текущая архивная запись)
  progressCurrent23Сообщение от архива,1 = файлы закрыты, имена файлов сохранены в списке файлов ,
0 = оперативное резервное копирование завершено
  startClosed23Активизирует режим резервного копирования (закрытая архивная запись)
  progressClosed23Сообщение от архива,1 = файлы закрыты, имена файлов сохранены в списке файлов ,
0 = оперативное резервное копирование завершено

Удаление архивных записей

Процессы удаления и/или выгрузки необходимы для постоянных размеров архива. Они всегда относятся ко всей архивной записи (т.е. все ЭТД из архива за определенный период времени). Имена файлов, которые необходимо удалить, должны быть переданы в качестве параметров в action.fileList. Удаление может быть вызвано вручную или по времени, и активируется и управляется с помощью конфигурационного интерфейса.

Синхронизация резервирования: При запуске архив проверяет, соответствует ли список переданных файлы содержимому каталога архивирования (состояние = активен / онлайн). Лишние файлы в файловой системе удаляются.

Таблица: Список lifeList ЭТД _ValueArchive

ЭлементЭлементIntНазначение
action11 
 lifeList91Список имен рассматриваемых файлов
 

Резервное копирование/загрузка закрытых архивных записей

Резервное копирование архивных записей схоже с процессом удаления. Каждый архив запускается на период времени. Конфигурационный интерфейс уведомляет архив о том, какие архивные записи предназначены для резервного копирования, и архив блокирует их для записи во время резервного копирования. Сценарий archiv_client.ctl выполняет фактическую выгрузку. (для новых проектов сценарий доступен в списке сценариев pvss_scripts.lst CTRL-менеджера, по умолчанию)

Элемент action.fileBackup.startTime может быть использован для циклической активации.

Присвоение имени файла архивной записи — носитель резервной копии (+ период времени) может сохраняться сценарием резервного копирования в структурах action.media и архиве. Это может быть сделано для облегчения процесса загрузки для пользователя. Процесс выгрузки может быть вызван вручную или с управлением по времени.

Загрузка осуществляется в обратном порядке.

Таблица: The DPE action.media of _ValueArchive

ЭлементЭлементIntНазначение
action.media 1 
 change24для сценария: если край 0 > 1 экспортирует новый список файлов (во внешний сценарий), 1 > 0 если mediumFileList обновлен
 fileList9Файлы на текущем резервном носителе. Строка устройства представляет собой имя устройства DAT, CD, MO в ОС Linux,в противном случае это путь для CD, в ОС Windows
 progress21Номера доступа устройства на магнитной ленте)
 redundancy device25Имя пути! БД для резервной копии на внешнем компьютере, если пусто -> НЕ КОПИРОВАТЬ!!
 hostName25Имя компьютера, на котором сохраняется резервная копия
 backupDevice25Тут указывается устройство/путь, где находится носитель резервной копии

Таблица: Архив ЭТД _ValueArchive

ЭлементЭлементIntНазначение
архив 1все сохраненная информация, записанная сценарием архива
 archiveFilenames9все имена файлов, выгруженные системой (на произвольном носителе; каждый архив только на одном носителе!!)
 archiveCompressState5режим сжатия [0,1,2,…] для каждой выгруженной записи данных
 archiveStartTime10только для чтения (информационная копия исторической БД). Это начальное время каждой записи данных
 archiveEndTime10только для чтения. Это конечное времени для каждой записи данных (необходимо в случае каких-либо пробелов!!)
 archiveUser9Пользователь, который выгрузил данные (или система)
 archiveDate10Дата и время выгрузки

При запуске архива он проверяет текущее состояние action.fileBackup.progress и продолжает уже начатый процесс резервного копирования.

Сжатие/Распаковка архивных записей

Архивные записи могут быть сжаты либо с помощью функции файловой системы ОС Windows (см. compressValueArchive), либо путем настройки сжатия архивов (начиная с версии 2.12.1) (см. Историческая БД — Сжатие архивов).

Когда сжатие вызывается автоматически, выполняются все уровни сжатия. Создаются 2 списка файлов, один за другим:

Для уровня 1:

Все архивные записи, расположенные на диске, кроме текущей архивной записи, и записи с уровнем сжатия меньше 1.

Для уровня 2:

Все архивные записи с уровнем сжатия 1 (т.е. текущая архивная запись не включена), кроме архивных записей, которые должны оставаться на уровне 1 (ЭТД «packCount»).

Оба списка файлов должны суммироваться. После суммирования списков файлов, список сокращается с помощью конфигурационного параметра maxNumberOfFilesToCompress (по умолчанию = 5, то есть 5 архивных записей в архиве сжимаются каждый раз во время автоматического сжатия). Сжатие инициируется для каждой записи в списке файлов:

  • Если текущий уровень == 0 выполняется сжатие на уровне 1
     
  • Если текущий уровень == 1 выполняется сжатие на уровне 2

Это относится к настройке «automatic compression» (автоматического сжатия) (ЭТД «autoStartAfterSwitch») после изменения архивной записи и для настройки «delay time» (времени задержки) (ЭТД «expKeepPeriod»). Сжатие архивов также можно запустить вручную (см. панель Действия исторической базы данных).

В следующей таблице приводится обзор наиболее важных внутренних точек данных и диапазона значений, которые могут быть сконфигурированы в связи со сжатием исторической БД:

Элемент точки данныхТипДиапазонОписание
ValueArchive_N.setMgmt.fileCompression.autoStartAfterSwitchboolTRUE, FALSE (ИСТИНА/ЛОЖЬ)Активирует автоматическое сжатие после изменения архивной записи.
ValueArchive_N.setMgmt.fileSwitch.expKeepPeriodunsigned30-7200Время задержки между изменением архивной записи и началом сжатия.
ValueArchive_N.setMgmt.fileCompression.packCountunsigned0-99Количество архивных записей, которые должны оставаться на уровне сжатия 1.
ValueArchive_N.setMgmt.fileSwitch.overflowPctint0-100Процент для определения свободных записей в каждом ЭТД. Значение используется только для сжатия на уровне 1.
ValueArchive_N.setMgmt.fileSwitch.overflowCountunsigned0-nnnnФиксированное значение для использования в качестве количества свободных записей значений в ЭТД. Значение используется только для сжатия на уровне 1. Диапазон основывается на указанном количестве записей значений для каждого ЭТД.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *