InterBase XE7オンラインダンプでバックアップを実装する方法
Dmitry Kuzmenko、2016年9月8日
InterBaseはバージョン2007以降、オンラインダンプ(オンラインでのデータベースファイルコピー)をサポートしています。gbak -b/-cの代わりに、これによりコピー後にすぐ使用可能なデータベースを取得でき、バックアップから「リストア」する(データベースではないもの)必要がありません。オンラインダンプは非常に高速で、オペレーティングシステムによるファイルコピーとほぼ同じです。
以下のコマンドを使用してデータベースのオンラインダンプを作成します。
gbak -d [オプション] データベース ターゲット
(完全なダンプの説明はドキュメント(Doc\OpGuide.pdf)またはこちらにあります)
データベースファイルと同様に、ターゲットには任意の名前と拡張子を付けることができます。このコマンドの結果は、元のデータベースと同等ですが読み取り専用モードのダンプファイルになります。
このコマンドの初回実行時間は、ソースデータベースのスキャン(読み取り)時間とターゲットファイルへの書き込み時間です。
ターゲットが読み取り専用モードである間、ターゲットはデータベースファイルにリンクされています。最初のダンプでは、データベースファイル全体が読み取られ、ターゲットにコピーされます。2回目以降は、変更されたページのみがターゲットに書き込まれます。これは「増分ダンプ」と呼ばれます。
重要! InterBase XE7は、繰り返しダンプコマンドを実行するたびに(もちろん同じファイル名で)、データベースの変更されたページのみを読み取り、ターゲットに書き込みます。XE7より前の他のバージョンは、ソースデータベース全体を読み取ります。したがって、パフォーマンスが異なり、XE7の方がはるかに高速です。ソースデータベースで変更されたページがない場合、XE7の増分ダンプは約1秒かかりますが、InterBase2007-XE3はデータベースファイル全体を読み取るのに必要な時間がかかります。時間はソースデータベースのサイズとストレージ速度によって異なります。たとえば、ストレージ速度が約400MB/秒の場合、100GBのデータベースは250秒(4分10秒)でスキャンされます。
注記。 InterBase XE7は、XE7(ODS 16)、XE/XE3(ODS 15)、2009(ODS 13)のデータベースファイル形式をサポートしています。前述のスマートスキャン機能は、XE7(ODS 16)データベース形式でのみ機能します。
ターゲットを読み取り/書き込みモード(通常モード)に変更する必要がある場合は、次のコマンドを使用します。
gfix ターゲット -mode read_write
ただし、その後ターゲットはデータベースへのリンクを失い、ターゲットが「別の」データベースと見なされるため、gbak -d データベース ターゲットの後続実行は不可能になります。
増分ダンプの代わりにターゲットを完全に上書きする場合は、-ovオプションを使用します。
gbak -d -ov データベース ターゲット
ダンプのダンプ
ダンプのダンプの最初の実行は機能しますが、その後の増分は機能しません。たとえば、最初に
gbak -d データベース ターゲット1
ここでは、読み取り専用モードの完全ダンプデータベースとしてターゲット1を取得します。
次に、
gbak -d ターゲット1 ターゲット2
ご覧のとおり、ダンプのダンプを作成します。そして、このコマンドはターゲット1をターゲット2にコピーします。両方のターゲットは読み取り専用モードになります。しかし、これらの2つのコマンドを再度繰り返しても、データベースからターゲット1に送られた変更はターゲット2にコピーされません。したがって、ターゲット2は最初の初期コピー後の状態のままです。また、エラーメッセージや警告メッセージは一切表示されません。
したがって、ダンプのダンプを作成したい場合は、完全ダンプのみを使用する必要があります。
gbak -d -ov ターゲット1 ターゲット2
ターゲット2がターゲット1のソースで書き込まれる(そして上書きされる)ことを保証するために、-ovオプションは必須です。
バックアップスキーム1
異なる時間間隔でのダンプの例
gbak -d データベース ターゲット
たとえば、1時間ごとに実行されます。ここでは、本番ソースデータベースと1時間遅れの「バックアップ」コピーであるターゲットがあります。
また、さらに24時間ごとに実行できます。
gbak -d データベース ターゲット2
ここでは、本番データベース、1時間遅れのターゲットコピー、24時間遅れのターゲット2コピーがあります。
1つのデータベースから任意の数のダンプを作成できます。
言うまでもなく、ターゲットダンプは、実際のデータベースを参照する必要のないタスク(レポート、分析など)のために、任意の目的で読み取り専用データベースとして使用できます。
長所:各ダンプを個別にスケジュールできます。
短所:最新のダンプと最も古いダンプの間にラグがあります。
バックアップスキーム2
異なるターゲットへの順次ダンプ。この場合、指定された時間間隔ごとに次のコマンドを1つ実行するように、何らかのスケジューラ(OSまたはカスタム)を調整する必要があります。
gbak -d データベース ターゲット1
gbak -d データベース ターゲット2
gbak -d データベース ターゲット3
これらのコマンドの間隔を1時間にすると、次のようなダンプ(バックアップ)が作成されます。
ターゲット1は12:00、ターゲット2は13:00、ターゲット3は14:00。次のダンプ実行では、ターゲット1が15:00に更新され、以降同様です。結果として、過去3時間分のデータベースのコピーが得られます。
長所:元のデータベースに近い数時間分のダンプがあります。
短所:これらのコマンドのスケジュールが少し難しい。つまり、この例ではダンプコマンドを正確な時刻にスケジュールする必要があります。
ターゲット1へのダンプ:00:00、03:00、06:00…
ターゲット2へのダンプ:01:00、04:00、07:00…
ターゲット3へのダンプ:02:00、05:00、08:00…
まとめ
Gbak -dは、ローカルストレージへのダンプとネットワーク経由のダンプに使用できます。増分ダンプは変更されたページのみをターゲットに送信するためです。したがって、ターゲットをリモートネットワークストレージに配置できます。ただし、もちろん、ローカルストレージと同等の速度を実現するには、ネットワークに十分な帯域幅が必要です。そうでない場合、ターゲットへの書き込みが遅くなります。
オンラインダンプは、データベースのオンラインバックアップコピーを作成するツールとしてだけでなく、システムの「水平スケーリング」を行い、本番、レポート、分析アプリケーションの負荷を分散するツールとしても使用できます。
オンラインダンプはオンラインデータベースコピーを取得する最速の方法(gbak -b/-cの代わりに)ですが、ダンプはページ単位で動作するため、データベースが破損している場合、ページ上の一部の損傷をスキップする可能性があります。したがって、従来のgbak -b/-cによるデータベース整合性チェックは引き続き必要ですが、以前よりは頻度を減らすことができます。