Как одновременно исполнить скрипт на 40 базах?

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
dedok
Сообщения: 7
Зарегистрирован: 13 сен 2005, 01:48

Как одновременно исполнить скрипт на 40 базах?

Сообщение dedok » 25 дек 2008, 06:36

FB 1.5
Все 40 баз одинаковые, все доступны по сети.
Программисты присылают скрипт для обновления , его надо применить на на всех базах.
Сейчас это делается так:
Запускаем IBexpert присоединяем удалённо базу, исполняем скрипт.
ИТД по каждой базе.
Предполагается увеличение количества баз до 150, что для обновления совсем уж утомительно.
Как подключится ко всем базам одновременно и исполнить скрипт?

Tonal
Сообщения: 104
Зарегистрирован: 30 сен 2007, 13:42

Re: Как одновременно исполнить скрипт на 40 базах?

Сообщение Tonal » 25 дек 2008, 07:58

Использовать IBEScript.exe + простенький скриптик.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Как одновременно исполнить скрипт на 40 базах?

Сообщение kdv » 25 дек 2008, 12:00

даже для 40 баз программисты уже могли бы написать простое приложение, которое
1. имеет редактируемый список серверов
2. может взять скрипт и применить над списком серверов
3. может показать где скрипт прошел, а где нет.

dedok
Сообщения: 7
Зарегистрирован: 13 сен 2005, 01:48

Re: Как одновременно исполнить скрипт на 40 базах?

Сообщение dedok » 26 дек 2008, 08:29

kdv писал(а): уже могли бы написать простое приложение
Да кто бы спорил. Только вот эти перепрограммисты в сторонней организации, и хотят денег за новую задачу.
Мне руководство так и говорит:" Тебе надо, заплати им из своих. Чего ты, дед, лезешь, куда тебя не просят. Есть утверждённая технология, хоть тыща серверов- сиди перебирай".
Вот я и решил придумать самоделку.
Tonal писал(а):Использовать IBEScript.exe + простенький скриптик.
Т.е. на каждый сервер по две строчки?
connect ......
IBEScript.exe(с ключами) myscript.sql >дописать результаты в журнал mylog.log
Все сточки в командный файл и на исполнение.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Как одновременно исполнить скрипт на 40 базах?

Сообщение kdv » 26 дек 2008, 09:53

а у вас разработчиков нет? программа-то достаточно простая получится, если не сказать примитивная.
кстати, вообще просто так прогонять скрипт - достаточно опасно. что если скрипт обломится по каким-то причинам на половине, и кто в этом будет виноват?
и вообще, это вопрос степени геморроя. если не лениво самому скрипт ваять - ок. или заплатить 5к руб за программку, думаю больше она не стоит.

Tonal
Сообщения: 104
Зарегистрирован: 30 сен 2007, 13:42

Re: Как одновременно исполнить скрипт на 40 базах?

Сообщение Tonal » 26 дек 2008, 10:56

dedok писал(а):
Tonal писал(а):Использовать IBEScript.exe + простенький скриптик.
Т.е. на каждый сервер по две строчки?
connect ......
IBEScript.exe(с ключами) myscript.sql >дописать результаты в журнал mylog.log
Все сточки в командный файл и на исполнение.
Одну строчку - параметры конекта передаются IBEScript.exe ключами.
Хотя если с корректной обработкой ошибок - то чуток посложней будет: строка на сервер + несколько строк процедуры вызова IBEScript.exe с обработкой ошибок :)

Только проверь сначала на тесте, а то так все 40 серверов завалить можно. :)

СанЕк
Сообщения: 25
Зарегистрирован: 25 окт 2005, 11:45

Re: Как одновременно исполнить скрипт на 40 базах?

Сообщение СанЕк » 29 дек 2008, 12:28

Решал я такую задачу, 130 баз, решение в общем то для репликации баз, но есть функция и для обновления баз.
Решение работает четко, позволяет удаленно выполнять любые скрипты с контролем выполнения, но есть ньюанс :), придеться в каждой базе создать для начало специальный генератор. Могу поделится на добрых условиях :).

SDG
Сообщения: 20
Зарегистрирован: 27 авг 2008, 09:32

Re: Как одновременно исполнить скрипт на 40 базах?

Сообщение SDG » 30 дек 2008, 16:10

СанЕк писал(а):... Могу поделится на добрых условиях :).
я думаю, никто не откажется посмотреть примеры реализации

СанЕк
Сообщения: 25
Зарегистрирован: 25 окт 2005, 11:45

Re: Как одновременно исполнить скрипт на 40 базах?

Сообщение СанЕк » 31 дек 2008, 10:16

это screenshot консоли управления
Изображение

все построено на Web Services то есть есть на каждой машине стоит сервис и клиент клиент передает сообщения серверу сервер выполняет и возвращает результат в принципе все просто и надежно, в следующем году постараюсь написать подробнее о возможностях и принципах работы.
Последний раз редактировалось СанЕк 05 янв 2009, 18:28, всего редактировалось 1 раз.

СанЕк
Сообщения: 25
Зарегистрирован: 25 окт 2005, 11:45

Re: Как одновременно исполнить скрипт на 40 базах?

Сообщение СанЕк » 05 янв 2009, 18:23

продолжу:
сейчас программа выполняет следующие функции.
1 - репликация с фильтром, то есть часть данных приходящих от клиентов пересылаются всем остальным клиентам. Репликация построена на триггерах - которые записывают в лог изменившиеся поля, репликация offline/online то есть если сервер клиента выключен данные репликации хранятся до тех пор пока не включиться сервер клиента.
2 - обновление базы данных, с контролем выполнения, в том числе автоматическая. В программу вводятся скрипты с последовательностью выполнения и если сервер клиента был выключен программа при первом коннекте сама обновит базу до текущего состояния.
3 - обновление программного обеспечения, через blob поля и спец. таблицу, контроль версионности ПО.
4 - самостоятельное обновление - так как весь процесс построен на клиент серверной технологии есть 2 exe которые могут обновлять друг друга, так же все процедуры делаются с главного сервера, клиентам абсолютно ничего делать не надо. Самообновление работает только в том случае если у текущего пользователя есть права на запуск программ.
5 - удаленное управление сервером, то есть для изменения каких либо его параметров не нужно не с кем связываются.
6 - имеются функции принудительонй синхронизации отдельных таблиц, то есть если по каким либо причинам произошла колизия данных или еще что то (да все ошибки происходящие на клиентах так же передаются на сервер) можно быстро все поправить.
7 - просмотр удаленного рабочего стола, на тот случай когда нет не какого другого способа удаленного администрирования, можно хотя бы взглянуть что там творится :).
8 - в принципе любую базу данных можно подогнать для работы таким вот образом, надо только добавить необходимые триггеры, и решить проблему первичного ключа в таблицах. У меня с этим достаточно просто bigint = номер_предприятия*10000000+GEN_ID(), вся логика репликации строится чисто на триггерах, то есть в основной рабочей программе ничего менять не нужно.

Так как предполагалось использование программы в самых отдаленных уголках России, программа не требует не какого администрирования, за исключением открытия одного порта в брандмауэре.
Сразу после установки программа переходит в рабочий режим. Пока проект в эксплуатации пол года за это время у 80% клиентов программа еще не разу не выключалась и не вылетала, остальные 20% - там где существует домен и программа запускается под учетной записью ограниченного пользователя, есть проблемы решить которые удаленно очень сложно. Сервер успешно работает на Windows 2000 и выше, однажды даже на 98 запустили все это дело, под vista не тестировалось, в плане производительности требований нет.

из минусов:
Программа не поддерживает (пока) репликацию бинарных blob полей и таблицы с двойным первичным ключом, все это сделано намерено дабы не усложнять и без того сложную процедуру
и в связи с большим количеством баз и тем что юзвери на местах порою выключают сервер бывают не значительные рассинхронизации некоторых общих данных, такие нюансы максимально нивелированы администрированием прав в рабочей программе и в последнее время их нет.

Ответить