InterBaseのジャーナル機能
対象となる製品
- InterBase 2007以降の Server Edition
概要
ジャーナルとは、稼働中に半自動的に記録する更新記録などの情報のことです。 ファイルや、データベースシステムへの変更や通信記録などの変更を記録し、データの破損やシステムの不調などの際に、原因の特定や復旧作業を行なうことを目的としています。
解説
InterBaseのジャーナルは、1つまたは複数のファイルで構成されます。 ジャーナルファイルは、各データベースのトランザクションが発生した時点の情報を記録し、常にデータベーストランザクションの最新レコードを保持します。 なお、ジャーナルファイルはプラットフォーム固定なのでLinux上のInterBaseで作成されたジャーナルファイルをWindows上のInterBaseの復旧に適用することはできません。
- ジャーナル機能の有効化
- ジャーナル機能を有効にするには、ジャーナル機能を有効化したデータベースに接続後、CREATE JOURNALコマンドを実行します。
# ISQL –user sysdba –password masterkey USE CONNECT or CREATE DATABASE to specify a database SQL> connect employee.gdb; Database: employee.gdb, User: sysdba SQL> create journal;
- CREATE JOURNALでジャーナル機能を有効にすると、
- [データベースファイル名].PREALLOCATED.nn.JOURNAL
- ジャーナルの開始地点の情報
- [データベースファイル名].yyyy-mm-dd-Thh-mm-ssZ.nn.JOURNAL
- ジャーナルファイル
- IB_JOURNAL
- ジャーナルの対象のデータベース情報
- [データベースファイル名].PREALLOCATED.nn.JOURNAL
- の3つのファイルが作成され、データベースのトランザクションの発生と共に、ジャーナルファイルが更新されます。また、ジャーナルファイル内のログがいっぱいになった時点で、新たなジャーナルファイルを作成します。
- 例えば、
- JOUR.2009-06-09-T13-00-00Z.10.JOURNAL
- のジャーナルファイル内のログがいっぱいになった時点で
- JOUR.2009-06-09-T15-00-00Z.11.JOURNAL
- のような新たなジャーナルファイルが生成されます。
- nnは任意の数字、yyyy-mm-ddは年月日、hh-mm-ssは時間を表します。例えば、JOUR.2009-06-09-T13-00-00Z.10.JOURNAL というジャーナルファイルが作成された場合、2009年6月9日の午後1時時点で作成されたファイルであり、ジャーナルのログ収集が開始された時刻をファイル名から判別することができます。
- ジャーナルアーカイブ
- ジャーナル機能を有効化すると、ジャーナルファイルがトランザクションと時間の増加とともに作成されます。ジャーナルファイルをアーカイブとしてまとめておき、また、アーカイブデータベースダンプを作成することにより、障害発生時のデータベースの復旧を容易に行うことが可能となります。
- ジャーナルアーカイブ機能の有効化
- ジャーナルアーカイブの機能を有効化するには、CREATE JOURNAL ARCHIVEコマンドを実行します。
# ISQL –user sysdba –password masterkey USE CONNECT or CREATE DATABASE to specify a database SQL> connect employee.gdb; Database: employee.gdb, User: sysdba SQL> create journal; SQL> create journal archive;
- CREATE JOURNAL ARCHIVEで、ジャーナルアーカイブ機能を有効にすると
- IB_JOURNAL_ARCHIVE
- アーカイブもとのデータベース情報
- IB_JOURNAL_ARCHIVE
- が作成されます。
- ジャーナルファイルのアーカイブを作成する
- ジャーナルファイルのアーカイブを作成するには、CREATE JOURNAL ARCHIVEでジャーナルアーカイブ機能を有効にした後に GBAKコマンドの –ARCHIVE_JOURNALS オプションを使用します。
# gbak –archive_journals employee.gdb –user sysdba –password masterkey
- アーカイブデータベースダンプを作成する
- アーカイブデータベースダンプを作成するには、CREATE JOURNAL ARCHIVEでジャーナルアーカイブ機能を有効にした後に GBAKコマンドの –ARCHIVE_DATABASE オプションを使用します。
# gbak –archive_database employee.gdb –user sysdba –password masterkey
- ここで作成されるアーカイブデータベースダンプは
- [データベースファイル名].yyyy-mm-dd-Thh-mm-ssZ.nn.DATABASE
- のような名前で生成されます。
- このファイル名からいつ作成されたアーカイブデータベースダンプかを判断することが可能です。
- ジャーナルファイルと同様に、nnは任意の数字、yyyy-mm-ddは年月日、hh-mm-ssは時間を表します。
- ジャーナルアーカイブを使ってデータベースを復旧する
- アーカイブデータベースダンプと、アーカイブされたジャーナルファイルよりデータベースを復旧することができます。復旧には GBAKコマンドの -ARCHIVE_RECOVERオプションを使用します。
# gbak –archive_recover employee.gdb.2009-06-08T14-22-19Z.4.DATABASE employee_new.gdb –user sysdba –password masterkey
- 上記コマンドは、アーカイブデータベース employee.gdb.2009-06-08T14-22-19Z.4.DATABASEを employee_new.gdbという名前で復旧します。この段階では、復元された employee_new.gdbは読み込み専用のデータベースのため、読み書き可能な状態に復旧するには GFIX –MODE READ_WRITEコマンドを実行する必要があります。
# gfix –mode read_write employee_new.gdb –user sysdba –password masterkey
- ジャーナルアーカイブ機能の無効化
- ジャーナルアーカイブ機能を無効化するには、DROP JOURNAL ARCHIVEコマンドを使用します。
- DROP JOURNAL ARCHIVEコマンドを実行すると、アーカイブデータベースダンプと IB_JOURNAL_ARCHIVEファイルが削除されます。
# ISQL –user sysdba –password masterkey USE CONNECT or CREATE DATABASE to specify a database SQL> connect employee.gdb; Database: employee.gdb, User: sysdba SQL> drop journal archive;
- ジャーナルアーカイブ機能を無効にしても、ジャーナル機能(ジャーナルファイルの作成)は有効のままです。
- ジャーナル機能を無効にするには、DROP JOURNALコマンドを使用します。
- ジャーナル機能の無効化
- ジャーナル機能を無効化するには、DROP JOURNALコマンドを使用します。
- DROP JOURNAL コマンドを実行すると、ジャーナルの収集を終了し、ジャーナルファイルと IB_JOURNALファイルが削除されます。
# ISQL –user sysdba –password masterkey USE CONNECT or CREATE DATABASE to specify a database SQL> connect employee.gdb; Database: employee.gdb, User: sysdba SQL> drop journal;