|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
В системе утсановлено 2 версии Firebird: 2.5.4 и 2.1. Версия 2.1 установлена штатным установщиком, версия 2.5.4 - через instsvc (с заменой в конфиге порта для прослушивания на 3052). Запись в реестре для Firebird 2.1 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9.
Запись в реестре для Firebird 2.5.4 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9.
Через Path виден gbak только от версии 2.1: Код: sql 1. 2.
В системе установлена клиентская библиотека от версии 2.1: Код: sql 1. 2. 3. 4. 5.
Теперь о проблеме. В IBExpert делаю восстановление базы данных из бекапа, получаю файл с ODS 11.2. Т.е. при восстановлении используется Firebird 2.5. Как сделать так, чтобы при восстановлении из бекапа в IBExpert получался файл для Firebird 2.1 (ODS 11.1)? Каким образом IBExpert узнает что в системе есть Firebird 2.5.4 если у него нестандартный порт, он не виден через PATH и запись службы в рееестре не "DefaultInstance"? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 10:32 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 10:41 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
Так IBEx позвояет в регинфо для каждой БД прописать свой клиент и свою строку соединения. У меня на машинке три FB разных версий и вроде с backup/restore проблем нет - главное, самому не ошибиться. Кстати, для каждой БД в настройках IBEx можно прописать папку по умолчанию для backup/restore - это тоже облегчает жизнь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 11:03 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
Док, IPCName у обоиз серверов дефолтные: Код: sql 1.
Если менять, то каким образом? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 11:08 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
Так IBEx позвояет в регинфо для каждой БД прописать свой клиент и свою строку соединения. У меня на машинке три FB разных версий и вроде с backup/restore проблем нет - главное, самому не ошибиться. Кстати, для каждой БД в настройках IBEx можно прописать папку по умолчанию для backup/restore - это тоже облегчает жизнь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 11:09 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
dedRasta, Для существующих баз да, есть такое. А мне понадобилось создать новую базу данных. Я в IBExpert выбираю "Службы\Восстановление баз данных" и там выбираю создать новую БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 11:11 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
fortressЕсли менять, то каким образом? в firebird.conf Посмотри внимательно обсуждение по моей ссылке. Там тоже есть ссылка на предыдущую тему. Если я правильно ошибаюсь, дефолтного инстанса на машине вообще не должно быть, если хочешь запускать несколько серверов на одной машине одновременно. Потому что бекапы будут идти в той ODS, чей инстанс будет прописан в реестре, как умолчательный. Если я не прав, щас меня поправят :) У Димы на ibase.ru статья была хорошая. Только я не помню, внес туда эти нюансы или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 11:23 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
fortressЯ в IBExpert выбираю "Службы\Восстановление баз данных" и там выбираю создать новую БД. Принудительно укажи используемый для этого номер порта. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 11:32 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
fortressВ IBExpert делаю восстановление базы данных из бекапа, получаю файл с ODS 11.2. Т.е. при восстановлении используется Firebird 2.5. Как сделать так, чтобы при восстановлении из бекапа в IBExpert получался файл для Firebird 2.1 (ODS 11.1)?Не использовать локальный коннект. Или отключить XNET для одного из экземпляров сервера. fortressКаким образом IBExpert узнает что в системе есть Firebird 2.5.4Никаким. Он понятия об этом не имеет. И не должен, пока ему явно не укажут. PS firebird.log, я так понимаю, никто и никогда не читал... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 11:35 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
Докв firebird.conf например, у меня сейчас крутятся два сервера. У обоих в конфигах соответственно прописано так: Код: sql 1. 2. 3. 4. 5. 6. 7.
запущены так (лучше сразу в реестре сунь в автозагрузку) Код: sql 1. 2. 3.
соответственно коннект к соответствующим базам Код: sql 1. 2. 3.
При бекапе так же нужно указывать сервер/порт перед строкой коннекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 11:36 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
fortressВ IBExpert делаю восстановление базы данных из бекапа казалось бы, и при чем тут гбак и прочее жизнеописание? IBExpert делает бэкап-рестор через services api. Соответственно, рестор делает тот сервер, к которому идет коннект. А сервер всегда создает базу только в своем родном формате. В том числе см. вторую часть http://www.ibase.ru/prevver/ ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 12:21 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
ДокПотому что бекапы будут идти в той ODS, чей инстанс будет прописан в реестре, как умолчательный. господи боже... форматы будут те, которые сервера, к которому коннект. Коннект к 2.5 - бэкап будет ресторен в формате 2.5. Ресторит сервер, а не гбак. Гбак или сервисное апи всего-лишь командует серверу "создать БД" и так далее. Вечно вы про клиент-сервер забываете :-) http://www.ibase.ru/gbak/#bsapi http://www.ibase.ru/gbak/#rservapi Про "дефолтные инстансы" забудь. Дефолтный инстанс это просто некоторый гемор в администрировании ДВУХ серверов, не более того. Ни на какие форматы он не влияет и влиять не может. Если ты имел в виду статью про ручную установку, то это тут http://www.ibase.ru/inst_manual/ ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 12:27 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
kdvГбак или сервисное апи всего-лишь командует серверу "создать БД" и так далее. Вот только он при этом использует для коннекта порт, прописанный в firebird.conf, который ищется (в первую очередь) через запись в реестре, что и приводит к вышеописанному. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 12:35 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
Я новую БД в IBEx создаю через Database->Create database. При этом выводится форма, в которой можно прописать и клиента и строку соединения. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 12:37 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
Итак, IBExpert делает рестор через service API. В моем случае получается что эти команды передаются серверу версии 2.5 (который устанавливался вручную). Правильно ли я понимаю что, поскольку я указываю локальный путь к базе данных (без локкалхосов и портов), то используется локальный протокол XINET. Обрабатывать команды по этому протоколу может только один (?) из сервереров потому что сейчас они оба используют одно и то же IPCName=FIREBIRD и из-за этого конфликтуют. У меня последний раз компьютер перезагружался вчера, Process Explorer подсказывает, что 2.5 запустился на 2 секунды раньше чем 2.1. Возможно ли что 2.5 успел присвоить себе IPCName=FIREBIRD и такми образом стать дефолтным обработчиком команд которые отправляет IBExpert через services api? Я пытаюсь для себя понять как происходит восстановление бекапа через IBExpert и почему восстановлением в итоге занимается сервер именно 2.5, а не 2.1. hvladPS firebird.log, я так понимаю, никто и никогда не читал... Фрагменты логов для Firebird 2.1: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Фрагменты логов для Firebird 2.5.4 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 13:04 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
Проверил сейчас. Восстановлением базы данных занимается тот экземпляр сервера, который раньше запустился. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 13:16 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
fortressи из-за этого конфликтуют. тебе hvlad об этом и сказал. В том числе - не использовать локальный коннект. Если ты переименуешь ipcname в конфиге, то клиентская часть будет подбирать или конфиг по пути в реестре для defaultinstance, либо "рядом". Поэтому все это ненадежно. Таким образом, локальный протокол действительно лучше не использовать. Кроме того, если в конфиге инстансу изменен порт, и этот конфиг принадлежит DefaultInstance, который есть в реестре, то клиентская либа БЕЗ указания порта будет соединяться именно с инстансом на этом измененном порту. Поэтому при двух серверах желательно НЕ использовать записи в реестре (instreg remove). Ну и как я сказал выше, клиентская либа, если указываешь ее в ибэксперте, тоже может брать конфиг из папки выше, где она лежит. Таким образом, если хочешь работать с каким-то инстансом, и их два и более на одном компе, то не только не нужно использовать локальный коннект, но еще и нужно явно указывать порт при соединении по tcp. Чтобы не было потом удивлений, почему "сервер не тот". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2017, 13:20 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
В итоге поменял IPCName для Firebird 2.5 Код: sql 1.
а для Firebird 2.1 оставил по умолчанию Код: sql 1.
Теперь при восстановлении БД через локальный протокол в IBExprt'e он будет отправлять команды сереверу с дефолтным именем, т.е. Firebird 2.1. Если потребуется явно указать, что восстановлением базы данных из бекапа должен заниматься Firebird 2.5, то путь к базе данных нужно указывать через localhost: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 12:18 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
fortressчерез локальный протокол в IBExprt'e он будет отправлять команды сереверу с дефолтным именем "он" - это кто? серверу команды отправляет клиент fbclient.dll. А если он прочитает конфиг от 2.5? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 15:32 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
"Он" - имелся ввиду IBExpert, который через service api передает команды серверу. Да, получается что в итоге вызываются функции из клиентской библиотеки. kdvА если он прочитает конфиг от 2.5? Во-превых, честно не понимаю, что будет если он прочитает конфиг от 2.5. Во-вторых, думаю что при нормальной установке такого случится не должно. Если я правильно понял из предидущего обсуждения, то клиент ищет конфиг либо в папке на уровень выше себя, либо по пути из ветки реестра, в которой указано "DefaultInstance". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 10:41 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
fortressВо-превых, честно не понимаю, что будет если он прочитает конфиг от 2.5. он будет использовать тот ipcname, который прочитает из конфига. fortress Во-вторых, думаю что при нормальной установке такого случится не должно. при нормальной установке ipcname в конфигах одинаков. Если же ты меняешь ipcname, то фактически при локальном коннекте полагаешься на волю случая. Потому что с течением времени может измениться что угодно. Или клиентская либа будет лежать "не там", или в реестре будет путь "не к тому" Firebird, и т.д. Не надо закладываться на неоднозначности. Хоть какая-то гарантия однозначности будет если использовать Embedded конкретной версии для конкретного приложения. Иначе локальный коннект лучше не использовать (при двух разных серверах, работающих как службы). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 10:47 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
kdvон будет использовать тот ipcname, который прочитает из конфига Дим, да напиши ты наконец у себя внятно про этот злосчастный параметр, я тебе еще когда это предложил :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 11:28 |
|
2 версии Firebird на одной машине и gbak
|
|||
---|---|---|---|
#18+
ДокДим, да напиши ты наконец у себя внятно про этот злосчастный параметр это скорее не про параметр, а про локальный коннект. Причем, лично я локальный коннект просто не люблю, потому что - раньше при работе сервера службой локальный коннект просто не работал - раньше локальный коннект мог просто не работать из-за бага (пример - ФБ 1.5.1) - сейчас локальный коннект другой, и в 3.0 появились нововведения типа указания протокола коннекта, но все-таки... - при коннекте по IP инстанс на конкретном порту можно легко идентифицировать. Куда идет локальный коннект - не идентифицировать никак. Поэтому я считаю, что локальный коннект имеет смысл либо при Embedded, либо при только одном инстансе ФБ на компе. Как только инстансов больше - от греха лучше локальный коннект не использовать (в случае не-Embedded). конечно, всю эту хню, включая настройки, надо описать, но только даже по этому топику я вижу, что человек все равно не понимает. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 13:06 |
|
|
start [/forum/topic.php?fid=40&msg=39453626&tid=1561571]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
565ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 688ms |
0 / 0 |