Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Шрифт:
$] ./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 для копирования
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] | Сохраняет |
– 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).
Следующая команда выполняет копирование базы данных в три файла копии в различных разделах файловой системы и выводит подробный протокол. Все это одна команда, множество строк с отступами здесь показаны лишь для удобства чтения.
POSIX:
./gbak -b /data/accounts.fdb /backups/accounts.fbl 2g
/backups2/accounts.fb2 750m /backups3/accounts.fb3
– user SYSDBA -password mlllpOnd
– v -y /logs/backups/accounts.20040703.log
Windows:
gbak -b d:\data\accounts.fdb e:\backups\accounts.fbl 2g
f:\backups2\accounts.fb2 750m g:\backups3\accounts.fb3
– user SYSDBA -password mlllpOnd
– v -y d:\data\backuplogs\accounts.20040703.log
Если вы копируете однофайловую базу данных во множество файлов копий, синтаксис идентичен. Фактически gbak не интересуется тем, является ли ваша исходная база данных одно- или многофайловой.
Важно отметить некоторые моменты.
* Копирование не будет выполняться, если любой из файлов копии будет меньше чем 2048 байт. Если вы ведете протокол, причина появится в протоколе.