Перейти к содержимому

Firebird где хранятся базы

  • автор:

Firebird где хранятся базы

Далее в таблице приводится принятое по умолчанию расположение компонентов на диске для Windows и Linux систем.

При основательной переработке кода, начатой в версии 1.5, были удалены жесткие привязки, используемые в InterBase®, а также переименованы многие компоненты. В результате Firebird 1.5 позволяет (потенциально) одновременно с собой присутствовать запущенному серверу InterBase®, обеспечивая возможность обоим серверами не слушать один и тот же порт TCP/IP. Если Вам необходима такая возможность, обратитесь к разделу Configuring the port service в Release Notes, прилагаемых к Firebird (см. директорию doc ).

Таблица 2. Компоненты Firebird 1.5 и их расположение

Расположение по умолчанию

32-bit and 64-bit Windows

(Windows 95, 98, ME, NT, 2000, XP, . )

Директория, в которую устанавливается пакет

(далее обозначается как )

fbserver.exe (SS) or fb_inet_server.exe (CS)

Утилиты командной строки

gbak.exe , gfix.exe , gstat.exe , etc.

Образец базы данных

Библиотеки пользовательских функций (UDF)

ib_udf.dll и fbudf.dll

(для поддержки старых приложений, опциально, присутствует gds32.dll )

(копия, опционально, располагается в системной директории Windows– см. замечание ниже)

Linux и, возможно, другие UNIX дистрибутивы

Директория, в которую устанавливается пакет

(далее обозначается как )

fbserver (SS) or fb_inet_server (CS)

Утилиты командной строки

gbak , gfix , gstat , etc.

Firebird где хранятся базы

СУБД MS SQL 6.5 использует устройства (devices), которые могут представлять собой файлы или « чистые » разделы (raw partitions, разделы без файловой системы), чтобы работать с данными. Это ведет к сложным для поддержки системам. СУБД MS SQL 7 и MS SQL 2000 используют обычные файлы вместо устройств. Для каждой базы данных создаются, как минимум, два файла: один, собственно, для хранения данных, и второй — для сохранения журнала выполненных транзакций.

СУБД Firebird не использует отдельный журнал для сохранения выполненных транзакций, и поэтому использует единственный файл для хранения всех данных.

Оператор CREATE DATABASE (« создать базу данных ») в СУБД Firebird проще, чем аналогичный оператор в СУБД MS SQL. Обратитесь к справочнику SQL для подробного описания всех возможностей.

Существенное различие в модели управления файлами — это использование СУБД групп файлов (filegroups) для деления базы данных на несколько наборов файлов по определенному принципу. СУБД Firebird так же может работать с разбитой на несколько файлов базой данных, но модель работы с файлами более проста (в смысле принципа, из которого производится разбиение на файлы — прим. перев.).

Дополнительная возможность, предоставляемая СУБД Firebird — это использование теневых файлов (shadow files). Теневые файлы являются немедленной копией исходной базы данных. Обычно они используются для быстрого получения актуальной копии. В СУБД MS SQL нет такой функции, хотя СУБД MS SQL 2000 имеет похожую функцию при использовании журналов, перемещенных между серверами, и репликации.

Администрирование пользователей

СУБД MS SQL 6.5 предоставляет два объекта для управления: « логины » и « пользователи ». « Логин » определяет комбинацию имени пользователя и пароля для досутпа к серверу базы данных; « пользователь » определяет права доступа для каждой базы данных. « Логины » отображаются на « пользователей » в базе данных.

В СУБД MS SQL 7 добавлен новый объект управления группами пользователей — « роли ». « Роль » является хранилищем прав. Некоторые « роли » являются предопределенными, например, « оператор создания копии базы данных » или « администратор базы данных ».

СУБД Firebird предоставляет похожую модель, но не включает в нее « логины ». Пользователи сообщают серверу свое имя, пароль и « роль », с правами которой они хотят работать. Существует одна общая база данных для всего сервера баз данных, в которой хранится информация обо всех пользователях сервера (их имена и пароли); информация о « ролях » и предоставленных каждому пользователю правах хранится в каждой конкретной базе данных. (Исходный документ имеет здесь неточность: там сказано, что в базе данных безопасности/пользователей хранится так же информация о « ролях » и разрешениях/запретах для каждого пользователя. Так же версия 2.0 СУБД Firebird вносит много изменений в модель управления пользователями. — прим. перев.)

В обоих СУБД считается хорошей практикой получать доступ к ресурсам через хранимые процедуры (stored procedures), и предоставлять доступ к данным только этим хранимым процедурам. (Это утверждение спорно и не может слепо применяться во всех случаях, по крайней мере, относительно СУБД Firebird . — прим. перев.)

Операции резервного копирования и восстановления

СУБД Firebird использует более простую модель создания резервных копий баз данных и восстановления из них по сравнению с СУБД MS SQL, хотя в качестве жертвы здесь принесена гибкость. Резервное копирование может выполняться с помощью консольных (из командной строки) и графических утилит, в любом случае производится резервное копирование всей базы данных. Операция восстановления также восстанавливает всю базу данных. Нет возможности создания резервной копии только изменений, произошедших с момента создания последней резервной копии, или восстановления изолированного набора транзакций. (В СУБД Firebird 2.0 появилась возможность создания инкрементных резервных копий. — прим. перев.)

Обратите внимание, что при создании резервной копии базы данных СУБД Firebird существует важный параметр, определяющий формат создаваемой резервной копии: платформозависимый или платформонезависимый (переносимый). Создание резервной копии в переносимом формате позволяет администратору базы данных создать ее резервную копию в одной операционной системе, а затем восстановить базу данных из этой копии в другой операционной системе. Обычно такая возможность используется, например, при разработке приложения на Windows , а затем переносе базы данных на более мощный сервер Linux . (Так же, это рекомендуемый способ переноса баз данных с одного компьютера на другой даже для одной операционной системы: простое копирование файла базы данных не рекомендуется. — прим. перев.)

Firebird Documentation Index → Переход с MS SQL на Firebird → Администрирование

Firebird где хранятся базы

В директории examples Вашей инсталляции Firebird лежит образец базы данных — employee.fdb , которую можно использовать « для пробы пера ».

Имя сервера и путь

Если Вы вдруг решили переместить образец базы данных на другой диск, убедитесь, что он физически подключен к компьютеру. Разделяемые (shared), присоединенные (mapped) диски или (на Unix) смонтированные (mounted) SMB (Samba) файловые системы не будут работать. Это правило касается любых создаваемых Вами баз данных.

При использовании TCP/IP строка подключения состоит из двух частей: имя сервера и путь к файлу. Формат строки имеет следующий вид:

  • Для Linux-серверов:

имя-сервера:/путь-к-файлу/имя-файла-базы-данных

Пример для Linux или другой Posix-системы с именем serverxyz :

serverxyz:/opt/interbase/examples/employee.fdb

имя-сервера:буква-диска:\путь-к-файлу\имя-файла-базы-данных

Пример для Windows:

serverxyz:C:\Program Files\Firebird\examples\employee.fdb

Оператор CONNECT

Для подключения к базе данных Firebird пользователь должен аутентифицироваться с использованием имени пользователя и правильного пароля. Кроме того, любому пользователю отличному от SYSDBA , root (Posix — системы), или Administrator (на Windows-системах, если Firebird запущен от имени этого пользователя) необходимо иметь разрешения на доступ к объектам внутри самой базы данных (так называемые объектные привилегии). Для простоты, рассмотрим процедуру аутентификации пользователя SYSDBA с использованием пароля masterkey .

Используем isql

Существует несколько способов подключения к базе данных с использованием утилиты isql . Один из них — это использование isql в интерактивном режиме. Перейдите в подкаталог bin директории, в которой установлена Ваша версия Firebird, и в командной строке наберите isql (для Linux: ./isql ) [↵ означает « нажать клавишу Enter »]:

C:\Program Files\Firebird\Firebird_1_5\bin>isql↵ Use CONNECT or CREATE DATABASE to specify a database SQL>CONNECT "C:\Program Files\Firebird\Firebird_1_5\examples\employee.fdb"↵ CON>user 'SYSDBA' password 'masterkey';↵

Важно

  • В isql каждое SQL-выражение должно завершаться точкой с запятой. Если строка не заканчивается точкой с запятой, и Вы нажимаете клавишу Enter , isql будет считать, что выражение будет продолжаться на следующей строке и сменит приглашение с SQL> на CON> . Это позволяет разбивать длинные выражения на несколько строк. Если Вы нажали клавишу Enter , забыв указать точку с запятой, просто наберите символ после приглашения и нажмите Enter ещё раз.
  • Если, используя Classic Server под Linux, не указать имя хоста, будет предпринята попытка организовать прямое локальное соединение. Что, в свою очередь, может закончиться неудачей в случае отсутствия у текущей учетной записи Linux необходимых прав доступа к файлу базы данных. В этом случае попробуйте подключиться к localhost : / . В этом случае файл будет открывать серверный процесс (который в Firebird 1.5 обычно работает от имени firebird ). С другой стороны, попытка сетевого соединения может закончиться неудачно, если пользователь создавал базу данных при локальном подключении и у сервера нет необходимых прав.
  • В случае использования Classic Server под Windows, Вы должны указывать имя хоста (это может быть localhost ) и полный путь, в противном случае подключиться не получиться.

Замечание

Несмотря на то, что в Firebird « нормальными » символами разделения строк являются одинарные кавычки, в примере, при указании пути к базе данных, использовались двойные кавычки. Это необходимо, так же как и в некоторых других утилитах командной строки, при указании путей, содержащих пробелы. Одинарные кавычки будут работать для путей, не содержащих пробелы.

Кавычки вокруг « SYSDBA » и « masterkey » необязательны. Также не обязательно заключать в кавычки путь к базе данных, не содержащий пробелов.

Далее isql сообщит о том, что Вы подключились:

DATABASE "C:\Program Files\Firebird\Firebird_1_5\examples\employee.fdb", User: sysdba SQL>

Теперь Вы можете продолжить эксперименты с базой employee.fdb . isql означает interactive SQL [utility] (интерактивный SQL). Вы можете использовать её для извлечения данных, получения метаинформации, создания объектов базы данных, запуска скриптов и многого другого.

Для того, чтобы вернуться в командную строку наберите

SQL>QUIT;↵

За дополнительной информацией об использовании isql обращайтесь к Using Firebird, глава 10: Interactive SQL Utility (isql).

Используем графические утилиты

Обычно, графические средства самостоятельно собирают строку соединения на основании информации, вводимой пользователем в отдельных полях — имя сервера, путь к базе данных, имя пользователя и пароль. Как их использовать должны быть понятно из информации, изложенной в предыдущем разделе.

Замечание

  • Существуют средства, в которых имя сервера + полный путь ожидаются в виде одной строки
  • Помните, что на Linux и других Posix-системах имена файлов и названия команд являются чувствительными к регистру

Создаем базу данных с помощью isql

Утилита isql позволяет создавать базы данных более, чем одним способом. Мы же рассмотрим простой способ создания базы данных в интерактивном режиме, хотя для серьезного использования Вам, скорее всего, потребуется научиться создавать и использовать скрипты. В руководстве Using Firebird имеется отдельная глава, посвященная этому вопросу.

Запускаем isql

Для создания базы данных с использованием утилиты isql в интерактивном режиме, в командной строке перейдите в директорию bin и наберите isql (Windows) или ./isql (Linux):

C:\Program Files\Firebird\Firebird_1_5\bin>isql↵ Use CONNECT or CREATE DATABASE to specify a database
Оператор CREATE DATABASE

Теперь Вы можете создать базу данных. Предположим, что Вы хотите создать базу данных test.fdb и сохранить её в папке data на диске D :

SQL>CREATE DATABASE 'D:\data\test.fdb' page_size 8192↵ CON>user 'SYSDBA' password 'masterkey';↵

Важно

  • В отличии от оператора CONNECT , в операторе CREATE DATABASE кавычки вокруг пути к файлу, имени пользователя и пароля являются обязательными .
  • Если Вы используете Classic Server под Linux и в пути не указываете имя хоста, будет произведена попытка создать файл базы данных с Вашей учетной записью в Linux в качестве владельца. Может быть это именно то, что Вы и хотите, а может и нет (подумайте о правах доступа, если Вы хотите, чтобы к базе данных мог подключаться кто-то еще). Если же в пути указать, например, localhost: , тогда создавать и влдаеть файлом будет серверный процесс (который в Firebird 1.5 обычно работает от имени firebird ).
  • В случае использования Classic Server под Windows, Вы должны указывать имя хоста (которое может быть localhost ) плюс полный путь к файлу, в противном случае процесс создания закончится неудачей.

Будет создана база данных и через некоторое время вновь появится приглашение SQL. Теперь Вы подключены к новой базе данных и можете создать какие-нибудь объекты в ней.

Чтобы убедиться, что там действительно база данных, выполните запрос:

SQL>SELECT * FROM RDB$RELATIONS;↵

На экран будет выдано большое количество данных! Этот запрос извлекает все строки из системной таблицы, в которой Firebird хранит метаданные для таблиц. « Пустая » база данных на самом деле не очень-то и пустая – она содержит базу данных, которая будет расти, наполняясь метаданными, по мере создания Вами новых объектов в ней.

Для возвращения в командную строку, наберите

SQL>QUIT;↵

За дополнительной информацией об isql обращайтесь к главе 10 Using Firebird: Interactive SQL Utility (isql).

Firebird SQL

Каждая систем управления базами данных имеет свои отличительные особенности в реализации SQL. По сравнению с любой другой СУБД, за возможным исключением « близкой родственницы » — InterBase®, Firebird наиболее строгим образом соответствует стандарту SQL. Разработчики, переходящие с других продуктов, соответствующих стандарту в меньшей степени, ошибочно воспринимают Firebird странным, притом, что многие мнимые « странности » на самом деле не являются таковыми.

Деление целых чисел

В соответствии со стандартом SQL, Firebird при вычислении частного от деления целого числа на целое округляет результат до ближайшего меньшего целого. В случае если Вы не были готовы, это может слегка шокировать Вас при получении результатов.

Например, следующее вычисление является корректным с точки зрения SQL:

Если Вы переходите с СУБД, в которой частное от деления целого на другое целое приводится к нецелому, Вам будет необходимо доработать подобные выражения и заменить тип делимого, делителя или обоих на число с плавающей или фиксированной точкой.

Например, предыдущий пример, для получения результата отличного от нуля, можно изменить следующим образом:

Firebird где хранятся базы

Для начала, nbackup.exe находится в подпапке bin папки, куда установлена СУБД Firebird. Например, типичным расположением является C:\Program Files\Firebird\Firebird_2_0\bin (Windows) или /opt/firebird/bin (Linux). Как и у большинства утилит, распространяемых с СУБД Firebird, у nbackup нет графического интерфейса; Вы запускаете программу из командной строки (или из командного файла, или из другой программы).

Резервная копия всей базы данных

Содание резервной копии всей базы данных

Для создания резервной копии всей базы данных используйте следующий синтаксис командной строки (перенос на следующую строку сделан исключительно из эстетических соображений):

nbackup [-U -P ] -B 0 [ ]
C:\Databases> nbackup -B 0 inventory.fdb inventory_1-Mar-2006.nbk
  • Параметр -B означает создание резервной копии. Уровень резервной копии 0 означает создание резервной копии всей базы данных. Уровни резервных копий больше 0 используются для создания инкрементных резервных копий; это будет рассмотрено далее.
  • Вместо имени файла базы данных Вы можете указать псевдоним (alias, из файла aliases.conf ).
  • Вместо имени файла резервной копии Вы также можете указать stdout . Это перенаправит резервную копию в стандартный поток вывода, откуда Вы сможете перенаправить ее, например, на ленточный накопитель или на вход утилиты для сжатия получаемой резервной копии.
  • Параметры -U (user, имя пользователя) и -P (password, пароль) могут быть опущены (не указываться):
  • если Вы зарегистрированы в системе как администратор ( root , Administrator . ), или
  • если установлены переменные окружения ISC_USER и ISC_PASSWORD .

Для понятности и краткости эти параметры не указаны в приводимых примерах.

Внимание

Не используйте nbackup для многофайловых баз данных. Это может привести к повреждениям базы данных и потере данных — nbackup не будет возражать против выполнения действий над многофайловой базой данных.

Несколько слов о внутренних механизмах

На заметку: то, что здесь будет описано, не является необходимыми знаниями для использования nbackup . Это описание дает грубое представление о том, что происходит при работе программы nbackup с параметром -B :

  1. Прежде всего, основной файл базы данных блокируется установкой внутреннего флага состояния. С этого момента абсолютно все изменения в базе данных записываются во временный файл, называемый файлом разницы (difference file) или файлом дельты.
  2. После этого создается резервная копия. Это не обычная копия файла базы данных — восстановление из полученной копии необходимо производить также при помощи nbackup .
  3. По завершении резервирования содержимое файла дельты объединяется с основным файлом базы данных. После этого база данных разблокируется (флаг возвращается в « нормальное » состояние) и файл дельты удаляется.

Функциональность шагов 1 и 3 достигается введением двух новых операторов SQL: ALTER DATABASE BEGIN BACKUP и ALTER DATABASE END BACKUP . Вразрез с указанным в операторах, они не ведут к созданию резервной копии, они лишь создают условия, с которыми можно безопасно создать резервную копию основного файла базы данных. Чтобы прояснить: Вам не нужно употреблять указанные операторы самостоятельно и явно; nbackup сделает это за Вас в нужное время.

Восстановление из резервной копии всего файла базы данных

Резервная копия всей базы данных восстанавливается следующим образом (перенос на следующую строку сделан исключительно из эстетических соображений):

nbackup [-U -P ] -R [ ]
C:\Databases> nbackup -R inventory.fdb inventory_1-Mar-2006.nbk
  • Вам не нужно указывать уровень при восстановлении.
  • При восстановлении параметр -Rдолжен быть указан последним по причинам, которые будут описаны позже.
  • Если указанная база данных уже существует и нет активных соединений, она будет перезаписана без предупреждения! Если есть активные соединения, восстановление не состоится и Вы получите сообщение об ошибке.
  • Здесь также Вы можете не указывать имя файла резервной копии. Если Вы его опустите, nbackup спросит Вас об этом позже. Однако на текущий момент разработки СУБД Firebird 2 (стадия alpha 3) это приведет к ошибке (по крайней мере под Windows) и неудавшемуся восстановлению.

Инкрементные резервные копии

Создание инкрементных резервных копий

Для создания инкрементной (« дифференциальной ») резервной копии необходимо указать уровень резервной копии больше 0. Инкрементная резервная копия уровня N содержит изменения базы данных с момента создания последней резервной копии уровня N-1 .

Через день после создания резервной копии всей базы данных (уровня 0) Вы создаете резервную копию уровня 1:

C:\Databases> nbackup -B 1 inventory.fdb inventory_2-Mar-2006.nbk

Эта резервная копия будет содержать только изменения базы данных за последний день.

Через день Вы вновь решили сделать резервную копию уровня 1:

C:\Databases> nbackup -B 1 inventory.fdb inventory_3-Mar-2006.nbk

Эта копия будет содержать изменения за последние два дня, то есть с момента создания резервной копии всей базы данных, а не только с момента создания предыдущей инкрементной копии уровня 1.

Через пару часов Вы создаете резервную копию уровня 2:

C:\Databases> nbackup -B 2 inventory.fdb inventory_3-Mar-2006_2.nbk

Эта резервная копия будет содержать изменения только с момента создания последней резервной копии уровня 1, то есть только за последние несколько часов.

Замечание

Все примечания, сделанные по поводу создания резервной копии всей базы данных, применимы и к созданию инкрементных резервных копий.

Внимание

Еще раз: не используйте nbackup для многофайловых баз данных.

Восстановление из инкрементных резервных копий

При восстановлении базы данных из инкрементных резерных копий Вы должны обеспечить наличие полной цепочки инкрементных резервных копий, начиная с уровня 0 и до уровня, которым Вы хотите завершить. База данных всегда строиться с самой первой резервной копии уровня 0, шаг за шагом.

nbackup [-U -P ] -R [ [ [. ] ] ]

Таким образом, восстановление для предыдущего примера до уровня 2 будет выглядеть так:

C:\Databases> nbackup -R inventory.fdb inventory_1-Mar-2006.nbk inventory_3-Mar-2006.nbk inventory_3-Mar-2006_2.nbk

Перенос на новую строку сделан здесь исключительно из эстетических соображений — Вам необходимо вводить команду в командной строке полностью, и нажать 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 марта.

К счастью, такие ошибки никогда не приведут к неверно восстановленной базе данных. Каждый файл с резервной копией имеет уникальный идентификатор. Более того, каждый резервный файл уровня 1 и выше содержит идентификатор того файла, на котором он основан. При восстановлении nbackup проверяет эти идентификаторы; если где-то в указаной цепочке обнаруживается неверная ссылка, операция восстановления не производится и Вы получите сообщение об ошибке.

Практическое применение

Основанная на nbackup инкрементная схема резервирования может выглядеть следующим образом:

  • Каждый месяц создается резервная копия всей базы данных (уровня 0);
  • Каждую неделю делается инкрементная резервная копия уровня 1;
  • Каждые сутки создается инкрементная резервная копия уровня 2;
  • Каждый час создается инкрементная резервная копия уровня 3.

Поскольку все резервные копии сохраняются, Вы сможете восстановить базу данных в любое состояние с точностью до часа. При каждом восстановлении используется максиум до четырех резервных файлов. Разумеется, Вам необходимо так планировать процесс создания резервных копий, что наибольшие из них (требующие больше времени) создаются во время наименьшей нагрузки на СУБД со стороны пользователей. В указанной схеме уровни 0 и 1 могут создаваться по выходным, а уровень 2 — в ночное время.

Если Вы не хотите хранить все созданные резервные копии, Вы можете спланировать схему удаления ненужных копий:

  • Резервный копии уровня 3 удаляются после 8 дней хранения с момента создания;
  • Резервные копии уровня 2 — после месяца;
  • Резервные копии уровня 1 — после полугода;
  • Резервные копии уровня 0 (всей базы данных) — после двух лет, но первую резервную копию всей базы данных каждого года нужно сохранить.

Конечно, приведенные схемы являются лишь примером. Что будет подходящим в конкретном случае, зависит от приложения, размера базы данных, активности пользователей и т.д.

Читать ли дальше?

Сейчас Вы знаете все, что нужно, для того, чтобы создавать резервные копии базы данных и производить восстановление базы данных из резервных копий с помощью nbackup . Если Вы хотите использовать другие утилиты для создания резервных копий баз данных Firebird, то читайте следующие разделы.

Если у Вас нет желания вникать в тонкости, удачи Вам в обычной работе с nbackup !

Firebird Documentation Index → Утилита nbackup → Резервирование и восстановление

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *