Страница 1 из 1

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

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

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

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

Добавлено: 20 ноя 2004, 23:56
Georgi-47
Следовало бы в "Вопросы создания клиентских приложений..."

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

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

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

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

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

Добавлено: 23 ноя 2004, 09:27
Georgi-47
kdv писал(а):server manager умел
а) подключиться к любому серверу
б) положить файл backup на любую машину

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

Добавлено: 23 ноя 2004, 13:50
Мозгокрут 13-ый
IBConsole это вообще поделка, коей до сих пор и остается.

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

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

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

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

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

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

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

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

Добавлено: 07 мар 2006, 20:24
kdv
rerouting - не новость, только сервер должен быть и на "клиенте" тоже. В общем, не катит.