Для обновления существующих баз данных до новой версии ODS выполните следующие шаги:
1. Перед инсталляцией новой версии ODS Firebird выполните резервное копирование баз данных с использованием старой версии gbak.
2. Установите новую версию сервера Firebird, как описано в главе 1.
3. После инсталляции новой версии восстановите базы данных с использованием утилиты gbak новой версии из каталога /bin корневого каталога Firebird.
Диалект 1 базы данных остается диалектом 1 и после восстановления базы данных. База данных остается ограниченной возможностями языка InterBase 5, хотя некоторые ограничения применяются к диалекту 1 баз данных в новой версии ODS, которые не применялись к InterBase 5. Например, в Firebird есть множество новых зарезервированных слов, которые будут недопустимыми в базе данных диалекта 1. Полный список зарезервированных слов см. в приложении 11.
Немного отойдя от обсуждаемой темы, скажем, что можно изменить диалект восстановленной базы данных диалекта 1 в диалект 3 при использовании инструмента gfix, обсуждаемого в главе 39. Однако такая миграция не является простым делом. Язык не является единственным, в чем различаются диалекты. Различия в типах данных не менее важны, если не более.
Например, домены и столбцы чисел с фиксированной точкой сохраняют свои старые атрибуты при изменении базы данных до диалекта 3. Типы NUMERIC и DECIMAL С точностью выше 10 в диалекте 1 хранятся в виде DOUBLE PRECISION. Преобразование в
64-битовые числа с фиксированной точкой не выполняется при изменении диалекта на 3 - вы должны создать новые столбцы требуемого типа и выполнить преобразование старых значений в новые столбцы.
Firebird унаследовал некоторые возможности для выполнения миграции из диалекта 1 в родной SQL-диалект Firebird (диалект 3). Известно, что существуют гораздо более простые и безопасные способы выполнить такую миграцию. Лучшие результаты получаются, если создать скрипт, выполнив извлечение метаданных, изменить его при необходимости и восстановить в "пустую" базу данных диалекта 3. Широко доступны прекрасные свободно распространяемые или недорогие инструменты для заполнения вашей новой базы данных вашими старыми данными. См. в приложении 5 рекомендации, а в конце главы 8 ссылки на специальные темы миграции.
Права на выполнение копирования и восстановления базы данных
Использование gbak для копирования и восстановления ограничено пользователем SYSDBA и владельцем этой базы данных.
! ! !
ПРИМЕЧАНИЕ. Любой пользователь может восстановить базу данных при использовании переключателя -c[reate] (см. разд. "Выполнение восстановления"), если создаваемая база данных не будет перекрывать существующую базу данных.
. ! .
Изменение владельца базы данных
Восстановленный файл базы данных или созданный из gbak имеет владельцем того пользователя, который выполнил восстановление. Следовательно, выполнение копирования и восстановления является механизмом для изменения владельца базы данных.
! ! !
ВНИМАНИЕ! Любой может украсть базу данных Firebird путем восстановления базы данных с резервной копии на машине, где ему известен пароль пользователя SYSDBA. Важно обеспечить, чтобы ваши резервные копии были защищены от неавторизованного доступа[148].
. ! .
Имя пользователя и пароль
Когда Firebird проверяет полномочия при запуске gbak, он определяет пользователя в соответствии со следующей иерархией:
1. Имя пользователя и пароль, заданные переключателями в команде gbak.
2. Только для локального варианта gbak[149]. Имя пользователя и пароль, заданные в переменных окружения ISC_USERH ISC_PASSWORD, проверяются на присутствие в базе данных безопасности (security.fdb в версии 1.5 и isc4.gdb для версии 1.0.x). Сохранение постоянно установленных значений этих переменных строго не рекомендуется, поскольку крайне небезопасно.
3. Только для POSIX. Если не предоставлено учетных данных пользователя ни на одном из предыдущих уровней, Firebird позволяет пользователю root запускать gbak с сервера или с доверенной машины.
Выполнение копирования
Для вызова gbak или перейдите в каталог Firebird /bin, где размещается gbak, или укажите для утилиты полный путь. Вся команда должна размещаться в одной строке. В описании синтаксиса и примерах логически замкнутые части команды представлены в виде отдельных строк с отступами.
$] ./gbak -b[ackup] <режимы> исходные-данные копил [n]
ИЛИ
$] /opt/firebird/bin/gbak -b[ackup] <режимы> исходные-данные копия [n]
C:\Program Files\Firebird\Firebird_1_5\bin> gbak -b[ackup] <режимы> исходные-данные копия [n]
ИЛИ
С:\> C:\Program Files\Firebird_1_5\bin\gbak -b[ackup] <режимы> исходные-данные копия [n]
Аргументы для gbak -b[ackup]
исходные-данные- это полный путь и имя файла копируемой базы данных. В Firebird 1.5 это может быть алиас. При копировании многофайловой базы данных используйте имя только первого (первичного) файла базы данных.
копия- полный путь и имя файла, куда помещается резервная копия базы данных.
В случае, когда копия помещается во множество файлов, нужно указать несколько копий. Синтаксический элемент n является целым параметром, включаемым для каждого выходного файла, кроме последнего, для указания размера файла в байтах (по умолчанию). К числу могут быть добавлены буквы в нижнем регистре для задания того, что размер указан в килобайтах (к), мегабайтах (т) или гигабайтах (д). См. следующий пример.
В POSIX копией также может быть STDOUT. В этом случае gbak записывает результат в стандартный вывод (обычно канал)[150].
Режимы могут быть допустимой комбинацией переключателей из табл. 38.1. Переключатели чувствительны к регистру.
Переключатели копирования
В табл. 38.1 описаны переключатели, которые могут быть использованы в gbak при выполнении копирования.
Таблица 38.1. Переключатели gbak для копирования
Переключатель |
Эффект |
-b[ackup database] |
Утилита gbak выполняет копирование указанной базы данных в файл или на устройства |
-со[nvert] |
Конвертирует внешние файлы во внутренние таблицы. При восстановлении любая внешняя таблица преобразуется во внутреннюю таблицу базы данных, а связь с внешним файлом будет уничтожена |
-е[xpand] |
Создает копию без компрессии данных |
-fa[ctor] n |
Использует коэффициент блокирования n для ленточных устройств |
-g[arbage_collect] |
Подавляет сборку мусора в процессе копирования. Используйте этот переключатель, если вы планируете сразу же восстановить базу данных с этой копии, gbak не сохраняет мусор, следовательно, не имеет смысла увеличивать накладные расходы, если вы не собираетесь позже использовать старую базу данных |
-i[gnore] |
Контрольные суммы игнорируются в процессе копирования. Вы можете использовать этот переключатель при повторном запуске копирования, которое аварийно завершилось из-за ошибок контрольных сумм |
-1[imbo] |
(Буква "L" в нижнем регистре). Зависшие 2РС транзакции будут проигнорированы. Не используйте данный переключатель для регулярного копирования. Это позволяет выполнить чистку после того, как двухфазная транзакция не выполнила подтверждения из-за потери связи с сервером |
вернуться 148 Вопросы безопасности файловой системы и других средств окружения обсуждаются в главах 33 и 34. вернуться 149 Если вы по-настоящему беспечны и оставите эти переменные окружения на рабочих станциях, показывая всему миру пароль пользователя SYSDBA, удаленные пользователи также смогут выполнять копирование, не задавая учетных данных. Нечего и говорить, что такая практика должна быть полностью исключена. вернуться
150 В некоторых случаях администраторы БД перенаправляют вывод gbak в утилиты упаковки, такие как gzip. Это позволяет "на лету" получить запакованную резервную копию базы данных с меньшей нагрузкой на диск в процессе создания или восстановления резервной копии. - Прим. науч. ред. |