InterBaseのバックアップ機能
概要
InterBaseのバックアップ機能は、他のユーザーがデータベースに接続し使用している状態でも同時に実行が可能です。バックアップの為にデータベースサーバーをシャットダウンする必要はありません。(ただし、バックアップ開始後にコミットされたすべてのデータ変更はバックアップに記録されません) InterBaseにはフルバックアップと InterBase 2007で追加されたオンラインダンプの機能が用意されています。
解説
- フルバックアップ(論理バックアップ)
- データベースの全てのレコードを抽出して、コンパクトに圧縮された状態で保存します。
- 論理バックアップではガベージコレクション等で占有されていた領域を再利用するため、復元した際のデータベースサイズは一般的に縮小します。
- オンラインダンプ(物理バックアップ)
- ページレベルでデータベースをコピーし、元の形式で保存します。つまり、バックアップ処理中のデータベースの正確な複製(コピー)を作成します。
- 作成されたファイルは、読み取り専用のデータベースとなります。
- このデータベースを、読み書き可能なデータベースに変換可能ですが、変換するとインクリメントバックアップ(差分のみ追加コピーするバックアップ)はできなくなります。
- インクリメンタルバックアップ
- インクリメントバックアップは、オンラインダンプ(物理バックアップ)の一種です。
- インクリメントバックアップは、最後にフルバックアップを実行したあとのデータベースにコミットされたすべての変更を追加コピーします。
- 作成されたファイルは、オンラインダンプですので、読み取り専用のデータベースとなります。
実行例
バックアップは gbakコマンド、または IBConsoleのメニューから実行できます。 ここでは基本的なオプションのみ使用した gbakコマンドでそれぞれの違いを比較します。データベースはサンプルとして付属している employee.gdbを使用します。
- フルバックアップ
- gbakコマンドでフルバックアップを行なう場合は、gbakの –bオプションを使用します。
gbak –b –user sysdba –password masterkey employee.gdb employee.gbk
- このコマンドの実行によりフルバックアップされたファイル employee.gbkが作成されます。
- 作成されたバックアップファイル employee.gbkをデータベースとして復元するには、gbakコマンドの –c(新しいデータベースとして復元) または、-r(新しいデータベースとして復元、または、既存ファイルに上書き)オプションを使用します。
gbak –c –user sysdba –password masterkey employee.gbk employee_new.gdb gbak –r –user sysdba –password masterkey employee.gbk employee.gdb gbak –r –user sysdba –password masterkey employee.gbk employee_new.gdb1
- このサンプルデータベース employee.gdbは、新たな更新を行なっていない限り、復元した際のファイルサイズには変化がありませんが、一般的にはガベージコレクション等が解消されるため、フルバックアップから復元されたデータベースのファイルは小さくなります。
- また、データベースファイル内のデータやインデックスなどが再配置されるため、復元直後のデータベースパフォーマンスは改善されます。
- オンラインダンプ
- gbakコマンドでオンラインダンプを行なう場合は、gbakの –dオプションを使用します。
gbak –d –user sysdba –password masterkey employee.gdb employee.gdmp
- コマンドを実行すると、次のようなメッセージが表示され、ファイル employee.gdmpが作成されます。
gbak: WARNING: Dumped 309 page of a total 309 database pages gbak: WARNING: Dumped 0 pages to page appendix file
- この gdmpファイルは複製されたデータベースですので、IBConsoleなどから接続してテーブル内のデータなどを参照することができます。
- ただし、作成されたデータベースは、読み取り専用のデータベースですので、データの追加等の更新は行なうことができません。
- オンラインダンプで作成されたデータベースを読み書き可能にするには、gfixコマンドの –modeオプションを使用します。
gfix employee.gdmp –mode read_write –user sysdba –password masterkey
- コマンド実行後、同様に IBConsole上でデータを追加すると、今回は更新を行うことができます。
- インクリメンタルバックアップ
- gbakコマンドでインクリメンタルバックアップを行なう場合は、オンラインダンプと同様に gbakの –dオプションを使用します。インクリメンタルバックアップは、既存のオンラインダンプに対し gbakの –dオプションを実行した際に作成されます。
- まず、オンラインダンプを作成します。
gbak –d –user sysdba –password masterkey employee.gdb employee_inc.gdmp gbak: WARNING: Dumped 309 page of a total 309 database pages gbak: WARNING: Dumped 0 pages to page appendix file
- その後、オリジナルのデータベース employee.gdbのテーブルにデータを追加します。
- この状態で、再度 gbakの –dオプションを実行することでインクリメンタルバックアップが行なわれます。
gbak –d –user sysdba –password masterkey employee.gdb employee_inc.gdmp gbak: WARNING: Dumped 4 page of a total 309 database pages gbak: WARNING: Dumped 0 pages to page appendix file
- 表示されたメッセージに注目してください。最初のオンラインダンプの作成では
gbak: WARNING: Dumped 309 page of a total 309 database pages
- と、ダンプされたページがフルの 309ページであったものが、
gbak: WARNING: Dumped 4 page of a total 309 database pages
- のように更新された 4ページのみとなっています。
- 作成された employee_inc.gdmpを参照すると、最初のオンラインダンプを作成した後に追加されたデータが含まれています。
- このようにインクリメンタルバックアップでは、直前のオンラインダンプ(またはインクリメンタルバックアップ)を実施した以降にコミットされたすべての変更を追加コピーします。