Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 подскажите способ запретить подключиться к базе (на время)  [new]
Cobalt747
Member

Откуда:
Сообщений: 2182
Ситуация:
FB 2.1, Win
Базы в синхронизации, работает служба, подключающаяся к обеим базам.
Наступает время обновления ПО

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

Подскажите, в какую сторону мне смотреть. если учитывать что и служба и конвертер подключается к БД под одним и тем же SYSDBA.
25 июл 20, 11:05    [22173526]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4236
Cobalt747
Ситуация:
FB 2.1, Win
Базы в синхронизации, работает служба, подключающаяся к обеим базам.
Наступает время обновления ПО

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

Подскажите, в какую сторону мне смотреть. если учитывать что и служба и конвертер подключается к БД под одним и тем же SYSDBA.

Я делаю так:
1. Из обновлятора посылаю эвэнт с просьбой отключиться;
2. Жду минутку;
3. В это время клиенты отключаются, и начинают ждать, когда база перестанет быть доступной; после этого - они начинают ждать, когда база снова станет доступной;
4. Через минутку обновлятор тушит службу FB;
5. Переименовывает файл базы; (дубликат сохраняет за одно)
6. Запускает FB, подключается к этому переименованному файлу БД, обновляет базу (при ошибке - возвращает дубликат);
7. Тушит FB, переименовывает файл базы назад, запускает FB;
8. Всё, клиенты подключаются.
25 июл 20, 12:10    [22173534]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4236
Cobalt747,

Еще в gfix есть ключ, который выгоняет всех пользователей принудительно, можно даже SYSDBA, еще можно поудалять записи из MON$ATTACHMENTS.
Но лично мне такое не подходит по ряду причин.
Да и не помню, как с этим в 2.1.

Сообщение было отредактировано: 25 июл 20, 12:12
25 июл 20, 12:14    [22173535]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50835

Cobalt747
на это время запретить службе синхронизации подключаться к БД.

net stop <твоя служба синхронизации>

Posted via ActualForum NNTP Server 1.5

25 июл 20, 12:45    [22173542]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61571
Cobalt747> Подскажите, в какую сторону мне смотреть

Зависит от.

Про переименование после стопа сервера
уже подсказали, это дедовский способ.
Про стоп службы синхронизации тоже.
Я бы ещё уточнил, какие есть способы
управления/настройки у самой службы
синхронизации - возможно, у неё есть
команда "стоп", наверняка есть параметр
"строка коннекта к БД" и т.д.

Posted via ActualForum NNTP Server 1.5

25 июл 20, 13:36    [22173552]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Cobalt747
Member

Откуда:
Сообщений: 2182
Dimitry Sibiryakov
net stop <твоя служба синхронизации>

Увы, служба может располагаться на удаленном ПК.
25 июл 20, 22:45    [22173674]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 850
Гаджимурадов Рустам

Про переименование после стопа сервера
уже подсказали, это дедовский способ.


Я бы попросил... Дедовский способ - ремня за SYSDBA для службы для начала, а дальше банальный gfix -shut -f 0. Коннекты от других SYSDBA он тоже отсечёт, но если они настырно полезут снова, то влезут. Потому и ремня.
25 июл 20, 23:16    [22173677]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50835

Cobalt747
служба может располагаться на удаленном ПК.
Ты не поверишь, но NET способен остановить и удалённую службу.

Posted via ActualForum NNTP Server 1.5

26 июл 20, 00:07    [22173692]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Cobalt747
Member

Откуда:
Сообщений: 2182
Dimitry Sibiryakov

Cobalt747
служба может располагаться на удаленном ПК.
Ты не поверишь, но NET способен остановить и удалённую службу.

Остановить всю синхронизацию на несколько десятков ПК только для обновления одного ПК - это перебор.
26 июл 20, 16:28    [22173832]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50835

Cobalt747
Остановить всю синхронизацию на несколько десятков ПК только для обновления одного ПК -
это перебор.

Обновлять только одного клиента из нескольких десятков, на которых идёт синхронизация -
самая большая глупость, которую я только слышал. Ты хочешь, чтобы новые таблицы не
синхронизировались или синхронизация падала на удалённых таблицах или чтобы
синхронизировалась только часть данных в модифицированных таблицах?

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

Posted via ActualForum NNTP Server 1.5

26 июл 20, 17:28    [22173841]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
zeon11
Member

Откуда: Сибирь, Кемерово
Сообщений: 1203
1. Посылаю эвент приложению. Приложение включает таймер на 5 минут и выводит сообщение, мол прошу завершить
работу, иначе через 5 минут приложение будет завершено принудительно.
Кто за компьютером, им 5 минут хватает на завершение, а кто ушел и оставил комп, ну, значит не надо, приложение
само завершает работу по таймеру.
2. Чтобы за эти 5 минут не подключились новые пользователи, в триггере на подключение
"отшиваю" всех, кроме себя
CREATE OR ALTER TRIGGER "_CONNECT"
ACTIVE ON CONNECT POSITION 0
AS
.........................
declare variable Err varchar(150);
............................
begin
.........................
  Err='Извините, но доступ к данным временно закрыт в связи с профилактическими работами. тел. 8-905..........7, ...........';
...........................
  if ((current_user<>'SYSDBA') and (current_user<>'********')) then
    begin
       if (gen_id(gen_close_*****,0)<>0) then exception e_exception_1(:err);
       if (gen_id(gen_close_*****,0)<>0) then exception e_exception_1(:err);
 ...................     
       if (gen_id(gen_close_all_app,0)<>0) then exception e_exception_1(:err);
    end
end
^

закрытие приложений (их может быть несколько на одну БД) регулирую состоянием соответствующих генераторов.
gen_close_all_app закрывает всю БД от всех приложений
26 июл 20, 18:50    [22173856]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61571
СПМ> Я бы попросил... Дедовский способ

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

Posted via ActualForum NNTP Server 1.5

26 июл 20, 19:00    [22173858]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Cobalt747
Member

Откуда:
Сообщений: 2182
Dimitry Sibiryakov,

Я вас умоляю, какой кластер?
просто десятки касс, разбросанных по городу/городам.
такое обновление может идти даже не один день
26 июл 20, 19:38    [22173864]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50835

Cobalt747
такое обновление может идти даже не один день

Но ты так и не рассказал как идёт синхронизация на частично обновлённую кучку машин.

Posted via ActualForum NNTP Server 1.5

26 июл 20, 20:06    [22173878]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Cobalt747
Member

Откуда:
Сообщений: 2182
Dimitry Sibiryakov
Но ты так и не рассказал как идёт синхронизация на частично обновлённую кучку машин.

Да там-то проблем нет - где обновились на новую версию - там идёт синхронизация, где не обновились - не идёт.

При том реально-то проблем с конвертированием баз-то пока не было зарегистрировано, но клиент жалуется непонятно на что, вот я и подумал, что тут МОЖЕТ возникать именно такая проблема.
Но клиент жалуется на другое )))
26 июл 20, 20:38    [22173887]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29037
Cobalt747,

ну хорошо. Обновление на ЦБД прошло. А как потом синхронизатор синхронизирует DDL и DML после обновления?
27 июл 20, 01:48    [22173957]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50835

Cobalt747
такое обновление может идти даже не один день

Тогда просто останавливаешь сервер, обновляешь базу в embedded mode, запускаешь сервер
обратно.

Posted via ActualForum NNTP Server 1.5

27 июл 20, 12:35    [22174126]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10419
Для (Linux) классика - не "просто". Но это уже отмечалось.

P.S.
В очередной раз повторил: "Я буду внимательнее".

Сообщение было отредактировано: 27 июл 20, 12:35
27 июл 20, 12:37    [22174129]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8597
Dimitry Sibiryakov
Тогда просто останавливаешь сервер, обновляешь базу в embedded mode, запускаешь сервер обратно.
Для извращенных почиталей сисдба,для котрых шатдаун не указ - есть файрвол, ну как полумера, чтоб сосем не гасить сервак.
Хотя я бы рекомендовал выпилить сисдба.
27 июл 20, 12:44    [22174132]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50835

А в чём проблема его погасить-то? Ах да, в 2.1, я тоже должен тренировать внимательность.

Posted via ActualForum NNTP Server 1.5

27 июл 20, 12:49    [22174137]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10419
Да внимательность и сейчас не вредно тренировать.
Просто потому, что fbguard может вернуть ошибку при остановке процесса firebird и сервис будет перестартован, как "упавший". Не часто, но бывает. Ну и для винды сценарий "процесс завершился с ненулевым кодом и SCM его перестартовал" - вполне реален.
27 июл 20, 13:15    [22174153]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31312
Basil A. Sidorov
Да внимательность и сейчас не вредно тренировать.
Просто потому, что fbguard может вернуть ошибку при остановке процесса firebird и сервис будет перестартован, как "упавший". Не часто, но бывает. Ну и для винды сценарий "процесс завершился с ненулевым кодом и SCM его перестартовал" - вполне реален.
даже на ХР гвардеец нахрен не нужен.
он был оправдан на 95/98.
но стюардессу до сих пор не закопали...
27 июл 20, 14:31    [22174200]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8597
Dimitry Sibiryakov
А в чём проблема его погасить-то?
один инстанс может обслуживать более одной бд, гасить весь... а как остальные базы?
27 июл 20, 15:13    [22174219]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8597
Ivan_Pisarevsky
есть файрвол
Хотя как в виндах его заскриптовать, чтобы по команде гасли определенные айпи я решительно не в курсе, для айпитаблес как два байта переслать, а вот кнопочки в виндовом гуи для меня темный лес с партизанами...
27 июл 20, 15:26    [22174230]     Ответить | Цитировать Сообщить модератору
 Re: подскажите способ запретить подключиться к базе (на время)  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10419
Мимопроходящий
даже на ХР гвардеец нахрен не нужен.
fbguard/firebird это для линукса. Хотя и там можно без него.
27 июл 20, 15:40    [22174237]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить