Перенос базы firebird на другой компьютер
Для начала, nbackup.exe находится в подпапке bin папки, куда установлена СУБД Firebird. Например, типичным расположением является C:\Program Files\Firebird\Firebird_2_0\bin (Windows) или /opt/firebird/bin (Linux). Как и у большинства утилит, распространяемых с СУБД Firebird, у nbackup нет графического интерфейса; Вы запускаете программу из командной строки (или из командного файла, или из другой программы).
6. Конвертация файла базы данных
Осуществляется с помощью бесплатной утилиты FDBConvert. Переходим по ссылке, скачиваем и распаковываем архив, запускаем утилиту и указываем имя файла базы данных (4) для конвертации.
Дождитесь успешного завершения процесса.
Если Вы не уверены в своих действиях, то не меняйте параметров базы данных в процессе конвертации (размер страницы, количество страниц в буфере, кодовая страница и т.п.).
5. Обновление клиентской библиотеки
Указанные действия выполняем на каждой рабочей станции в локальной сети предприятия.
- Удаляем все существующие библиотеки gds32.dll, fbclient.dll и fbembed.dll, если они расположены рядом с файлом gedemin.exe.
- Из подкаталога BIN сервера копируем и выкладываем рядом с gedemin.exe следующие файлы:
Для облегчения поддержки и сопровождения системы рекомендуется создать на сервере папку, куда выложить выполняемый модуль gedemin.exe и указанные выше файлы. На каждой рабочей станции открыть доступ к данной папке и запускать Гедымин из нее.
Обратите внимание! Так как gedemin.exe 32-х разрядное приложение, библиотека fbclient.dll должна быть аналогичной разрядности. Если вы установили 64-х разрядный сервер Firebird, то копировать файлы надо не из его подкаталога BIN, а скачать архив с 32-х разрядной версией сервера и копировать файлы из него.
Будет хорошей идеей перед обновлением сохранять копию рабочего модуля gedemin.exe.
3. Перенос файла базы данных
Если производительность старого сервера позволяет, то делаем бэкап базы данных и переносим его на новый сервер. Если старый сервер слишком медленный, то можно поступить следующим образом:
- Подключаемся из Гедымина под Администратором и отключаем всех пользователей.
- Чтобы пользователи не подключились в момент копирования файла базы данных, останавливаем службу Firebird 2.5.
- Копируем файл базы данных на новый сервер.
- На новом сервер воспользуемся переносимой локальной версией Гедымин: Разработчик (скачать можно по этой ссылке).
- Подключимся к скопированному файлу с помощью встроенного сервера. Для этого при указании пути к базе данных поле сервер не заполняем.
- Создадим бэкап базы данных.
4. Обновление сервера
Все действия должны выполняться на сервере базы данных. Его имя находится в параметре (3). Ниже представлена последовательность действий для операционной системы Windows и ручного обновления сервера без использования автоматического инстолятора:
- Открываем командную строку (Пуск - Выполнить - cmd).
- Переходим в подкаталог BIN сервера. В зависимости от типа используемого сервера это может быть c:\program files\yaffil\bin, или c:\program files\firebird\bin. Команды:
- c:
- cd \program files
- cd firebird
- cd bin
- cd ..
- cd ..
- Стабильная версия 2.5.0: для Windows 32bit, для Windows 64bit
- Сборка с последними изменениями (snapshot): Windows32 и Windows64
- Для установки супер сервера: instsvc install -s -a
- Для установки сервера классической архитектуры: instsvc install -с -a
5. Настройка databases.conf и службы WINS
- В конфигурации WINS меняем для алиаса db_server адрес на 192.168.0.23
- В папке сервера Firebird 3 создаем файла databases.conf и прописываем в нем:
Практическое применение
Основанная на nbackup инкрементная схема резервирования может выглядеть следующим образом:
Каждый месяц создается резервная копия всей базы данных (уровня 0);
Каждую неделю делается инкрементная резервная копия уровня 1;
Каждые сутки создается инкрементная резервная копия уровня 2;
Каждый час создается инкрементная резервная копия уровня 3.
Поскольку все резервные копии сохраняются, Вы сможете восстановить базу данных в любое состояние с точностью до часа. При каждом восстановлении используется максиум до четырех резервных файлов. Разумеется, Вам необходимо так планировать процесс создания резервных копий, что наибольшие из них (требующие больше времени) создаются во время наименьшей нагрузки на СУБД со стороны пользователей. В указанной схеме уровни 0 и 1 могут создаваться по выходным, а уровень 2 - в ночное время.
Если Вы не хотите хранить все созданные резервные копии, Вы можете спланировать схему удаления ненужных копий:
Резервный копии уровня 3 удаляются после 8 дней хранения с момента создания;
Резервные копии уровня 2 - после месяца;
Резервные копии уровня 1 - после полугода;
Резервные копии уровня 0 (всей базы данных) - после двух лет, но первую резервную копию всей базы данных каждого года нужно сохранить.
Конечно, приведенные схемы являются лишь примером. Что будет подходящим в конкретном случае, зависит от приложения, размера базы данных, активности пользователей и т.д.
Инкрементные резервные копии
Создание инкрементных резервных копий
Для создания инкрементной (« дифференциальной ») резервной копии необходимо указать уровень резервной копии больше 0. Инкрементная резервная копия уровня N содержит изменения базы данных с момента создания последней резервной копии уровня N-1 .
Через день после создания резервной копии всей базы данных (уровня 0) Вы создаете резервную копию уровня 1:
Эта резервная копия будет содержать только изменения базы данных за последний день.
Через день Вы вновь решили сделать резервную копию уровня 1:
Эта копия будет содержать изменения за последние два дня, то есть с момента создания резервной копии всей базы данных, а не только с момента создания предыдущей инкрементной копии уровня 1.
Через пару часов Вы создаете резервную копию уровня 2:
Эта резервная копия будет содержать изменения только с момента создания последней резервной копии уровня 1, то есть только за последние несколько часов.
Резервная копия всей базы данных
Содание резервной копии всей базы данных
Для создания резервной копии всей базы данных используйте следующий синтаксис командной строки (перенос на следующую строку сделан исключительно из эстетических соображений):
Параметр -B означает создание резервной копии. Уровень резервной копии 0 означает создание резервной копии всей базы данных. Уровни резервных копий больше 0 используются для создания инкрементных резервных копий; это будет рассмотрено далее.
Вместо имени файла базы данных Вы можете указать псевдоним (alias, из файла aliases.conf ).
Параметры -U (user, имя пользователя) и -P (password, пароль) могут быть опущены (не указываться):
если установлены переменные окружения ISC_USER и ISC_PASSWORD .
Для понятности и краткости эти параметры не указаны в приводимых примерах.
Все параметры ( -B , -U и -P ) можно указывать в произвольном порядке. Естественно, за каждым параметром должен(ны) следовать его аргумент(ы). В случае с параметром -B есть три аргумента: уровень резервной копии, база данных и файл резервной копии - в этом порядке!
Если параметр -B указан последним, Вы можете не указывать имя файла резервной копии. В этом случае, nbackup построит имя файла на основе имени базы данных, уровне резервной копии и текущем дате и времени. Это может привести к коллизии имен файлов (и неудавшемуся резервному копированию), если две команды резервирования одного уровня вызываются в одну и ту же минуту.
3. Создание архивной копии gedemin.exe
Делаем архивную копию рабочего модуля gedemin.exe. Он может понадобиться нам при откате к старой версии сервера (см. ниже).
Читать ли дальше?
Сейчас Вы знаете все, что нужно, для того, чтобы создавать резервные копии базы данных и производить восстановление базы данных из резервных копий с помощью nbackup . Если Вы хотите использовать другие утилиты для создания резервных копий баз данных Firebird, то читайте следующие разделы.
Если у Вас нет желания вникать в тонкости, удачи Вам в обычной работе с nbackup !
Данная инструкция предназначена для случая, когда на предприятии большое количество рабочих мест и файлы gedemin.exe находятся непосредственно на рабочих местах. Если gedemin.exe вызывается из общей папки и там же находится файл databases.ini, то конфигурирование службы WINS не имеет большого смысла.
Все клиенты подключаются по имени сервера и пути к базе данных. Строка подключения:
Надо перенести базу данных на новый сервер в локальной сети предприятия:
8. Запуск программы
Отмена сделанных изменений и возврат к прежней версии сервера осуществляются следующим образом:
sysdba » 12 ноя 2013, 16:07
mos » 12 ноя 2013, 17:04
passka » 13 ноя 2013, 09:58
Для наглядности: Сервер, к нему подключаются штук 10 клиентов. Установлен второй (Б) сервер с нуля, на него нужно перенести программу (базу) с первого сервера (А). С сайта скачен EXEшник проги, и установлен FB. gudf.dll установлен. На новом сервере Gedemin запускается без проблем и подключается к базе, локально. При сетевом подключении, к новому серверу выдаёт ошибку; Не возможно получить доступ к серверу. Unable to complete network request to host ". " Failed to locate host machine. И указывает возможные причины, которые связаны с невозможностью достучатся до сервера.
Доступ на сервере полностью расшарен, при запуске без проблем выбираешь сетевую базу, но при подключении ошибка (см. выше)
Старый серве 32, Новый 64
Порты добавлены (3050)sysdba » 13 ноя 2013, 11:23
Сервер запущен как служба? В таск менеджере виден? Gudf.dll 64 bit? Как указано имя сервера при подключении? Подключаться через имя localhost пробовали?
passka » 13 ноя 2013, 12:22
В диспетчере висит только FireB. Gudf.dll не видно. Имя сервера при подключении - имя компьютера с базой (это?) Фаил Gudf.dll 64 располагаться в подкаталоге UDF основной папки сервера Firebird. Подключатся через имя localhost - это указывать в выборе списков БД как имя сервера?
passka » 13 ноя 2013, 16:28
passka писал(а): В диспетчере висит только FireB. Gudf.dll не видно. Имя сервера при подключении - имя компьютера с базой (это?) Фаил Gudf.dll 64 располагаться в подкаталоге UDF основной папки сервера Firebird. Подключатся через имя localhost - это указывать в выборе списков БД как имя сервера?
Напишите пожалуйста какие действия вообще нужно предпринять, для переноса базы на другой компьютер. Второй день читаю мануалы по программе и всё больше кажется всё размытым((
Есть чистый компьютер под win 2003. что мы делаем - копируем папку с EXE Gedemin, устанавливаем FireB, пропишем порт в брандмауэре. какие ещё действия\настройки нужно провести? Какие службы должны быть запущены на компьютере, как их запустить? Распишите пожалуйста. Уверен не один новичок gedemina ещё заглянет в эту ветку!mos » 13 ноя 2013, 17:09
я бы сделал так:
на сервере А
- делаем архивную копию БД: База данных/Архивное копирование -- Создать
- копируем получившуюся архивную копию на сервер Бalex » 13 ноя 2013, 17:13
alex » 13 ноя 2013, 17:44
passka писал(а): Подключатся через имя localhost - это указывать в выборе списков БД как имя сервера?
sysdba » 13 ноя 2013, 19:12
Процедура переноса бд проста как грабли:
1) на новом сервере ставим фб (я лично всегда вручную архив с новейшей версией из инета распаковываю и запускаю instsvc. Но, если вам нравится инстолятором ставить, -- ставьте инстолятором).
2) подкидываем gudf.dll нужной разрядности.
3) берем из инета новейшую версию гедымина
4) бэкапим бд на старом сервере и восстанавливаем на новом
5) подключаемся гедымином.В вашем случае, такое впечатление, что сервер фб не запущен.
Попробуйте пошагово еще раз все аккуратно сделать.
passka » 14 ноя 2013, 13:44
sysdba писал(а): Процедура переноса бд проста как грабли:
1) на новом сервере ставим фб (я лично всегда вручную архив с новейшей версией из инета распаковываю и запускаю instsvc. Но, если вам нравится инстолятором ставить, -- ставьте инстолятором).
2) подкидываем gudf.dll нужной разрядности.
3) берем из инета новейшую версию гедымина
4) бэкапим бд на старом сервере и восстанавливаем на новом
5) подключаемся гедымином.В вашем случае, такое впечатление, что сервер фб не запущен.
Попробуйте пошагово еще раз все аккуратно сделать.
Да я сам понимаю что ничего сложного быть не должно. Полтергейст какой то.
1. Установил ФБ 64х (64х винда)
2. подкинул gudf.dll 64х
3. гедемин скачан
4. Взял свежий Архив (резервный) и восстановился с него
5. Запустил гедемина -он запустился.
Ок. По сети он всё равно не подключает указывая на ошибку "Не возможно получить доступ к серверу"
1. Не верно указано имя сервера или номер порта
2. Сервер выключен или не подсоединён к сети
3. На сервере не установлена СУБД Firebird
4. Сетевое соединение сервера заблокировано файрволлом
Что имеем: 1 - указано верно, 2 - За спиной гудит, равно как в сети, 3 - СУБД ФБ установлена, 4 - вообще выключен.sysdba » 14 ноя 2013, 14:34
Для подключения гедымину нужна учетная запись startuser с таким же паролем. После чистой установки сервера он пытается ее создать.
Попробуйте сначала отложить гедымин в сторону и подключиться к бд утилитой isql или ibexpert. То, что вы описываете не проблема гедымина, а проблема сети, файрвола, фб и т.п.
Киньте как с вами связаться. Подключусь удаленно, помогу настроить.
passka » 14 ноя 2013, 14:40
sysdba писал(а): Для подключения гедымину нужна учетная запись startuser с таким же паролем. После чистой установки сервера он пытается ее создать.
Попробуйте сначала отложить гедымин в сторону и подключиться к бд утилитой isql или ibexpert. То, что вы описываете не проблема гедымина, а проблема сети, файрвола, фб и т.п.
Киньте как с вами связаться. Подключусь удаленно, помогу настроить.
sysdba » 15 ноя 2013, 10:32
passka » 18 ноя 2013, 15:01
sysdba писал(а): компьютер не был виден из сети по имени. поменяли на IP в строке подключения к БД и все заработало.
Проблема решена.
Выдаваемая ошибка при подключении к сетевой базе ссылалась на то что она не видит удалённый ПК к которому подключаемся, приводила возможные причины: Не установлен ФБ, не верно прописан адрес, ПК не всети.
Решение: После стандартной процедуры установки ФБ, Gedemin, копирования файла gudf.dll, запускаем программу которая естественно просит указать путь к базе данных. Указываем в соответствующем меню. В моём случае этот путь выглядит так: \\Srvgedemin\Bases\VCDV.FDB Смутил тот факт что меню выбора БД имеет место для вписывания Сервер\Порт, и параллельно, рядом, указывает фактически тот же путь (см. выше путь). Оказывается, включаем логику и стараемся не смотреть, что предлагает программа выбора БД, а именно указываем в меню Сервер\Порт Имя сервера, а в строке путь к базе ставим его как локальный, то есть не \\Srvgedemin\Bases\VCDV.FDB а C:\Bases\VCDV.FBD Разработчикам стоит обратить внимание на этот момент.Репутация: нет
Всего: нетВ общем такая проблема, нужно перенести базу данных с сервера версии 2,0 на версию 2,5
Сделал бэкап имя_файла.fbk на рабоче сервере, из бэкапов восстановился локально на другой машине, версия 2,1, при восстановлении никаких проблем не возникло.(Ibexpert)
Остановил работу сервера скопировал себе файлы баз данных имя_базы.fdb
Перенес на другую машину(версия 2,5) подключился утилитой isql к файлу базы, сделал input "c:\Program Files\Firebird\Firebird_2_5\misc\upgrade\metadata\metadata_charset_create.sql"
По инструкции начал проходить по базе уже select * from rdb$check_metadataСкрипт на каком то этапе выдал ошибку
rdb$procedures rdb$procedure_source get_plan_details
statement faled, sqlstate=42000
malformed string
-at procedure rdb$fixb_metadata line 86 col 17
at procedute rdb$check_metadata line 14 col 9Последним он мне указывает процедуру где была ошибка? я правильно понял?
Я вообще правильно базу переношу.
Потому как я понял при неправильном переносе очень велика вероятность повреждения базы.
Если последовательность неверна прошу написать пряморукую последовательность.
Хотелось бы восстановить базу без потерь.Репутация: 20
Всего: 329Цитата(Radekk @ 22.10.2013, 14:56 ) Я вообще правильно базу переношу. нет
зачем на 2.1?
сразу под 2.5 восстанавливайДобавлено @ 15:44
На ПК, где установлен Firebird 2.5 сделай следующее:
1. Разверни (распакуй) встраиваемый сервер Firebird 2.0 в какой-нибудь папке.
2. В неё же скопируй файл базы BASE.FDB.
3. В этой же папке должно быть 2 файла: backup.bat и restore.bat
4. Вот содержимое первого:
gbak.exe -b -v -user sysdba -password masterkey BASE.FDB BASE.FBK
5. Вот содержимое второго:
"c:\program files (x86)\firebird\firebird_2_5\bin\gbak.exe" -c -v -rep -FIX_FSS_METADATA win1251 -user sysdba -password masterkey BASE.FBK BASE.FDB
6. Запусти вначале backup.bat - будет выполнено резервное копирование сервером Firebird 2.0.
7. Потом запусти restore.bat - будет выполнено восстановление сервером Firebird 2.5
Всё, теперь файл BASE.FDB у тебя должен нормально работать под FB 2.5Обязательно прочитай внимательно про FIX_FSS_METADATA, т.к. там нужно кодировку правильную указывать. У тебя база в какой кодировке?
Репутация: нет
Всего: нетЦитата(Akella @ 22.10.2013, 15:38) 1. Разверни (распакуй) встраиваемый сервер Firebird 2.0 в какой-нибудь папке. Репутация: 3
Всего: 453Цитата(Akella @ 22.10.2013, 16:38 ) 5. Вот содержимое второго:
"c:\program files (x86)\firebird\firebird_2_5\bin\gbak.exe" -c -v -rep -FIX_FSS_METADATA win1251 -user sysdba -password masterkey BASE.FBK BASE.FDB
Маленькая поправка. В качестве пользователя (а соответственно и пароля к нему) следует указать учётную запись, которая должна быть владельцем (owner) базы данных.
Да, в большинстве случаев разработчики на это не заморачиваются, и SYSDBA прокатывает. Но если заморочились, то без соблюдения этой мелочи большие проблемы неминуемы. Причём в далёком будущем, когда лечение будет стоить гораздо более дофига времени и ресурсов.О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.
Репутация: 20
Всего: 329Цитата(Radekk @ 22.10.2013, 16:26 ) это Firebird Embedded - предназначен для встраиваемых баз данных
я правильно понял.Репутация: нет
Всего: неттак по пункту
4. Вот содержимое первого:
gbak.exe -b -v -user sysdba -password masterkey BASE.FDB BASE.FBKбатник запускает командную строку но база не бекапится мне надо как то переименовывать файлик fbembed.dll.
восстановление прошло успешно одна база вроде как заработала у второй скрипт запускается и вылетает.
я подозреваю проблема уже в кодировках
посмотрел по таблицам второй базы почти везде указано unicode_fss
получается для второго файла вместо вин1251 указывать юникод_фсс.
есть ли возможность как то узнать о кодировке самой базы данных?
базы создавались еще во времена когда я здесь не работалеще вопрос можно при восстановлении привести базу просто к юникоду.
очень полезно было бы, потому что в базах хранятся данные на нескольких языках и уже в программном коде моих приложений приходится делать костыли, да и плюс я где то читал что лучше поиск по базе организован с диокритикой, я уже этот вопрос на форуме поднимал как то.
в общем чтобы базы можно было перетащить на новую версию сервера с новыми плюшкамиРепутация: 20
Всего: 329Цитата(Radekk @ 23.10.2013, 11:35 ) батник запускает командную строку но база не бекапится запомни раз и на всю жизнь: ВСЕГДА приводи полный, правильный, оригинальный текст ошибки
Добавлено через 18 секунд
и ооочень желательно не картинкой, а текстомДобавлено через 2 минуты и 16 секунд
Цитата(Radekk @ 23.10.2013, 11:35 ) мне надо как то переименовывать файлик fbembed.dll. Попробуй переименовать в fbclient.dll
Добавлено через 2 минуты и 56 секунд
Цитата(Radekk @ 23.10.2013, 11:35 ) восстановление прошло успешно что-то не понял я тебя
из чего же ты восстанавливаешь, если резервная копия не была созданаДобавлено через 5 минут и 50 секунд
Цитата(Radekk @ 23.10.2013, 11:35 ) осмотрел по таблицам второй базы почти везде указано unicode_fss
получается для второго файла вместо вин1251 указывать юникод_фсс.Добавлено через 8 минут и 15 секунд
Цитата(Radekk @ 23.10.2013, 11:35 ) батник запускает командную строку но база не бекапится мне надо как то переименовывать файлик fbembed.dll. Цитата
2. Восстанавливаем под 2.5.1 c двумя дополнительными параметрамиРепутация: нет
Всего: нетЦитата(Radekk @ 23.10.2013, 11:35 ) батник запускает командную строку но база не бекапится запомни раз и на всю жизнь: ВСЕГДА приводи полный, правильный, оригинальный текст ошибки
Добавлено @ 21:23
и ооочень желательно не картинкой, а текстомДобавлено @ 21:25
Цитата(Radekk @ 23.10.2013, 11:35 ) мне надо как то переименовывать файлик fbembed.dll. Попробуй переименовать в fbclient.dll
Добавлено @ 21:26
Цитата(Radekk @ 23.10.2013, 11:35 ) восстановление прошло успешно Батник запускается, появляется окно командной строки и тут же закрывается, ошибку выглядеть не успел.
Если бы я видел ошибку, неужто я бы ее не расписал тут, зная что это будет очень нужно.Восстанавливаю из .fbk файлов, Ibexpert-ом сделал бэкапы на сервере, с переносом файлов был только геморрой, но это дело третье.
"C:\Program Files\Firebird\Firebird_2_5\bin\gbak.exe" -c -v -rep -FIX_FSS_METADATA win1251 --replace win1251 utf-8 -user sysdba -password masterkey USERSrad.fbk users_local.fdb
я правильно понял?
Остальное сейчас перечитаю. Спасибо.
Репутация: 20
Всего: 329Цитата(Radekk @ 24.10.2013, 09:57 ) Батник запускается, появляется окно командной строки и тут же закрывается, ошибку выглядеть не успел.
позови хоть кого-нибудь, кто умеет работать с командной строкой
например, программиста позови, или сисадминаРепутация: нет
Всего: нетЦитата(Radekk @ 24.10.2013, 09:57 ) Батник запускается, появляется окно командной строки и тут же закрывается, ошибку выглядеть не успел. Шутку оценил, смешно.
Понял в чем суть ошибки, разобрался, бэкапы работают
(мне чет взбрендило в башку что утилита просто запрятана где-то, стопорил батник, чтобы не закрывалась строка ошибок не было, уже когда зашел из строки в папку и попытался запустить бэкап, по ошибкам понял что эпично натупил).
эта ссылка была очень полезной
-скопировать fbembed.dll от 2.0 как fbclient.dll
-скопировать gbak от 2.0спасибо за помощь и терпение.
Все как обычно выливается в RTFM, а я чет поторопился и был невнимателен.правда при бэкапе один раз потерял триггеры(когда бэкапился из IBexpert) при работе из командной строки все прошло хорошо, базы восстановил на 2.5
Database header page information:
Flags 0
checsum 12345
page size 8192
ODS version 11.2
.Вроде все нормально.
Еще раз спасибо.
Репутация: 20
Всего: 329Цитата(Radekk @ 25.10.2013, 08:25 ) Шутку оценил, смешно. Репутация: нет
Всего: нетЕсть еще вопрос
ALTER CHARACTER SET charset SET DEFAULT COLLATION collation
пытаюсь применить к базе данных через isql утилиту и ничего не происходит, ошибок не выдает, однако база остается в прежней кодировке поля тоже.
или в фениксе нельзя сменить тип кодировки и сравнение для созданных полей.Репутация: 20
Всего: 329Цитата(Radekk @ 27.12.2013, 15:04 ) ALTER CHARACTER SET charset SET DEFAULT COLLATION collation Цитата Description: With ALTER CHARACTER SET, the default collation of a character set can be changed. This will affect all future usage of the character set, except where overridden by an explicit COLLATE clause. The collation of existing domains, columns and PSQL variables will not be changed. Репутация: нет
Всего: нетДа ок я понял что будет работать только с полями которые я добавлю после, но почему из ibexpert меняется и кодировка и сравнение для созданных полей?
Или он каким-то более хитрым способом это делает?Репутация: нет
Всего: нетв общем сделал чуть по-другому.
перенес практически вручную метадату(процедуры,вьюшки и таблицы), а вот с данными нашел канал на ютубе от ибэкспертов, там очень быстро и четко все расписано. переносил ibeblock скриптами.пример, может будет кому-то полезно.
Код
execute ibeblock
as
begin
try
DFrom = ibec_CreateConnection(__ctInterBase,
'DBName="hostname:C:\folder\database.fdb";
ClientLib=gds32.dll;
User=SYSDBA; Password=masterkey; Names=NONE; SqlDialect=3;');
DTo = ibec_CreateConnection(__ctInterBase,
/*"LOCALHOST/3050" - стоит несколько серверов, а 3050 - порт на котором висит нужная мне база(3050 порт по умолчанию, для фаерберда, на 3021 у меня стоит 2,1 сервер)*/
'DBName="LOCALHOST/3050:C:\Firebird\databases_2_5\database.fdb";
ClientLib=gds32.dll;
User=SYSDBA; Password=masterkey; Names=UTF8; SqlDialect=3;');все скриптики сохранял в файлики с расширением sql и сделал батничек чтобы можно было переносить все сразу
в батнике"C:\Program Files (x86)\HK-Software\IBExpert\ibescript.exe" Название_файла.sql
"C:\Program Files (x86)\HK-Software\IBExpert\ibescript.exe" Название_файла.sql
"C:\Program Files (x86)\HK-Software\IBExpert\ibescript.exe" Название_файла.sql
"C:\Program Files (x86)\HK-Software\IBExpert\ibescript.exe" Название_файла.sql
порядок сделал исходя от ключей и зависимостей таблиц. вроде разобрался, просто был опыт работы только с mysql и чуток с mssql.
возможно можно было и проще, но я не мытьем так катаньем, все работает.
спасибо за помощь и понимание.Обязательно указание:
1. Версию InterBase (Firebird, Yaffil)
2. Способа доступа (ADO, BDE, IBX и т.д.)
- КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
- КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
- Действия модераторов можно обсудить здесь
- С просьбами о написании курсовой, реферата и т.п. обращаться сюда
- FAQ раздела лежит здесь!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) 0 Пользователей: « Предыдущая тема | Firebird, Interbase | Следующая тема »
[ Время генерации скрипта: 0.4299 ] [ Использовано запросов: 21 ] [ GZIP включён ]
4. Восстановление базы данных из архива
Восстанавливаем базу данных на новом сервере из файла бэкапа с помощью Firebird 3. Для этого можно воспользоваться локальной копией Гедымина из предыдущего шага, только теперь при указании пути к файлу бд пропишем имя сервера. Не забываем про количество страниц при распаковке файла базы данных!
2. Создание архивной копии базы данных
Внимание
Не используйте nbackup для многофайловых баз данных. Это может привести к повреждениям базы данных и потере данных - nbackup не будет возражать против выполнения действий над многофайловой базой данных.
Несколько слов о внутренних механизмах
На заметку: то, что здесь будет описано, не является необходимыми знаниями для использования nbackup . Это описание дает грубое представление о том, что происходит при работе программы nbackup с параметром -B :
Прежде всего, основной файл базы данных блокируется установкой внутреннего флага состояния. С этого момента абсолютно все изменения в базе данных записываются во временный файл, называемый файлом разницы (difference file) или файлом дельты.
После этого создается резервная копия. Это не обычная копия файла базы данных - восстановление из полученной копии необходимо производить также при помощи nbackup .
По завершении резервирования содержимое файла дельты объединяется с основным файлом базы данных. После этого база данных разблокируется (флаг возвращается в « нормальное » состояние) и файл дельты удаляется.
Функциональность шагов 1 и 3 достигается введением двух новых операторов SQL: ALTER DATABASE BEGIN BACKUP и ALTER DATABASE END BACKUP . Вразрез с указанным в операторах, они не ведут к созданию резервной копии, они лишь создают условия, с которыми можно безопасно создать резервную копию основного файла базы данных. Чтобы прояснить: Вам не нужно употреблять указанные операторы самостоятельно и явно; nbackup сделает это за Вас в нужное время.
Восстановление из резервной копии всего файла базы данных
Резервная копия всей базы данных восстанавливается следующим образом (перенос на следующую строку сделан исключительно из эстетических соображений):
Вам не нужно указывать уровень при восстановлении.
При восстановлении параметр -R должен быть указан последним по причинам, которые будут описаны позже.
Здесь также Вы можете не указывать имя файла резервной копии. Если Вы его опустите, nbackup спросит Вас об этом позже. Однако на текущий момент разработки СУБД Firebird 2 (стадия alpha 3) это приведет к ошибке (по крайней мере под Windows) и неудавшемуся восстановлению.
1. Подготовительный этап
- На сервере контроллера домена открываем конфигурирование службы имен [WINS] и создаем алиас db_server с адресом 192.168.0.1 (это адрес существующего, старого сервера).
- На старом сервере базы данных, в папке Firebird 2.5, создаем файл aliases.conf следующего содержания:
- На рабочих местах меняем строку подключения к базе данных. Новая строка:
7. Обновление модуля gedemin.exe
Резервная копия всей базы данных
Содание резервной копии всей базы данных
Для создания резервной копии всей базы данных используйте следующий синтаксис командной строки (перенос на следующую строку сделан исключительно из эстетических соображений):
Параметр -B означает создание резервной копии. Уровень резервной копии 0 означает создание резервной копии всей базы данных. Уровни резервных копий больше 0 используются для создания инкрементных резервных копий; это будет рассмотрено далее.
Вместо имени файла базы данных Вы можете указать псевдоним (alias, из файла aliases.conf ).
Параметры -U (user, имя пользователя) и -P (password, пароль) могут быть опущены (не указываться):
если установлены переменные окружения ISC_USER и ISC_PASSWORD .
Для понятности и краткости эти параметры не указаны в приводимых примерах.
Все параметры ( -B , -U и -P ) можно указывать в произвольном порядке. Естественно, за каждым параметром должен(ны) следовать его аргумент(ы). В случае с параметром -B есть три аргумента: уровень резервной копии, база данных и файл резервной копии - в этом порядке!
Если параметр -B указан последним, Вы можете не указывать имя файла резервной копии. В этом случае, nbackup построит имя файла на основе имени базы данных, уровне резервной копии и текущем дате и времени. Это может привести к коллизии имен файлов (и неудавшемуся резервному копированию), если две команды резервирования одного уровня вызываются в одну и ту же минуту.
Внимание
Еще раз: не используйте nbackup для многофайловых баз данных.
Восстановление из инкрементных резервных копий
При восстановлении базы данных из инкрементных резерных копий Вы должны обеспечить наличие полной цепочки инкрементных резервных копий, начиная с уровня 0 и до уровня, которым Вы хотите завершить. База данных всегда строиться с самой первой резервной копии уровня 0, шаг за шагом.
Таким образом, восстановление для предыдущего примера до уровня 2 будет выглядеть так:
Перенос на новую строку сделан здесь исключительно из эстетических соображений - Вам необходимо вводить команду в командной строке полностью, и нажать Enter только в конце.
Так как программа не может знать заранее количество указанных после параметра -R имен файлов (уровень при восстановлении не указывается), nbackup считает все аргументы после параметра -R именами файлов с резервными копиями. По этой причине никакие другие параметры ( -U или -P ) не могут следовать за списком файлов параметра -R .
Не существует формального ограничения на уровень резервной копии, однако на практике редко имеет смысл создавать копии уровней больше 3 или 4.
Несвязанные ссылки
Что произойдет, если Вы нечаяно пропустите файл с инкрементной резервной копией в цепочке восстановления, или укажете набор файлов, которые не являются одной цепочкой? Представьте, что Вы по ошибке указали inventory_2-Mar-2006.nbk вместо inventory_3-Mar-2006.nbk в вышеприведенном примере. Обе резервные копии являются копиями уровня 1, поэтому в обоих случаях у Вас получится замечательная последовательность уровней « 0, 1, 2 ». Но файл уровня 2 является инкрементной резервной копией для инкрементной резервной копии уровня 1 от 3 марта, а не от 2 марта.
6. Обновление gedemin.exe
На рабочих местах или в общей папке, откуда запускается Гедымин в локальной сети, обновляем gedemin.exe и сопутствующие ему файлы. Всегда актуальный архив можно взять по этой ссылке.
и перейдем на вкладку Файлы. Нужные нам параметры помечены на рисунке соответствующими номерами:
Параметры по номерам
- Расположение и имя файла библиотеки доступа (в зависимости от версии и типа сервера файл может называться gds32.dll, fbclient.dll или fbembed.dll)
- Версия сервера Firebird/Yaffil
- Расположение сервера Firebird/Yaffil или информация о встроенном сервере
- Полный путь к файлу базы данных
- Полный путь к выполняемому модулю gedemin.exe
В дальнейшем по тексту мы будем ссылаться на номера соответствующих параметров: (1), (2), (3). .
Замечание
Все примечания, сделанные по поводу создания резервной копии всей базы данных, применимы и к созданию инкрементных резервных копий.
2. Установка сервера Firsbird 3
На новом компьютере устанавливаем сервер Firebird 3 и настраиваем его параметры.
Читайте также: