UniSet
2.6.0
|
- \ref sec_DBS_Comm - \ref sec_DBS_Conf - \ref sec_DBS_Tables - \ref sec_DBS_Buffer @section sec_DBS_Comm Общее описание работы DBServer_MySQL Сервис предназначен для работы с БД MySQL. В его задачи входит сохранение всех событий происходищих в системе в БД. К этим событиям относятся изменение состояния датчиков, различные логи работы процессов и т.п. К моменту запуска, подразумевается, что неободимые таблицы уже созданы, все необходимые настройки mysql сделаны. \par При работе с БД, сервис в основном пишет в БД. Обработка накопленных данных ведётся уже другими программами (web-интерфейс). \par Для повышения надежности DBServer переодически ( DBServer_MySQL::PingTimer ) проверяет наличие связи с сервером БД. В случае если связь пропала (или не была установлена при старте) DBServer пытается вновь каждые DBServer::ReconnectTimer произвести соединение. При этом все запросы которые поступают для запии в БД, но не мгут быть записаны складываются в буфер (см. \ref sec_DBS_Buffer). \warning При каждой попытке восстановить соединение DBServer заново читает конф. файл. Поэтому он может подхватить новые настройки. \xrefitem todo 29. @section sec_DBS_Conf Настройка DBServer Объект DBServer берёт настройки из конфигурационного файла из секции \b<LocalDBServer>. Возможно задать следующие параметры: - \b dbname - название БД - \b dbnode - узел БД - \b dbuser - пользователь - \b dbpass - пароль для доступа к БД - \b pingTime - период проверки связи с сервером MySQL - \b reconnectTime - время повторной попытки соединения с БД @section sec_DBS_Buffer Защита от потери данных Для того, чтобы на момент отсутствия связи с БД данные по возможности не потерялись, сделан "кольцевой" буфер. Размер которго можно регулировать параметром "--dbserver-buffer-size" или параметром \b bufferSize=".." в конфигурационном файле секции "<LocalDBSErver...>". Механизм построен на том, что если связь с mysql сервером отсутствует или пропала, то сообщения помещаются в колевой буфер, который "опустошается" как только она восстановится. Если связь не восстановилась, а буфер достиг максимального заданного размера, то удаляются более ранние сообщения. Эту логику можно сменить, если указать параметр "--dbserver-buffer-last-remove" или \b bufferLastRemove="1", то терятся будут сообщения добавляемые в конец. @section sec_DBS_Tables Таблицы MySQL К основным таблицам относятся следующие: