Проблемы с модулем экспорта в БД

Стартовая страница Форумы Ошибки в работе Ошибки Сервера Проблемы с модулем экспорта в БД

Просмотр 15 сообщений - с 1 по 15 (из 28 всего)
  • Автор
    Сообщения
  • #5575
    kustar
    Участник

    Михаил, добрый день!
    Продолжу в новой ветке.
    Поставил 5.1.1.
    SCADA сервер и IIS — на одной машине, коммуникатор — на удаленной.
    Коммуникатор читает ОРС, отправляет 43 тега. Только телеизмерения, событий нет.
    Периодичность отправки с коммуникатора — по умолчанию.
    Для чистоты эксперимента таблицу cnldata дропнул, скриптом сотворил заново. Проверил — записей не было.
    Перезагрузил сервер с модулем в 19:55.

    2017-04-26 19:55:06 Запуск работы модуля ModDBExport
    2017-04-26 19:55:18 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-301’ for key ‘PRIMARY’
    2017-04-26 19:55:19 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-304’ for key ‘PRIMARY’
    2017-04-26 19:55:20 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-306’ for key ‘PRIMARY’
    2017-04-26 19:55:22 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-301’ for key ‘PRIMARY’
    2017-04-26 19:55:23 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-304’ for key ‘PRIMARY’
    2017-04-26 19:55:25 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-306’ for key ‘PRIMARY’
    2017-04-26 19:55:26 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-301’ for key ‘PRIMARY’
    2017-04-26 19:55:28 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:23-312’ for key ‘PRIMARY’
    2017-04-26 19:55:30 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-304’ for key ‘PRIMARY’
    2017-04-26 19:55:31 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-306’ for key ‘PRIMARY’
    2017-04-26 19:55:33 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:25-353’ for key ‘PRIMARY’
    2017-04-26 19:55:34 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:26-311’ for key ‘PRIMARY’
    2017-04-26 19:55:35 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-301’ for key ‘PRIMARY’
    2017-04-26 19:55:37 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:28-311’ for key ‘PRIMARY’
    2017-04-26 19:55:38 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:23-305’ for key ‘PRIMARY’
    2017-04-26 19:55:40 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:29-312’ for key ‘PRIMARY’
    2017-04-26 19:55:41 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-304’ for key ‘PRIMARY’
    2017-04-26 19:55:43 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-306’ for key ‘PRIMARY’
    2017-04-26 19:55:45 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:25-302’ for key ‘PRIMARY’
    2017-04-26 19:55:46 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:33-305’ for key ‘PRIMARY’
    2017-04-26 19:55:47 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:26-305’ for key ‘PRIMARY’
    2017-04-26 19:55:49 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:35-383’ for key ‘PRIMARY’
    2017-04-26 19:55:50 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-301’ for key ‘PRIMARY’
    2017-04-26 19:55:52 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:28-302’ for key ‘PRIMARY’
    2017-04-26 19:55:54 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:23-305’ for key ‘PRIMARY’
    2017-04-26 19:55:55 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:39-305’ for key ‘PRIMARY’
    2017-04-26 19:55:56 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:29-307’ for key ‘PRIMARY’
    2017-04-26 19:55:58 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-304’ for key ‘PRIMARY’
    2017-04-26 19:56:00 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:42-308’ for key ‘PRIMARY’
    2017-04-26 19:56:01 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:42-310’ for key ‘PRIMARY’
    2017-04-26 19:56:03 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-306’ for key ‘PRIMARY’
    2017-04-26 19:56:04 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:44-311’ for key ‘PRIMARY’
    2017-04-26 19:56:05 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:25-302’ for key ‘PRIMARY’
    2017-04-26 19:56:07 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:45-315’ for key ‘PRIMARY’
    2017-04-26 19:56:08 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:33-305’ for key ‘PRIMARY’
    2017-04-26 19:56:10 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:47-311’ for key ‘PRIMARY’
    2017-04-26 19:56:11 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:26-305’ for key ‘PRIMARY’
    2017-04-26 19:56:13 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:35-302’ for key ‘PRIMARY’
    2017-04-26 19:56:14 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-301’ for key ‘PRIMARY’
    2017-04-26 19:56:15 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:51-308’ for key ‘PRIMARY’
    2017-04-26 19:56:17 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:28-302’ for key ‘PRIMARY’
    2017-04-26 19:56:19 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:54-308’ for key ‘PRIMARY’
    2017-04-26 19:56:20 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:23-305’ for key ‘PRIMARY’
    2017-04-26 19:56:22 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:39-304’ for key ‘PRIMARY’
    2017-04-26 19:56:23 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:29-307’ for key ‘PRIMARY’
    2017-04-26 19:56:25 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:57-303’ for key ‘PRIMARY’
    2017-04-26 19:56:26 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:57-301’ for key ‘PRIMARY’
    2017-04-26 19:56:27 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:57-302’ for key ‘PRIMARY’
    2017-04-26 19:56:28 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-304’ for key ‘PRIMARY’
    2017-04-26 19:56:30 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:59-358’ for key ‘PRIMARY’
    2017-04-26 19:56:31 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:42-304’ for key ‘PRIMARY’
    2017-04-26 19:56:33 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:42-310’ for key ‘PRIMARY’
    2017-04-26 19:56:34 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:56:02-311’ for key ‘PRIMARY’
    2017-04-26 19:56:36 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-306’ for key ‘PRIMARY’
    2017-04-26 19:56:37 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:44-302’ for key ‘PRIMARY’
    2017-04-26 19:56:39 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:56:05-309’ for key ‘PRIMARY’
    2017-04-26 19:56:40 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:25-302’ for key ‘PRIMARY’
    2017-04-26 19:56:42 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:45-305’ for key ‘PRIMARY’
    2017-04-26 19:56:44 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:33-305’ for key ‘PRIMARY’
    2017-04-26 19:56:45 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:56:09-302’ for key ‘PRIMARY’
    2017-04-26 19:56:47 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:47-302’ for key ‘PRIMARY’
    2017-04-26 19:56:48 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:26-305’ for key ‘PRIMARY’
    2017-04-26 19:56:50 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:35-302’ for key ‘PRIMARY’
    2017-04-26 19:56:52 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:56:14-353’ for key ‘PRIMARY’
    2017-04-26 19:56:54 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-301’ for key ‘PRIMARY’
    2017-04-26 19:56:54 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-26 19:56:55 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:51-305’ for key ‘PRIMARY’
    2017-04-26 19:56:56 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-26 19:56:56 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:56:16-302’ for key ‘PRIMARY’
    2017-04-26 19:56:57 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-26 19:56:57 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-26 19:56:58 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:28-302’ for key ‘PRIMARY’
    2017-04-26 19:57:00 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:54-304’ for key ‘PRIMARY’
    2017-04-26 19:57:02 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:23-305’ for key ‘PRIMARY’
    2017-04-26 19:57:02 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-26 19:57:04 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:39-304’ for key ‘PRIMARY’
    2017-04-26 19:57:06 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:29-307’ for key ‘PRIMARY’
    2017-04-26 19:57:07 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:56:24-353’ for key ‘PRIMARY’
    2017-04-26 19:57:08 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:57-301’ for key ‘PRIMARY’
    2017-04-26 19:57:10 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:57-301’ for key ‘PRIMARY’
    2017-04-26 19:57:11 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:57-302’ for key ‘PRIMARY’
    2017-04-26 19:57:12 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:56:27-309’ for key ‘PRIMARY’
    2017-04-26 19:57:12 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-26 19:57:13 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-26 19:57:14 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:56:28-311’ for key ‘PRIMARY’
    2017-04-26 19:57:15 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-26 19:55:17-304’ for key ‘PRIMARY’
    2017-04-26 19:57:15 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-26 19:57:16 Работа модуля ModDBExport завершена
    ———————————————————————————

    Остановил (выгрузил модуль) в 19:57. Сообщения о дублях появились сразу же после старта. Очередь переполнилась за 2 мин.
    Первые дубли появились, когда еще и очереди-то еще не было! Вот что странно!
    Входные каналы проверил — привязаны к тегам одного КП.

    #5577
    kustar
    Участник

    INSERT IGNORE INTO cnldata (datetime, cnlnum, val, stat)
    VALUES (@dateTime, @cnlNum, @val, @stat)

    В таком варианте все красиво. В логах — тишина. В таблице повторов нет. Очереди тоже нет. Записи раз в секунду.

    #5582
    kustar
    Участник

    Перезагружал сервер по питанию. Не намеренно, по необходимости.
    SCADA сервер с модулем поднялись раньше MySQL. Очередь сразу выросла до 100, стала уменьшаться только через 5 мин. Видимо, столько понадобилось на подъем MySQL и коннект модуля с ним. В результате 154 записи потеряны.
    Очередь с 100 до 0 уменьшалась в течение 10 мин., параллельно шла запись в таблицу. Дальше все ровно.
    Понятно, нет смысла складывать ежесекундные данные.
    А кстати, минутные и часовые этим же модулем вытащить можно? Или нужно самому отсчитывать?

    #5615
    Mikhail
    Модератор

    Если модуль не может вставить какую-либо запись в БД, то она не удаляется из очереди и ошибка возникает и сохраняется до перезапуска сервера, что конечно неудобно и желательно в будущем исправить.

    Полагаю, что у Вас какая-то особенность в конфигурации, которая приводит к дублированию. Чтобы её найти, нужно подключаться удалённо и смотреть всё детально — это уже платная услуга. Иначе бы никто не смог пользоваться модулем, а это не так.

    По поводу минутных и часовых данных. Всё зависит от той структуры БД, которую Вам удобно иметь для решения Вашей задачи. Под неё нужно писать соответствующие SQL скрипты. В каждом случае нужно что-то своё, можно сделать что угодно.

    5 минут вероятно ушли на восстановление сетевого соединения. Оно не сразу восстанавливается.

    #5623
    kustar
    Участник

    Не стоит так глубоко ковыряться! IGNORE работает, за 2,5 часа работы модуля в таблице ок 500 тыс записей. Без ошибок. Очередь модуля — одна-две записи, и то изредка. Записи таблицы повытаскивал на графики — все красиво!
    Кстати, где почитать про значения статуса?
    Со скриптами поколдую сам. Думал, может есть готовые переменные (минутные и часовые).
    Спасибо!
    Андрей.

    #5624
    manjey73
    Участник

    В Справочниках есть БД Типы событий, можно создавать кроме системных Статусов свои.
    Так же можно использовать в формулах. Ну и как вариант лишние отсекать запросами (не пробовал).

    #5635
    Mikhail
    Модератор

    Записи таблицы повытаскивал на графики — все красиво!

    Присылайте ссылки на скриншоты, если не секрет.

    #5636
    Mikhail
    Модератор

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

    #5644
    kustar
    Участник

    Присылайте ссылки на скриншоты, если не секрет.
    Не секрет, конечно! Рисовал в екселе, данные вытаскивал через ODBC. Посмотрел, остался доволен и ничего не сохранил. Настрою базу — выложу картинки.

    Модуль экспорта не видит дорасчетных каналов. В частности, «Дорасчетный ТИ» и «Минутный ТИ». На картинке (схеме) показать могу, а в базу — нет.

    И еще вопрос: как в базу вытаскивать только определенные каналы, не все скопом?
    Прошу извинить, опыта работы с SQL нет, только учусь.

    #5645
    kustar
    Участник

    Еще вопрос: есть ли у сервера счетчик полученных измерений и как его прочитать?
    Можно было бы вычислять среднее, например, за минуту и вычисленное значение сохранять в DB.

    #5646
    kustar
    Участник

    И, кстати, как работает усреднение входных каналов?

    #5647
    kustar
    Участник

    Так выглядит диаграмма в Excel.
    График изменения плотности нефти за 5 часов.
    В базу (MySQL) данные записываются с секундным интервалом.
    Коммуникатор юзает OPC .dll, потому временные параметры не настраиваются.
    Как объяснял Михаил (где-то в другой ветке на этом форуме), данные поступают тогда, когда того желает ОРС сервер.
    Дальше через ODBC коннектор — в Excel. Все стандартными средствами.

    http://postimg.org/image/l3kcgx5dx/

    Секундные данные в базе — это, конечно, излишество. Поэтому все вопросы выше актуальны.

    #5651
    Mikhail
    Модератор

    Спасибо за скриншоты!

    Модуль экспорта не видит дорасчетных каналов. В частности, «Дорасчетный ТИ» и «Минутный ТИ». На картинке (схеме) показать могу, а в базу — нет.

    Модуль экспорта видит только то, что напрямую приходит от Коммуникатора. Наверное, можно его как-то усовершенствовать, чтобы передавались дорасчётные каналы, но это уже другая история.

    И еще вопрос: как в базу вытаскивать только определенные каналы, не все скопом?

    Использовать для экспорта не примитивные скрипты, а создать хранимые процедуры, где проверять номера каналов. Либо дорабатывать модуль экспорта, чтобы это делал он ))
    Наверное, можно что-то типа
    INSERT INTO
    SELECT FROM WHERE

    • Этот ответ был изменен 6 лет, 11 месяцев назад от Mikhail.
    #5653
    Mikhail
    Модератор

    По вопросам счётчиков и средних просьба завести отдельные темы.

    #5660
    kustar
    Участник

    Нашел объяснение для Duplicate entry ‘2017-04-26 19:55:29-307’ for key ‘PRIMARY’
    2017-04-26 19:57:07 Ошибка при экспорте текущих данных в БД MySQL —
    Коммуникатор иногда (и довольно часто) успевает дважды отправить данные за одну секунду. Вторая запись 307 -го канала с таким же datetime не проходит.
    Так что, IGNORE оказался полезной штюкой.

Просмотр 15 сообщений - с 1 по 15 (из 28 всего)
  • Вы должны авторизироваться для ответа в этой теме.