商品スタッフII![]() |
「http://www.firebirdsql.org/manual/nbackup.html」の抄訳です。
Firebird's nbackup tool
Paul Vinkenoog
5 May 2008 – Document version 1.1
nbackupはFirebird2.0に同梱される新しいバックアップユーティリティです。既存のバックアップツールであるgbakに無い機能を提供しますが、しかしそれを置き換えるものではありません。両プログラムはそれぞれ強みと弱みを持ちますので、しばらくは共存し続けることでしょう。
nbackupは、二つの異なるタスクを実行することができます。
両モードとも、接続中のユーザの邪魔をせずにアクティブなデータベースを操作することができます。作成されるバックアップは常に操作開始時点の状態を反映します。この点において、nbackupはgbakと変わるところがありません。nbackupの優位性は、
nbackupの制限としては、
次以降のセクションでnbackupの様々な機能を紹介します。
nbackup.exeは、Firebirdフォルダのbinサブディレクトリにあります。典型的な場所は例えば、 C:\Program Files\Firebird\Firebird_2_0\bin (Windows) あるいは /opt/firebird/bin (Linux)です。Firebirdに付属する多くのツールと同様に、nbackupにはグラフィカルなインターフェースがありません。コマンドプロンプトから起動してください(あるいは、バッチファイルやアプリケーションから)。
|
警告
ヘビーロードな環境において、nbackup 2.0.3とそれ以下のバージョンはデッドロックを起こしたり、データベース破壊をもたらすかもしれないことがわかっています。これらの問題は、必ずしも起こるわけではありませんが、Firebird 2.0.4以上にアップグレードする理由として十分なものです。 |
フルバックアップを作成するためのコマンドシンタックスは以下です。
nbackup [-U <user> -P <password>] -B 0 <database> [<backupfile>]
例えば
C:\Data> nbackup -B 0 inventory.fdb inventory_1-Mar-2006.nbk
|
警告
nbackupをマルチファイルデータベースに使用しないでください。データの破壊や喪失が起こる可能性があります。そのような使い方をしてもnbackupは何の警告も出しません。 |
以下の知識はnbackupを使うのには必要ありません。nbackup -Bの実行時に起こっていることのおおまか(不完全)なイメージです。
ステップ1と3の機能は二つの新しいSQLステートメントによって提供されます。「ALTER DATABASE BEGIN BACKUP」と「ALTER DATABASE END BACKUP」です。その名称に反して、これらの文は実際のバックアップは行いません。単に、メインデータベースを安全にバックアップできる状態を作り出すだけです。念のためですが、これらのコマンドを発行する必要はありません。適切な瞬間にnbackupがそれらを行います。
フルバックアップは次のようにしてリストアします。
nbackup [-U <user> -P <password>] -R <database> [<backupfile>]
例えば
C:\Data< nbackup -R inventory.fdb inventory_1-Mar-2006.nbk
説明:
|
バグ
Firebird 2.0.0では、このインタラクティブリストア機能が壊れています。エラーを表示するだけでリストアは失敗します。2.0.1で修正されています。 |
|
警告
増分バックアップ機能はFirebird 2.1においては完全に壊れています。2.1.1で修正される予定です。 |
増分(差分)バックアップを作成するには、バックアップレベルとして0より大きい値を指定します。レベルNの増分バックアップには、常に直近のN-1レベルバックアップからのデータベース変更が含まれます。
例:
フルバックアップ(レベル0)を作成した次の日、レベル1のバックアップを作成することにします。
C:\Data> nbackup -B 1 inventory.fdb inventory_2-Mar-2006.nbk
このバックアップには、昨日以後の変更点だけが含まれます。
その翌日、レベル1のバックアップをもう一つ作成するとします。
C:\Data< nbackup -B 1 inventory.fdb inventory_3-Mar-2006.nbk
このバックアップには過去二日間の、つまりフルバックアップ以後の変更が含まれます。前回のレベル1バックアップ以後だけの変更ではありません。
二時間後に、今度はレベル2のバックアップを作成するとします。
C:\Data< nbackup -B 2 inventory.fdb inventory_3-Mar-2006_2.nbk
最も若いバックアップは、直近のレベル1以後の変更点のみ、つまり過去二時間分のみを含みます。
|
注意
All the comments that have been made about full backups also apply to incremental backups. |
|
警告
マルチファイルデータベースに対してnbackupを使わないでください。再度警告します。 |
増分バックアップをリストアする際には、レベル0からリストアを望むレベルまでのすべてのバックアップファイルチェインを指定しなければなりません。データベースは常にグランドからステップバイステップでビルドされます。(It is this stepwise adding until the database is restored that gave rise to the term incremental backup.)
形式的なシンタックスは
nbackup [-U <user> -P <password>]
-R <database> [<backup0> [<backup1> [...] ] ]
したがって、以前の例からレベル2のバックアップをリストアする場合は
C:\Data< nbackup -R inventory.fdb inventory_1-Mar-2006.nbk
inventory_3-Mar-2006.nbk inventory_3-Mar-2006_2.nbk
もちろん、レイアウト上の理由から二行に分けれているだけです。実際には最後まで一行に記述してください。
説明 (in addition to the comments with restoring a full backup):
必要なファイルを指定し忘れたり、一緒に指定すべきでないファイルを指定しまった場合はどうなるでしょうか?例えば、inventory_2-Mar-2006.nbkを、間違えてinventory_3-Mar-2006.nbkの代わりに指定したとします。双方ともレベル1のバックアップファイルですから、どちらの場合でも0、1、2の連続したファイルが指定されることになります。しかしながら、レベル2のファイルは「3 March」からの増分であって、「2 March」からの増分ではありません。
幸運なことに、このような間違いによって不正なデータベースがリストアされることはありません。
各バックアップファイルはそれぞれにユニークなIDを持っており、レベル1以降のバックアップファイルは、元となるバックアップのIDを保持しているからです。リストア時にnbackupはこれらのIDをチェックし、茶印が接続していない場合にはオペレーションを中止しエラーメッセージを発生します。
Firebird 2.1ではデータベーストリガという概念が導入されました。nbackup実行中にこれらが起動しないよう、nbackupに新しいスイッチ -T が追加されました。このスイッチはデータベースオーナーかsysdbaによってのみ使用することができます。gbakとisqlでの対応するスイッチは-nodbtriggersであることに注意してください。
nbackupによる増分バックアップは以下のようなものになる。
すべてのバックアップが保持されていれば、過去の任意の時刻のデータベースをリストアすることができる。それぞれのリストア操作では最大4つのファイルが用いられる。もちろん、大きく時間のかかるバックアップはオフピーク時間帯に行わなければならない。このケースではレベル0と1は週末に、レベル2は夜間である。
もしすべてを永遠に保管する必要がなければ、削除スケジュールを加えることができる。
もちろん、以上は単なる例である。個々のケースで何が必要かは、アプリケーション、データベースサイズ、そのアクティビティ等に依存する。
この時点で、nbackupによるフル及び増分のバックアップとリストアを行うためのすべての知識を得た。
You only need to read any further if you want to use backup tools of your own choice for your Firebird databases (see Locking and unlocking), or if you want to override the default name or location of the delta file (see Setting the delta file).
If you have no craving for any of that: good luck in your work with nbackup!
もし、あなた自身のバックアップツールを使うか、あるいはただのファイルコピーをしたいとき、nbackupのロック・アンロックモードが必要になります。「ロック」とはメインデータベースファイルが一時的に凍らせられることであって、データベースする変更がされないということではありません(訳注:データベース変更は起こるが、メインデータベースファイルは変更されない)。バックアップモードと同様に変更は一時的なデルタファイルに書き込まれます。アンロック時にデルタファイルの内容はメインファイルにマージされます。
念のためですが、nbackup.exeはFirebirdフォルダのサブディレクトリにあります。典型的な場所としては例えば C:\Program Files\Firebird\Firebird_2_0\bin (Windows) あるいは /opt/firebird/bin (Linux)です。このプログラムにはGUIがありません。コマンドプロンプトから実行する必要があります(あるいはバッチファイルかアプリケーションから)。
独自にバックアップを行う際の典型的なセッションとしては以下になります。
nbackup [-U <user> -P <password>] -L <database>
nbackup [-U <user> -P <password>] -N <database>
最後のコマンドで、デルタファイルに書き込まれていたあらゆる変更がメインファイルにマージされます。
作成されたバックアップは、データベースがロックされた瞬間のデータ内容になります。たとえ、ロック状態がどれほど長く続こうと、あるいは(ロックしてから)実際にバックアップを行うまでどれほど長く待とうとも。
|
警告
What goes for backup/restore also applies to the lock/unlock switches: do not use them on multi-file databases. Until things have changed, don't let nbackup loose on multi-file databases at all! |
ロック中のデータベースのコピーはそれ自身がロック中の状態ですから、その状態で使用開始することはできません。
Should your original database get lost or damaged and the self-made copy needs to be restored (or should you wish to install the copy on another machine), proceed like this:
nbackup -F <database>
なぜ二つのアンロックスイッチ、-Nと-Fがあるのでしょうか?
したがって、
|
注意
It is a bit unfortunate that the last switch should be called -F for Fixup. After all, it doesn't fix anything; it only unlocks the database. The -N (uNlock) flag on the other hand performs not only an unlock, but also a fixup (integration of mutations into the main file). But we'll have to live with that. |
|
注意
このセクションには、必須情報は含まれていません。様々なスイッチについての理解を深めるための追加情報です。 |
nbackup -Lは以下のことを行います。
nbackup -Nも全く同じですが、ただしステップ3で発行する文は「...END BACKUP」になります。
nbackup -Fは次のようになります。
|
注意
nbackup -F は純粋にファイルレベルでの操作ですから、Firebirdサーバが起動していなくとも実行することができます。-U あるいは -P パラメータが指定されていても完全に無視されます。 |
デフォルトでは、デルタファイルはデータベースそれ自身と同じディレクトリに置かれます。また、名称もデータベースファイルと同じですが、ただし最後に「.delta」が付加されます。通常はこれを変更する必要はありませんが、必要であれば行えなければなりません、nbackupを経由せずに。任意のクライアントからデータベースに接続し、次のSQLを投入してください。
alter database add difference file 'path-and-filename'
カスタムデルタファイルの指定はデータベース中に永続化されます。RDB$FILESシステムテーブルに書き込まれるわけです。これをデフォルトに戻すには次のコマンドを投入します。
alter database drop difference file
注意
|