IBBackupService - backup на другой сервер. Как?!?!

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

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

Ответить
Georgi-47
Сообщения: 51
Зарегистрирован: 01 ноя 2004, 10:21

IBBackupService - backup на другой сервер. Как?!?!

Сообщение Georgi-47 » 20 ноя 2004, 13:40

БД лежит на одном сервере, бэкап мы хотим положить на другой.
Единственная программа, в которой можно указать другой сервер - IBConsole.
Смотрю ее исходники и не могу понять как это сделано. Реализовано на обычной дельфийской компоненте ibBackupService. Ни там (ни в аналогичных компонентах из других наборов) нет явного свойства для указания имени второго сервера. Тем не менее, в IBConsole это реализовано. Как!?!? Смотрю исходники и не понимаю. С одной стороны, от создания объекта до вызова ServiceStart имя второго сервиса не передается, с другой стороные, указанное на форме имя второго сервера используется только (вроде) для наполнения комбо-бокса бэкап-альясов. Т.е. ни с какой стороны... Но ведь работает! Как?
Правда, честно скажу, пробовал я это давно, на работе сейчас все как-то недосуг, а дома двух серверов нет. Да и хэлп подтверждает - можно бэкап класть на другой сервер.
Была мысль, что имя сервера указывается в имени файла бэкапа, но нет, специальная проверка стоит, чтобы в имени файла не было имени сервера, никаких двойных слэшей, лишних двоеточий, только диск, каталоги и собственно имя файла.

И почему ни в одной другой программе это не реализовано?

Georgi-47
Сообщения: 51
Зарегистрирован: 01 ноя 2004, 10:21

Сорри, не в тот раздел отправил (-)

Сообщение Georgi-47 » 20 ноя 2004, 23:56

Следовало бы в "Вопросы создания клиентских приложений..."

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 22 ноя 2004, 13:34

Нет такой возможности в принципе. Бекап через сервисы оставляет gbk-файл на машине сервера, бекап через GBAK - на машине клиента (где GBAK). После этого файл можно перемещать руками куда угодно, но стандартные возможности ограничены двумя вышеперечисленными опциями.

Georgi-47
Сообщения: 51
Зарегистрирован: 01 ноя 2004, 10:21

Сообщение Georgi-47 » 22 ноя 2004, 15:22

Хм... Действительно, IBConsole так тоже не умеет, сейчас проверил. Но ведь ServerManager от IB5.6 умел это делать. А он как это делал?
А GBak'а, оформленного в виде процедуры или компоненты нет, случайно? Тут, наверное, смайлик уместен.
:roll:

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

Сообщение kdv » 23 ноя 2004, 09:17

server manager умел
а) подключиться к любому серверу
б) положить файл backup на любую машину

кроме того, у IB/FB работает эдакое "тунелирование", когда к одному серверу IB/FB можно подключиться через другой.

в случае
"БД лежит на одном сервере, бэкап мы хотим положить на другой. " проще всего сделать shared folder на втором сервере, и на первом сделать бэкап через services api. только вот еще - в этом случае FB на первом сервере должен быть запущен не от LocalSystem, а от юзера, у которого есть права доступа на этот самый shared folder.

Georgi-47
Сообщения: 51
Зарегистрирован: 01 ноя 2004, 10:21

Сообщение Georgi-47 » 23 ноя 2004, 09:27

kdv писал(а):server manager умел
а) подключиться к любому серверу
б) положить файл backup на любую машину

кроме того, у IB/FB работает эдакое "тунелирование", когда к одному серверу IB/FB можно подключиться через другой.
А как server manager ЭТО делал? Почему же IBConsole (которая заявлялась как замена ServerManager'а) "разучилась" так делать?

Мозгокрут 13-ый
Сообщения: 10
Зарегистрирован: 18 ноя 2004, 22:15

Сообщение Мозгокрут 13-ый » 23 ноя 2004, 13:50

IBConsole это вообще поделка, коей до сих пор и остается.

В services api попробуй указать ServerName
server1:server2

где server1 это через кого, а server2 - откуда бэкапить. может и сработает....

по крайней мере раньше такой routing работал, сейчас то работает, то нет, в разных версиях. в FB 1.5.1 должен работать...

veart
Сообщения: 29
Зарегистрирован: 25 янв 2006, 09:39

Сообщение veart » 06 мар 2006, 09:16

Столкнулся с такой же проблемой.
Сначала работал такой вариант:
имя, пароль одинаковые и на клиенте и на сервере
ServerName = "localhost"
DatabaseName - указывал удаленную базу (server:c:\path\basse.gdb)
т.е. он сервис конектил к локальной СУБД, а потом как-то переконекчивался к удаленной базе, но gbk сохранял на клиенте.
Когда поменял пароль на клиенте и они стали отличаться - работать перестало. Может этот вариант кому поможет.
Из этого следует, что как-то все таки можно сохранить гбк на клиенте.
Если кто решил эту проблему полностью, напишите (кроме варианта с gbak'ом и расшареными папками)

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 06 мар 2006, 12:22

Georgi-47 писал(а): А как server manager ЭТО делал? Почему же IBConsole (которая заявлялась как замена ServerManager'а) "разучилась" так делать?
Через services api делал. Не нынешней системы, недокументированный, вещь в себе, то есть исключительно для внутреннего применения в Борланде. В IB6 заменён и выпущен в опен сорц уже в новом виде.

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

Сообщение kdv » 06 мар 2006, 14:14

Из этого следует, что как-то все таки можно сохранить гбк на клиенте.
вместо того чтобы строить всяческие домыслы, рекомендую читать документацию. с сервера на клиента - gbak, на сервере - gbak -se или services api.

Server Manager в IB 4.x/5.x работал то так то сяк, в зависимости от ситуации - или вызывал gbak, или работал через servapi.

veart
Сообщения: 29
Зарегистрирован: 25 янв 2006, 09:39

Сообщение veart » 07 мар 2006, 05:36

Ладно, спорить не буду. Тем не менее у меня сейчас работает незадокументированный вариант. TIBBackupService делает бэкап с сервера на клиенте как я описал выше, при условии что пароли совпадают.

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

Сообщение kdv » 07 мар 2006, 20:24

rerouting - не новость, только сервер должен быть и на "клиенте" тоже. В общем, не катит.

Ответить