+7 499 990-10-21

смена БД на "лету"

смена БД на "лету"

Сообщение kedr19 » 06 фев 2013, 08:11

Какие предложения на для текущего релиза ДЭНСИ - 1.2.7, можете предложить для "горячей" замены БД.
На данный момент с одной БД работают 3 кассы, в ближайшие 2 недели хочу подцепить еще 3 кассы. Для обеспечения стабильной работы развернул еще одну запасную БД. Текущий механизм это правка секции [HOST] в LibCash и перезапуска демонов или рестарт кассы. Данный механизм не сложен при наличии навыков), но уходя в отпуск это может стать проблемой.
Потому хочу упростить этот механизм нажатием кнопки в 1С которая сформирует файл, пример:
Код: Выделить всё
192.168.0.12

это новый адрес сервера.
Какие Ваши предложения могут быть? Может какой нибудь демон который будет также смотреть на определенный файл в папке и делать все автоматом?
kedr19
 
Постов: 587
Зарегистрирован: 24 окт 2011, 15:49
Откуда: г. Новосибирск

Re: смена БД на "лету"

Сообщение Alexander » 06 фев 2013, 11:52

Демоны, по идее, как раз не обязательно перезапускать, т.к. настройки коннекта к базам демоны считывают при получении очередной команды загрузки/выгрузки (наличие соответствующего файла-флага).
А вот саму ДЭНСИ: КАССу как раз после изменения настроек работы с БД перезапускать придется.
kedr19 писал(а):Может какой нибудь демон который будет также смотреть на определенный файл в папке и делать все автоматом?

На эту тему несложно shell-скрипт написать. Тут специальной программы не требуется, мне кажется. Другой вопрос, например, возможность автоматической перезагрузки системы по такой команде, например, во время работы кассы.
Alexander
 
Постов: 4955
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ

Re: смена БД на "лету"

Сообщение kedr19 » 06 фев 2013, 12:09

А вот саму ДЭНСИ: КАССу как раз после изменения настроек работы с БД перезапускать придется.

Да закрыть и открыть по команде из вне было бы удобно, только вот если в этот момент пробивают чек, тут возникнет проблема. Как алгоритм восстановления чека после сбоя сработает при таком выходе.
Демоны, по идее, как раз не обязательно перезапускать, т.к. настройки коннекта к базам демоны считывают при получении очередной команды загрузки/выгрузки (наличие соответствующего файла-флага).

Непонял). Насколько я понимаю демон нужен для того чтобы понять куда записывать данные и откуда их считывать. Если это так то записывать ему ничего не нужно так как БД общая и там работает свой демон, а для выгрузки по сути ничего не меняется. Тоесть демоны и правда тут вообще не причем - это так?
На эту тему несложно shell-скрипт написать.

Был бы я силен в этом не писал бы) его же нужно еще подкинуть в демон который будет мониторить папку на наличие файла откуда считать данные сервера. Вот тут то у меня и напряги)
kedr19
 
Постов: 587
Зарегистрирован: 24 окт 2011, 15:49
Откуда: г. Новосибирск

Re: смена БД на "лету"

Сообщение Alexander » 06 фев 2013, 12:28

kedr19 писал(а):Как алгоритм восстановления чека после сбоя сработает при таком выходе.

Если база не поменяется, то чек восстановится нормально. Если перезапуск будет связан с изменением коннекта к БД, то чек не восстановится, т.к. он оперативно (до закрытия чека) хранится в БД LinCash.

kedr19 писал(а): Насколько я понимаю демон нужен для того чтобы понять куда записывать данные и откуда их считывать. Если это так то записывать ему ничего не нужно так как БД общая и там работает свой демон, а для выгрузки по сути ничего не меняется. Тоесть демоны и правда тут вообще не причем - это так?

Не совсем (ну или мы с Вами в определениях запутались :) ). Демоны upload и daemon_unload сами выполняют загрузку/выгрузку данных - в них реализованы подключения к базам (независимые от интерфейса кассы) и собственно логика конвертации поддерживаемых протоколов. Соответственно, если настройки подключения к базам в /etc/dancy/LinCash_db.conf и/или /etc/dancy/Trans_db.conf поменялись, демоны должны переподключиться к новым базам. Но в общем-то это и было реализовано, т.к. upload и daemon_unload считывают настройки коннектов каждый раз при получении файла-флага (=команды) загруки/выгрузки.
kedr19 писал(а):Был бы я силен в этом не писал бы) его же нужно еще подкинуть в демон который будет мониторить папку на наличие файла откуда считать данные сервера. Вот тут то у меня и напряги)

В Linux есть понятие "демонизация" (открепление от родительского процесса). Для скриптов демонизация выполняется добавлением к имени скрипта символа &.
Соответственно идея проста:
пишем скрипт, который в бесконечном цикле проверяет наличие определенного файла в определенном каталоге. Если файл есть - выполняются какие-то действия, если нет - sleep 60 (или любое другое кол-во секунд).
Добавляем этот скрипт в автозапуск с демонизацией
имя_скрипта &
(например, тупо в /etc/rc.local)
и получаем не нагружающий систему (ибо sleep высвобождает ресурсы для процессора) "скриптовой" демон.
У нашего отдела автоматизации по этому принципу, например, построен обмен через 3G-модемы с периодическим поднятием/разрывом связи по модему и проверкой/загрузкой файлов по Интернет.
Alexander
 
Постов: 4955
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ

Re: смена БД на "лету"

Сообщение kedr19 » 06 фев 2013, 12:36

Если база не поменяется, то чек восстановится нормально. Если перезапуск будет связан с изменением коннекта к БД, то чек не восстановится, т.к. он оперативно (до закрытия чека) хранится в БД LinCash.

БД то как раз и смениться(( значит не стоит из вне релоадить кассу
kedr19
 
Постов: 587
Зарегистрирован: 24 окт 2011, 15:49
Откуда: г. Новосибирск

Re: смена БД на "лету"

Сообщение Alexander » 06 фев 2013, 12:48

Да, в данном случае крайне не желательно.
Alexander
 
Постов: 4955
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ


Вернуться в Ваши предложения

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3



Кто сейчас на конференции

Сейчас посетителей на конференции: 3, из них зарегистрированных: 0, скрытых: 0 и гостей: 3 (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (170) здесь было 16 май 2020, 01:50

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3