SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » Как правильно остановить сервер Firebird? (и все-таки, я прав или не прав?)
icon5.gif  Как правильно остановить сервер Firebird? [сообщение #2100] Mon, 17 April 2023 15:05 Переход к следующему сообщению
shalamyansky в настоящее время не в онлайне  shalamyansky
Сообщений: 142
Зарегистрирован: August 2022
Senior Member
Под управлением сервера находятся N баз, к каждой из них есть некое количество коннектов, некоторые из которых находятся в состоянии открытой незавершенной пишущей транзакции. Возможно также в некоторых базах запущен процесс чистки мусора. В какой-то произвольный момент возникает желание остановить/перезапустить сервер СУБД/компьютер.

Я предполагаю, точнее, надеюсь, что если остановить Firebird штатными методами ОС (net stop для сервиса Windows), то он все базы освободит аккуратно, и максимальная неприятность, которая может случиться, - неподтвержденные записи останутся в качестве мусора, который потом со временем чистильщик подчистит. И базы не побьются, и не нужно никаких специальных предварительных действий по изгнанию всех юзеров и закрытию всех коннектов.

Я прав или не прав? Подтвердите, пожалуйста, а то что-то закрались подлые сомнения и спать спокойно не дают.

P.S.
SuperServer mode, если это важно.
Re: Как правильно остановить сервер Firebird? [сообщение #2101 является ответом на сообщение #2100] Mon, 17 April 2023 15:23 Переход к предыдущему сообщениюПереход к следующему сообщению
Старый Плюшев в настоящее время не в онлайне  Старый Плюшев
Сообщений: 95
Зарегистрирован: August 2022
Географическое положение: Ленинград
Member
Зашатдаунить для начала не помешало бы. Надеюсь, все не от сисдба работают.
Re: Как правильно остановить сервер Firebird? [сообщение #2102 является ответом на сообщение #2101] Mon, 17 April 2023 15:55 Переход к предыдущему сообщениюПереход к следующему сообщению
shalamyansky в настоящее время не в онлайне  shalamyansky
Сообщений: 142
Зарегистрирован: August 2022
Senior Member
Если делать shutdown - по всем базам надо пробежаться. И, главное, потом перед запуском обязательно сделать обратную операцию, а то ведь не заработает. Вот как раз этого и хотелось бы избежать, вот в этом-то и вопрос. Вообще-то вопрос связан с автоматизацией закрытия. На некоторые внешние события, например, намерение ОС завершить свою работу, или сигнал от ИБП, или просто желание администратора, запускается скрипт, аккуратно закрывающий то, что следует закрыть. Для непосредственно Firebird сейчас это просто net stop, и это удобно и приятно, если этого достаточно. Если к нему надо будет писать еще скрипт на открытие, переводящий все базы (надо еще понять, что такое "все базы") в online, то это уже не столь удобно и приятно.
Re: Как правильно остановить сервер Firebird? [сообщение #2103 является ответом на сообщение #2102] Mon, 17 April 2023 21:16 Переход к предыдущему сообщениюПереход к следующему сообщению
Старый Плюшев в настоящее время не в онлайне  Старый Плюшев
Сообщений: 95
Зарегистрирован: August 2022
Географическое положение: Ленинград
Member
Виш ли какое дело. У меня нет опыта работы с супером, одновременно обслуживающим десятки баз. На примере классики и классики древней, я мог бы сказать что база повреждается примерно один раз на тысячу убиений сервера. Но, сцуко, по закону Всемирной Подлости это всегда происходит на рабочей базе, а не на тренировочных. Причём проявляется не сразу, всё по тому же закону. Бьются индексы PK-FK и через пару недель сотня дубликатов и записей без родителя. Касательно текущего момента тебе могли бы сказать люди, которые на "ты" с кодом. Но они не скажут. Ибо во многая знания многая печали. Ответственность, панимаш. Вроде как не должно, а вдруг - и грех на душе Smile
Re: Как правильно остановить сервер Firebird? [сообщение #2104 является ответом на сообщение #2103] Mon, 17 April 2023 21:54 Переход к предыдущему сообщениюПереход к следующему сообщению
shalamyansky в настоящее время не в онлайне  shalamyansky
Сообщений: 142
Зарегистрирован: August 2022
Senior Member
Старый Плюшев писал(а) Mon, 17 April 2023 21:16
Вроде как не должно
Вот такой ответ от людей, приближенных к телу коду, меня вполне устроил был. Оставшуюся долю ответственности я взвалил бы на себя. Это можно было бы понимать, что люди думали на эту тему, приняли меры по предотвращению, ну уж а что получилось, отдают как есть, пользуйтесь. Совершенно нормальный и повсеместный подход.

Цитата:
по закону Всемирной Подлости это всегда происходит на рабочей базе, а не на тренировочных
Кроме упомянутого закона, который, конечно же, никто не отменял, действует еще и обычная теория вероятности. Во сколько раз больше нагрузка на активно используемую базу, во столько раз больше и вероятность её сбоя.
Re: Как правильно остановить сервер Firebird? [сообщение #2105 является ответом на сообщение #2103] Mon, 17 April 2023 23:15 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время в онлайне  hvlad
Сообщений: 313
Зарегистрирован: August 2022
Senior Member
Старый Плюшев писал(а) Mon, 17 April 2023 21:16
Касательно текущего момента тебе могли бы сказать люди, которые на "ты" с кодом. Но они не скажут. Ибо во многая знания многая печали. Ответственность, панимаш. Вроде как не должно, а вдруг - и грех на душе Smile
Не могу не согласиться Smile
Re: Как правильно остановить сервер Firebird? [сообщение #2114 является ответом на сообщение #2105] Tue, 18 April 2023 17:36 Переход к предыдущему сообщениюПереход к следующему сообщению
shalamyansky в настоящее время не в онлайне  shalamyansky
Сообщений: 142
Зарегистрирован: August 2022
Senior Member
Разработчик пришел, увидел, промолчал. Я понял, молчание - знак согласия. Значит, будем продолжать, спасибо.

Ни в одном из руководств администратора Firebird нет рекомендаций или предупреждений по остановке сервера. Можно подумать, что, будучи раз запущенным, сервер будет жить вечно. Только в "Ред База Данных Версия 3.0 Руководство администратора" есть раздел 4.6 "Запуск и остановка сервера", но там в подразделе про Windows приведена лишь картинка менеджера сервисов и два слова, как мышкой сервис запустить. Упоминание возможности перевода одной базы в shutdown есть в рассказе по утилиту gfix, но никакой связи с остановом сервера не проводится.

Если рекомендаций по особым действиям нет, следовательно, особые действия и не нужны.

По своему скромному опыту могу сказать, что ни разу штатное завершение работы сервера к каким-либо неприятностям не привело. Чего, увы, нельзя сказать про нештатное завершение.
Re: Как правильно остановить сервер Firebird? [сообщение #2130 является ответом на сообщение #2114] Tue, 25 April 2023 00:14 Переход к предыдущему сообщению
kdv в настоящее время не в онлайне  kdv
Сообщений: 91
Зарегистрирован: June 2022
Member
если на одном и том же сервере есть и нормальная рабочая база, и тестовые, то нужно запускать 2 инстанса ФБ суперсервера, на разных портах. Не надо чтобы рабочий сервер обслуживал посторонние базы.
Предыдущая тема: Узнать полный возраст человека на конкретную дату
Следующая тема: Инкрементальный backup на другой сервер
Переход к форуму:
  


Текущее время: Fri Apr 26 01:54:57 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00795 секунд