外部バックアップ
外部バックアップは、現時点でデータベース全体のバックアップに推奨される最適な方法です。外部バックアップは、既存のシステム・バックアップ手順に簡単に統合でき、通常はダウンタイムなしでバックアップできることを見越しておけます。外部バックアップは主に、論理ディスク・ボリュームの有効な “スナップショット” を迅速に作成するテクノロジと共に使用します。このようなテクノロジは、ストレージアレイからオペレーティング・システム、ディスクの単純なミラーリングに至るまで、さまざまなレベルで存在します。このセクションでは、スナップショット・テクノロジが使用できないシステムに関する特別な考慮事項についても説明します。
スナップショットの整合性を確保するために、InterSystems IRIS には、スナップショットの作成中にデータベースへの書き込みをフリーズする方法があります。スナップショットの作成中は、データベース・ファイルへの物理的な書き込みのみがフリーズされ、ユーザ・プロセスによるメモリ内の更新は引き続き実行できます。このスナップショットは通常、システムで使用中のファイル・システムすべてのスナップショットになります。このスナップショットには、少なくとも InterSystems IRIS データベースが使用するすべてのディレクトリが何らかの形で収録されています。このディレクトリには、インストール・ディレクトリ、データベース・ディレクトリ、ジャーナル・ディレクトリおよび代替ジャーナル・ディレクトリ、WIJ ディレクトリ、システムで使用する外部ファイルを格納したあらゆるディレクトリなどがあります。書き込みができるようになったら、スナップショットをバックアップすることができます。その後、プロダクションに再結合するか、またはウォーム・バックアップとしてオンラインのままにしておくことができます (使用されている具体的なテクノロジによって異なる)。
Note:
使用中のデータベースの整合性チェック実行時にエラーが誤って報告されるという問題を回避するために、ファイル・システムのスナップショットが取られた直後にデータベースがチェックされるように、整合性チェックをこのセクションで説明したような手順に統合することができます。(データベース整合性のチェックに関する詳細は、このガイドの “データ整合性の概要” の章にある "構造的な整合性の検証" を参照してください)。
以下の表に、外部バックアップ方法のメリットとデメリットを示します。
メリット |
デメリット |
ほとんどのシステムで、ユーザの操作が停止されることなく、ダウンタイムなしのバックアップが可能です。 |
書き込みのフリーズが 10 分を超える場合に、引き続きユーザに実行を許可するには、特別な考慮が必要になります。 |
既存のバックアップ手順と簡単に統合できます。 |
|
データベースをフリーズするクラス・メソッドは Backup.General.ExternalFreeze()Opens in a new tab で、フリーズを解除するクラス・メソッドは Backup.General.ExternalThaw()Opens in a new tab です。書き込みの停止に加えて、フリーズする方法では、ジャーナル・ファイルの切り替えやジャーナルへのバックアップ・マーカの書き込みも処理されます。データベースの物理的な書き込みがフリーズされている間も、ジャーナル・ファイルには引き続き正常に書き込まれます。データベースの物理的な書き込みがフリーズしている間にシステムがクラッシュした場合、通常どおり起動時にジャーナルからデータがリカバリされます。
外部バックアップを設定するには、以下の手順を実行するスクリプトを記述します。
-
Backup.General.ExternalFreeze()Opens in a new tab メソッドを使用して、データベースへの書き込みをフリーズします。このメソッドをさまざまなプラットフォームで使用する例が、クラス・ドキュメントに含まれています。
Note:
セキュリティ構成で、バックアップ・スクリプトがデータベース資格情報を提供するように求められる場合、必要な資格情報が含まれているファイルから入力をリダイレクトすることにより、これを実行できます。あるいは、OS レベルの認証を有効にし、スクリプトを実行している OS ユーザの InterSystems IRIS アカウントを作成できます。
-
外部のスナップショット・ユーティリティを使用して、ファイル・システムのスナップショットを作成します。
-
Backup.General.ExternalThaw()Opens in a new tab メソッドを使用して、データベース書き込みを再開します。
-
バックアップ・メディアにスナップショットをコピーします。
-
バックアップが完了したら、Backup.General.ExternalSetHistory()Opens in a new tab メソッドを使用して、バックアップをバックアップ履歴に記録できます。これにより、[ジャーナル設定] ページの [ジャーナルファイルを削除するタイミング]→[この回数のバックアップ成功後] の設定 (既定値は 2) によっては、バックアップを記録することでジャーナルの削除がトリガされる可能性があることに注意してください。詳細は、このドキュメントの “ジャーナリング” にある "ジャーナル設定の構成" を参照してください。
これらのメソッドのプラットフォーム固有の例については、"インターシステムズ・クラス・リファレンス" の "Backup.GeneralOpens in a new tab" クラスのドキュメントを参照してください。
スナップショット・テクノロジが使用できないシステムの場合、上記のスナップショットの作成をファイル・システムのコピーに置き換えることにより、外部バックアップ・アプローチで低速のファイル・システム・コピーを使用できます。これは以下のいずれかの方法で実行するか、または必要に応じてオンライン・バックアップを代替手段として使用することができます。
-
ダウンタイムの追放 :Backup.General.ExternalFreeze()Opens in a new tab を呼び出すときに ExternalFreezeTimeOut パラメータの値を指定し、フリーズ中でもデータベースの更新をメモリのバッファに格納できるように、十分なデータベース・キャッシュを構成しておきます。この場合、ユーザは物理的な書き込みがフリーズしている間に、最大で ExternalFreezeTimeOut に指定した値まで操作を続行できます。ジャーナリングは、書き込みがフリーズされている間にシステム・クラッシュが発生した場合に、データが失われないようにするうえで重要です。クラッシュが発生した場合は、通常よりもシステムの起動に時間がかかる可能性があります。[エラー発生時に凍結する] に対するジャーナルの設定は、[はい] に設定する必要があります (詳細は、このドキュメントの “ジャーナリング” の章の "ジャーナル入出力エラー" のセクションを参照)。
-
ユーザ操作の停止:フリーズ時間として想定する時間の既定値を 10 分にします。この時間が経過すると、Backup.General.ExternalThaw()Opens in a new tab が呼び出されるまで、ユーザの操作は一時停止状態になります。
Important:
バックアップされているインスタンスがミラーのプライマリ・フェイルオーバー・メンバである場合 ("高可用性ガイド" の “ミラーリング” の章を参照)、外部フリーズが Backup.General.ExternalFreeze()Opens in a new tab の ExternalFreezeTimeOut パラメータの指定よりも長く更新を中断しないようにする必要があります。指定時間より長い中断が起こると、ミラーがバックアップ・フェイルオーバー・メンバにフェイルオーバーし、その結果、進行中のバックアップ操作が終了されてしまいます。
Note:
InterSystems IRIS は、Windows のボリューム・シャドウ・コピー・サービス (VSS) をサポートしており、その際にはデータベースに代わってライタとして動作します。VSS シャドウに含まれる InterSystems IRIS データベースのコピーには、トランザクション上の論理的な整合性はありませんが、物理的な整合性があるため、個別にリストアできます。リストアしたデータベースのトランザクション上の整合性を確保するには、ジャーナル・ファイルもリストアする必要があります。VSS シャドウの作成時にマウントされたデータベースのみが VSS シャドウに含まれます。
Caché 用 VSS ライタは、管理者のみが起動できます。
Windows システムでは、iris.cpf ファイルの EnableVSSBackup パラメータは既定で 1 (有効) に設定されています。InterSystems IRIS の起動時に、“InterSystems IRIS VSS ライタが起動しました” というメッセージがメッセージ・ログに書き込まれます。VSS のシャドウ・コピーを作成すると、InterSystems IRIS は、メッセージ・ログのメッセージに示されているように、Backup.General.ExternalFreeze()Opens in a new tab および Backup.General.ExternalThaw()Opens in a new tab を自動的に呼び出します。