Чтение онлайн

ЖАНРЫ

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Борри Хелен

Шрифт:

Изменение владельца базы данных

Восстановленный файл базы данных или созданный из gbak имеет владельцем того пользователя, который выполнил восстановление. Следовательно, выполнение копирования и восстановления является механизмом для изменения владельца базы данных.

! ! !

ВНИМАНИЕ! Любой может украсть базу данных Firebird путем восстановления базы данных с резервной копии на машине, где ему известен пароль пользователя SYSDBA. Важно обеспечить, чтобы ваши резервные копии были защищены от неавторизованного доступа [148] .

148

Вопросы безопасности файловой системы и других средств окружения обсуждаются в главах 33 и 34.

. ! .

Имя пользователя и пароль

Когда Firebird проверяет полномочия при запуске gbak, он определяет пользователя в соответствии со следующей иерархией:

1.

Имя пользователя и пароль, заданные переключателями в команде gbak.

2. Только для локального варианта gbak [149] . Имя пользователя и пароль, заданные в переменных окружения ISC_USERH ISC_PASSWORD, проверяются на присутствие в базе данных безопасности (security.fdb в версии 1.5 и isc4.gdb для версии 1.0.x). Сохранение постоянно установленных значений этих переменных строго не рекомендуется, поскольку крайне небезопасно.

149

Если вы по-настоящему беспечны и оставите эти переменные окружения на рабочих станциях, показывая всему миру пароль пользователя SYSDBA, удаленные пользователи также смогут выполнять копирование, не задавая учетных данных. Нечего и говорить, что такая практика должна быть полностью исключена.

3. Только для POSIX. Если не предоставлено учетных данных пользователя ни на одном из предыдущих уровней, Firebird позволяет пользователю root запускать gbak с сервера или с доверенной машины.

Выполнение копирования

Для вызова gbak или перейдите в каталог Firebird /bin, где размещается gbak, или укажите для утилиты полный путь. Вся команда должна размещаться в одной строке. В описании синтаксиса и примерах логически замкнутые части команды представлены в виде отдельных строк с отступами.

POSIX:

$] ./gbak -b[ackup] <режимы> исходные-данные копил [n]

ИЛИ

$] /opt/firebird/bin/gbak -b[ackup] <режимы> исходные-данные копия [n]

Windows:

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 для копирования

150

В некоторых случаях администраторы БД перенаправляют вывод gbak в утилиты упаковки, такие как gzip. Это позволяет "на лету" получить запакованную резервную копию базы данных с меньшей нагрузкой на диск в процессе создания или восстановления резервной копии.
– Прим. науч. ред.

Переключатель

Эффект

– b[ackup database]

Утилита gbak выполняет копирование указанной базы данных в файл или на устройства

– со[nvert]

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

– е[xpand]

Создает копию без компрессии данных

– fa[ctor] n

Использует коэффициент блокирования n для ленточных устройств

– g[arbage_collect]

Подавляет сборку мусора в процессе копирования. Используйте этот переключатель, если вы планируете сразу же восстановить базу данных с этой копии, gbak не сохраняет мусор, следовательно, не имеет смысла увеличивать накладные расходы, если вы не собираетесь позже использовать старую базу данных

– i[gnore]

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

– 1[imbo]

(Буква "L" в нижнем регистре). Зависшие 2РС транзакции будут проигнорированы. Не используйте

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

– m[etadata]

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

– nt

Создает копию в непереносимом формате. По умолчанию данные, сохраняемые в файлах gbak, записываются в формате XDR, являющемся стандартным протоколом для данных, переносимых между платформами

– ol[d descriptions]

Устаревший переключатель- он сохраняет метаданные в старом формате InterBase

– pa[ssword] пароль

Проверяет пароль перед доступом к базе данных. Это требуется (вместе с именем пользователя) для удаленного копирования, а также для локального, если недоступны переменные окружения ISC_USER и ISC_PASSWORD. Обратите внимание, что сокращение переключателя -password (-pa) для gbak отличается от сокращения для isql (-pas)

– role имя

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

– se[rvice] сервис

Создает файлы копии на хосте, где располагаются и исходные файлы базы данных. Аргумент сервис вызывает Менеджер сервисов на сервере. Подробный синтаксис см. в разд. "Использование gbak с Менеджером сервисов Firebird"

– t[ransportable]

Сохраняет данные gbak в переносимом формате XDR. Это значение по умолчанию. Для сохранения данных в сжатом родном формате используйте переключатель -nt

– u[ser] имя

Проверяет имя пользователя перед доступом к базе данных. Это требуется (вместе с паролем) для удаленного копирования, а также для локального, если недоступны переменные окружения ISC_USER и ISC_PASSWORD

– v[erbose]

Выводит подробные сообщения о том, что делает gbak. Вы можете вывести текст в файл, задав переключатель -y

– y { файл | suppress output}

Направляет сообщения о состоянии в файл, полный путь к файлу, который вы хотите создать. Операция завершится с ошибкой, если файл уже существует. Если копирование завершится нормально и не был использован переключатель -v[erbose], то этот файл будет пустым, suppress output может быть использовано вместо "молчаливого" копирования, при котором не выводится вообще никаких сообщений

– z

Показывает версии gbak и сервера Firebird

Переносимые копии

Используйте значение по умолчанию, переключатель -transportable, если вы работаете в многоплатформенном окружении. При этом данные записываются в межплатформенном стандартном формате external Data Representation (XDR) [151] , позволяющем программе gbak читать файл на аппаратной платформе, отличной от той, на которой была создана копия.

Копии разных версий

151

Информацию о стандарте XDR можно найти на http://asg.web.cmu.edu/rfc/rfcl832.html.

Программа gbak на серверах со значением ODS более низким, чем сервер Firebird, который создал базу данных, обычно не сможет восстановить копию с более высоким значением ODS. Однако на практике версия gbak из InterBase 5.x проявляет способности восстанавливать большинство баз данных диалекта 1, созданных в Firebird 1.0.x.

! ! !

ВНИМАНИЕ! Вы никогда не должны пытаться копировать базы данных программой gbak с версией, не соответствующей версии сервера, с которым выполняется база данных.

. ! .

Копирование в один файл

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

gbak -b d:\data\ourdata.fdb d:\data\backups\ourdata.fbk

Имя исходного файла задается независимо от того, является ли копируемая база данных однофайловой или многофайловой. Когда вы выполняете копирование многофайловой базы данных, в команде копирования задавайте только первый файл. Пути ко второму и последующим файлам будут найдены утилитой gbak в базе данных и в заголовках файлов в процессе резервного копирования. Если вы зададите имена последующих файлов, они будут интерпретироваться как имена файлов копии.

Файл копии может иметь любое имя, какое вы ему зададите, если оно будет допустимым в той файловой системе, в которой этот файл записывается.

Копирование многофайловой базы данных во множество файлов

Когда вы копируете многофайловую базу данных во множество файлов с помощью gbak, не требуется соответствия файлов базы данных файлам копии. Если существует более одного файла копии, то имена и размеры файлов копии должны быть заданы для всех файлов за исключением последнего файла в наборе. По умолчанию размер файла (целое число) задается в байтах. Для изменения этого добавьте букву в нижнем регистре, чтобы указать утилите gbak, что задаете размер в килобайтах (к), мегабайтах (m) или гигабайтах (g).

Поделиться с друзьями: