Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

シャドウイング

シャドウイングを使用すると、セカンダリ・コンピュータは、選択されたデータベースがプライマリ・マシンで更新されるように、そのデータベースの “シャドウ” コピーを保持できます。プライマリ・マシンからセカンダリ・マシンに継続的にジャーナル情報を送信することで、シャドウイングは、通常はソース・データベースのわずかなトランザクションにのみ存在するシステムに対するリカバリを可能にします。

シャドウイングは多くの目的に使用できますが、使用しているシステム環境によって、それぞれの目的には重要な考慮事項があります。以下は、シャドウイングによって可能になる最も一般的な目的の例です。

  • ディザスタ・リカバリ。最も一般的な使用法です。容易で、低コストです。

  • 読み取り専用レポート・サーバ。任意のレポート・タスクが、プロダクションに影響を与えずに現在のデータで処理できます。

  • 低予算の複製。ジャーナリングによって、シャドウ・インスタンス上で、データベースを複製します。

以下の項目について説明します。

シャドウイングの概要

プライマリ Caché インスタンスは、1 つ以上のシャドウを持つことができます。シャドウイングでは、プライマリ・システム (ソース) でのデータベースの動作を監視し、同じ動作をセカンダリ・システム (宛先) で発生させます。これは、宛先で動作するシャドウ・クライアント・サービスを使用して実行します。このサービスでは、ソースで実行しているシャドウ・サービスから、ジャーナル・ファイルの詳細を継続的に要求します。シャドウ・サービスは、実際の SetKill、および $Bit の各ジャーナル・レコード・エントリの詳細を、TCP 接続で宛先のシャドウに送信して応答します。

シャドウイングの概要
generated description: shadow
Important:

ソース・サーバおよび宛先サーバには、互いに異なるハードウェア、オペレーティング・システム、または CPU チップセットを使用できます。ただし、データの互換性がなくならないように、宛先のシャドウ Caché インスタンスは、ソースの Caché インスタンスと同じ文字幅 (8 ビットまたは Unicode。"Caché インストール・ガイド" の "Caché の文字幅" を参照) および同じロケール ("Caché システム管理ガイド" の “Caché の構成” の章にある "管理ポータルの NLS 設定ページの使用法" を参照) を使用している必要があります。この要件には 1 つの例外があります。ISO 8859 Latin-1 文字セットに基づくロケールを使用している 8 ビットのインスタンスには、それに一致する幅の文字ロケールを使用している Unicode のインスタンスとの互換性があります。例えば、enu8 ロケールを使用している 8 ビットのインスタンスは、enuw ロケールを宛先のシャドウとして使用している Unicode のインスタンスと共にシャドウ・ソース・データベース・サーバとして構成できます。

すべてのシャドウイングは、圧縮されたジャーナル・ファイルをブロックに分割して送信することによって、より高い効率が得られる高速転送メソッドを使用します。シャドウでは、すべてのトランザクションがローカル・データベースに適用されます。この転送モードでは、データをジャーナル・ファイルに書き込む必要があり、それによって数秒の遅延が発生することがあります。シャドウは、サーバへの TCP 接続を確立し、ジャーナル・ファイルを受信します。ジャーナル・ファイルをダウンロードするとき、他のシャドウ・プロセスがジャーナル・エントリをデータベースの宛先のローカル・コピーに割り当てます。

宛先のシャドウ・サーバは、データ・ソース・サーバに接続する際、ジャーナル・ファイル名と開始ポイントをデータ・ソース・サーバに送信します。シャドウは、定期的に新規レコードをチェックします。シャドウに最新のレコードがない場合は、ソースからレコードをダウンロードし、データベースを更新します。これらのプロセスの間、Caché は、ロールバック機能および再起動機能を容易にするために、チェックポイントをシャドウ・グローバルに継続的に保存します。

Caché は、自動的にソース・ジャーナル・ファイルの宛先のシャドウ・コピーを削除します。削除対象のファイル (デジャーナルされ、オープン・トランザクションを含まないファイル) をどれくらいの期間保持するかを構成できます。

シャドウイングの構成

このセクションでは、Caché でシャドウイングを構成、設定する方法について説明し、以下の手順を示します。

Important:

同じデータベースに対してミラーリングとシャドウイングの両方を構成する場合、以下のガイドラインに注意してください。

  • ミラーにフェイルオーバー・メンバが 1 つしかない場合、フェイルオーバー・メンバをシャドウ・ソースとして構成できます。また、非同期メンバをソースとして構成することもできます。

  • ミラーに 2 つのフェイルオーバー・メンバがある場合、非同期メンバをシャドウ・ソースとして構成する必要があります。フェイルオーバー・メンバをソースとして構成することはできません。

  • ミラー・メンバに対してミラーリングされるデータベースとミラーリングされないデータベースの両方をシャドウイングするには、ミラーリングされるシャドウとミラーリングされないシャドウを別個に構成する必要があります。

  • 非同期メンバに対して複数のミラーからデータベースをシャドウイングするには、ミラーごとに別個のシャドウを構成する必要があります。

ミラーリングの構成の詳細は、"Caché 高可用性ガイド" の “ミラーリング” の章を参照してください。

ソース・データベース・サーバの構成

ソース・データベース・サーバでシャドウイングを有効にするには、宛先システムがソース・システムに TCP 接続できるかどうかを事前に確認しておきます。SSL によってこの接続を保護する場合、%SuperServer SSL/TLS 構成が、ソースに存在する必要があります。詳細は、"Caché セキュリティ管理ガイド" の “Caché での SSL/TLS の使用法” の章の "SSL/TLS を使用するための Caché スーパーサーバの構成" を参照してください。

Important:

シャドウ・サービスは、シングル・サーバ・ライセンスの場合、システムを実行できません。

ソース・システムで実行されている Caché インスタンスから管理ポータルを使用して、シャドウ・サービスを有効にし、接続を制限し、シャドウイングするデータベースのグローバル・ジャーナリングを有効にします。以下のトピックでこれらの手順について説明します。

管理ポータルを使用しない、シャドウのデータ・ソースとのインタフェースに使用できるメソッドとクエリの詳細は、"インターシステムズ・クラス・リファレンス" の "SYS.Shadowing.DataSourceOpens in a new tab" クラスのドキュメントを参照してください。

また、使用環境に関する問題については、"重要なジャーナリング考慮事項" のセクションを参照してください。

シャドウ・サービスの有効化

シャドウイングを使用するには、管理ポータルの [セキュリティ管理] から、シャドウ・サービスを有効にする必要があります。許可された接続の IP アドレスを入力して、シャドウイング・アクセスを制限することもできます。

  1. 管理ポータルの システム管理, セキュリティ, サービス ページに移動します。

  2. サービス名のリストで [%Service_Shadow] をクリックし、シャドウ・サービス・プロパティを編集します。

  3. [サービスの有効化] チェック・ボックスにチェックを付けます。[保存] をクリックする前に、このデータベース・ソースに接続できる IP アドレスを制限することもできます。その場合は、以下の手順を実行してから [保存] をクリックします。

  4. [許可された接続] ボックスの [IP アドレス] リストに、前に入力したサーバ・アドレスが表示されます。[追加] をクリックして [IP アドレス] を追加します。使用するすべてのアドレスを入力し終えるまで、この手順を繰り返します。

    これらのアドレスは、該当する行の [削除] をクリックして個別に削除できます。また、[すべて削除] をクリックしてすべてのアドレスを削除し、どのアドレスからも接続を許可することもできます。

ジャーナリングの有効化

シャドウイングする各データベースがジャーナリングの対象となっていることを確認します。

  1. 管理ポータルの システム管理, 構成, システム構成, ローカルデータベース ページに移動して、シャドウイングする各データベースの [ジャーナル] 列を表示します。

  2. このジャーナル状態を [いいえ] から [はい] に変更するには、該当するデータベースの行の [編集] をクリックし、データベースのプロパティを編集します。

  3. [グローバル・ジャーナル状態] リストで、[はい] をクリックし、[保存] をクリックします。

既定では、CACHELIBCACHEDOCBOOK、および SAMPLES の各データベースはジャーナルされず、したがって、シャドウイングできません。また、CACHETEMP はジャーナルの対象になりません。

重要なジャーナリング考慮事項

使用しているシステムに影響する可能性のある考慮事項については、以下のセクションを確認してください。

ソース・ジャーナル・ファイルの削除の管理

Caché は、シャドウイングのためにソース上でジャーナル・ファイルの削除の特別な処理はしません。したがって、ユーザの責任で、ソースのジャーナル設定を構成して、シャドウが必要とするジャーナル・ファイルが、宛先のシャドウに転送されるまで、使用可能なままであるようにしてください。

通常これは、シャドウを中断したり、シャドウを長い間停止した場合など、シャドウがソースに深刻に後れを取った場合にのみ問題となります。

無効なソース・ジャーナリングへの応答

ソース上でジャーナリングを無効にした場合、有効なシャドウを維持するための最善の対策を決定する必要があります。ほとんどの場合、Caché がジャーナリングを無効にする原因となった状態を解決した後、シャドウをソースと再同期させる必要があります。

詳細は、このドキュメントの “ジャーナリング” の章の "ジャーナル入出力エラー" セクションを参照してください。

クラス・コンパイルのシャドウイング

Caché は、クラスをコンパイルするために使用されるグローバルを含むデータベースをジャーナリングします。シャドウイングを使用し、ソースのコンパイルに依存して、シャドウ上のアプリケーション・コードを更新する場合、各クラス・コンパイルがジャーナルに書き込まれ、更新がシャドウ・データベースに転送されるように、既定の修飾子 (/journal=1 によってコンパイル) が変更されていないことを確認します。クラス・コンパイルがジャーナルに書き込まれない場合、すべてのクラスを再コンパイルしない限り、災害復旧のためのシャドウを使用できません。

宛先のシャドウ・サーバの構成

宛先のシャドウ・サーバでシャドウイングを構成するには、まず、宛先のシステムがソース・システムに TCP 接続できるかどうかを確認します。

SSL を使用する場合、SSL/TLS クライアント構成が、宛先に存在する必要があります。詳細は、"Caché セキュリティ管理ガイド" の “Caché での SSL/TLS の使用法” の章の "SSL/TLS を使用する Caché クライアント・アプリケーションに関するメモ" を参照してください。

宛先のシステムで実行されている Caché インスタンスの管理ポータルから、宛先のシャドウ・プロパティを構成して、シャドウ内のデータベースをマッピングおよび同期し、シャドウイングを開始します。以下のセクションでこれらの手順について説明します。

管理ポータルを使用せずに、シャドウの宛先とのインタフェースに使用できるメソッドとクエリの詳細は、"インターシステムズ・クラス・リファレンス" の SYS.Shadowing.ShadowOpens in a new tab クラスのドキュメントを参照してください。

シャドウの定義

管理ポータルの システム管理, 構成 ページに移動し、[接続性] 列にある [シャドウサーバ設定] をクリックして、システム管理, 構成, 接続性, シャドウサーバ設定 ページに移動します。以下の手順を実行して、シャドウ・プロパティを定義します。

  1. [シャドウ・サーバの作成] をクリックし、この宛先のサーバでシャドウを定義します。

    Important:

    フェイルオーバー・ミラー・メンバをシャドウイングできるのは、それがミラーにある唯一のフェイルオーバー・メンバである場合のみです。ミラーに 2 つのフェイルオーバー・メンバがある場合、代わりに非同期メンバをシャドウイングする必要があります。ミラーリングされるデータベースのシャドウイングの詳細は、"シャドウイングの構成" を参照してください。

  2. [シャドウの名前] ボックスにこのシャドウを識別するための名前を入力します。この値は、シャドウ ID とも呼ばれます。システムはこの名前を使用して、同じシステムで実行されているシャドウの各インスタンスを区別します。

    Note:

    シャドウ名にチルダ (~) 文字は使用しないでください。これは内部のシャドウ処理で使用されます。

  3. シャドウイングするソース・データベース・サーバの TCP/IP アドレスまたはホスト名 (DNS) を [ソースの DNS 名または IP アドレス] ボックスに入力します。

  4. [ソースのポート番号] ボックスに、シャドウイングするソースの Caché インスタンスのスーパーサーバ・ポート番号を入力します。

    Important:

    中断したシャドウ上で IP アドレスまたはポート番号を変更した場合、ユーザの責任で、シャドウが正しく再開できることを確認してください。

  5. [詳細] をクリックし、以下のオプションのフィールドに入力します。

    • [ジャーナル・ファイル・ディレクトリ] — 宛先のシャドウ・システムにあるジャーナル・ファイル・ディレクトリのフル・パス名を入力します。適切なディレクトリを検索するには、[参照] をクリックします。このエントリを更新するときは、以下の点を考慮してください。

      • この宛先上で複数のソース・インスタンスをシャドウイングしている場合、インスタンスごとに一意のジャーナル・ファイル・ディレクトリを使用するようにしてください。

      • クラスタ・シャドウ上でジャーナル・ファイル・ディレクトリを変更した場合、シャドウイングを停止し、再開するまでは、新しいクラスタ・ノードからのジャーナル・ファイルに対してのみ、その変更が有効となります。

    • [SSL 構成] — 既存のクライアント構成のリストから選択します。シャドウ接続に SSL を使用しない場合は、このエントリを空白のままにします。以下の 2 つの条件のいずれかが存在する場合、ソースへのシャドウ接続に失敗します。

      • ソースは SSL に対応していないにもかかわらず、SSL構成を選択した。

      • ソースは SSL を必要としているにもかかわらず、SSL 構成を選択していない。

    • [フィルタ・ルーチン] — シャドウでジャーナル・レコードをデジャーナリングする前に、それらのレコードのフィルタリングに使用するオプションのフィルタ・ルーチン名 (先頭の ^ は省略) を入力します。このルーチンは %SYS ネームスペースにある必要があり、以下の形式をとる必要があります。

      MyShadowFilter(pid,dir,glo,type,addr,time)
      
      引数 説明
      pid レコードのプロセス ID

      重要なリモート・システム ID が設定されているレコードの場合、その pid はコンマ (,) で区切られた 2 つのフィールドで構成されます。最初のフィールドがプロセス ID、2 番目のフィールドがリモート・システム ID です。

      dir ソース・データベース・ディレクトリ (シャドウ・データベース・ディレクトリではありません)
      glo グローバル (添え字) 形式のグローバル参照 (先頭の ^ なし)
      type レコードのタイプ。有効な値は、“S” (SET)、“s” (BITSET)、“K” (KILL)、“k” (ZKILL) です。
      addr ジャーナル・ファイルでのレコードのオフセット
      time レコードのタイムスタンプ

      フィルタ・ルーチンのロジックでは、デジャーナリング・プロセスでレコードをスキップする場合は 0 を返します。それ以外の場合、シャドウはレコードをデジャーナルします。

      Caution:

      フィルタ・ルーチンのローカル変数に対して New コマンドを実行し、シャドウ・ルーチンで使用するローカル変数を誤って上書きしないようにします。

      以下のフィルタ・ルーチン例では、デジャーナリングのプロセスで X で始まる (つまり ^X*、ここで * はワイルドカードを表す) グローバルのジャーナル・レコードをスキップし、デジャーナルした各レコードをログに記録します。続いて、ジャーナル・レコードに oldvalue および newvalue が含まれていて、それらの値が同一の場合は、そのジャーナル・レコードがスキップされます。

      MyShadowFilter(pid,dir,glo,type,addr,time) { ;Sample Shadow Filter Routine 
         // Disclaimer: This routine is for illustration purpose only.
      
         If $Extract($Piece(glo,"(",1),1)="X" {
              Do ##class(%Library.Device).Broadcast("","Skip updating "_glo) ;log 
              Quit 0
         } 
         Do ##class(%Library.Device).Broadcast("",pid_","_dir_","_glo_","_type_","_addr_","_time) ;log
         // To retrieve more information about the record than provided -- 
         Set jrecoref=##class(%SYS.Journal.Record).%OpenId(addr) ;open the record 
         If jrecoref.%IsA("%SYS.Journal.SetKillRecord") && (jrecoref.NumberOfValues=2) 
      && (jrecoref.NewValue=jrecoref.OldValue) {
              Do ##class(%Library.Device).Broadcast("","Skip applying the SET") ;log
              Quit 0 
         } 
         Quit 1 
       }
      
      
      Important:

      シャドウ・フィルタ関数は、簡単に素早くシャドウ遅延を防止する必要があります。シャドウ・フィルタ関数は “純粋な” 関数であることが理想です。つまり、その結果が入力のみに依存するということです。前記の例では、対応するジャーナルを開いて検査する方法を示しています。これなどの “純粋な” 関数からの派生は、パフォーマンスとエラー処理の両方の観点で注意が必要です。以下の点に留意してください。

      • 新しいフレームを使用して、呼び出し元フレームに属しているローカル変数が変更されないようにし、関数が終了したときにすべてのローカル変数が確実に削除されるようにします。

      • TSTARTTCOMMIT、または TROLLBACK の各コマンド、あるいは間接的にトランザクションに関与するコマンドを使用しないでください。そのため、動的 SQL を使用しないでください。

      • XECUTE および間接コマンドを使用しないでください。また、信頼できない文字列に対して XECUTE または間接コマンドを使用しないでください。

      • ルーチンを呼び出さないでください。また、これらの注意事項に従わないクラスを使用しないでください。

      Note:

      フィルタ・ルーチン内でグローバルを参照する際にドット構文を使用する場合、先頭に ^ を使用する必要があります。

      以下のいずれの方法でも、フィルタ・ルーチンの使用を指定できます。

      • システム管理, 構成, 接続性, シャドウサーバ設定 ページで、[新規サーバの追加] または既存のシャドウの [編集] を選択するときには、[詳細] 設定の [フィルタルーチン] ボックスに名前を入力します。

      • ^SHADOW を使用して、シャドウを編集します。

    • [古いジャーナルのコピーの保存日数] — ソース・ジャーナル・ファイルのシャドウ・コピーを保存する日数を入力します。既定では、Caché の宛先は、デジャーナルを終了し次第、オープン・トランザクションがそのファイルで扱われていない限り、ジャーナル・ファイルのコピーを削除します。このフィールドに値を入力して、宛先でジャーナル・ファイルのシャドウ・コピーをより長い間保存できます。

      例えば、3 を入力すると、ソース・ジャーナル・ファイルが、最低 3 日間保存され、完全にデジャーナリングされ、開かれたトランザクションが含まれていない場合、ソース・ジャーナル・ファイルのシャドウ・コピーは削除対象となります。経過時間は、ソース・ジャーナル・ファイルの完了日付によって判断されます。

    • [最大保存エラー・メッセージ数] — Caché が保持するシャドウイング・エラー数を 0 から 200 までの値で入力します。既定値は、10 です。

    • [シャドウの更新のジャーナル無効] — このシャドウがシャドウ・データベースに適用する更新のローカル・ジャーナリングが行われないようにするには、データベース自体のジャーナル設定に関係なく、既定の設定の [いいえ] を [はい] に変更します。

      シャドウイングの宛先となるすべてのデータベースをジャーナルに記録することを推奨します。その結果、シャドウ更新が適用されたジャーナルを宛先のシャドウで維持できるので、高い冗長性が得られます。

      Important:

      シャドウ・ソースから得られるジャーナル・ファイルと同じディレクトリにローカル・ジャーナル・ファイルを置かないようにします。

      Caution:

      シャドウの更新をジャーナルに書き込まないことを選択する場合、その推奨方法は、[シャドウの更新のジャーナリングを無効にする][はい] に設定することです。1 つまたは複数の宛先のシャドウ・データベースのジャーナリングを無効にすることではありません。後者の方法を実行し、宛先の CACHESYS データベースのジャーナリングを無効にしない場合、シャドウがクラッシュして再起動した場合に、CACHESYS^SYS グローバルに保存されたジャーナル・チェックポイントによって、シャドウ・データベースにコミットされた最後のレコードではなく、ジャーナル・ストリームのの時点にシャドウがリカバリされ、事実上一部のシャドウの更新がスキップされる可能性があります。

  6. [保存] をクリックして、[シャドウサーバ設定] ページに戻ります。ここで、新しいシャドウがリストされるようになります。[編集] リンクをクリックして設定を編集すると、[データベース・マッピングの追加] リンクが [シャドウサーバ編集] ページに組み込まれるようになります。詳細は、"データベースのマップ" を参照してください。

データベースのマップ

構成設定を正常に保存した後、ソースからシャドウへのデータベース・マッピングを追加または削除できます。

  1. [このシャドウのデータベース・マッピング] の横にある [追加] をクリックし、[シャドウ・マッピングの追加] ダイアログ・ボックスを使用して、ソース・システムのデータベースを宛先システムのディレクトリに関連付けます。

  2. [ソース・データベース・ディレクトリ] ボックスに、ソース・データベース・ファイル CACHE.DAT の物理パス名を入力します。[シャドウ・データベース・ディレクトリ] ボックスに、ソース・データベース・ファイルに対応する宛先のシャドウ・データベース・ファイルのパス名を入力して、[保存] をクリックします。

  3. 事前に入力されたマッピングがあるかどうかを確認して、無効または不要なマッピングの横にある [削除] をクリックします。シャドウイングを開始するには、少なくとも 1 つのデータベース・マッピングが必要です。

  4. [閉じる] をクリックして、システム管理, 構成, 接続性, シャドウサーバ設定 ページに戻ります。

ソース・データベース・サーバがクラスタの一部になっている場合、宛先のシャドウの構成設定はわずかに異なります。クラスタ・システムのシャドウイングの詳細は、このドキュメントの “クラスタ・ジャーナリング” の章にある "クラスタ・シャドウイング" のセクションを参照してください。

Note:

ターゲット (シャドウ・データベース) が、シャドウ上の CACHESYS データベースでない場合、CACHESYS データベースをシャドウイングのソース・データベースとして使用できます。現在、ソース・マネージャのディレクトリ (CACHESYS) を含むデータベースのマッピングをシャドウ構成に追加する唯一の方法は、SYS.Shadowing.ShadowOpens in a new tab クラス API を使用することです。以下に例を示します。

 Set ShadowOref=##class(SYS.Shadowing.Shadow).%OpenId("MyShadow")
 Do ShadowOref.SetDatabaseToShadow("C:\MyCache\Mgr","D:\MyCacheShdw\Shdwsys")
 Set rc=ShadowOref.%Save()

ここで、C:\MyCache\Mgr は、CACHESYS データベースのソース・マネージャのディレクトリ、D:\MyCacheShdw\Shdwsys は、宛先の CACHESYS データベースでないデータベースのディレクトリです。詳細は、"インターシステムズ・クラス・リファレンス" の SYS.Shadowing.ShadowOpens in a new tab のエントリを参照してください。

データベースの同期

シャドウイングを開始する前に、ソース・データベースとシャドウの宛先のデータベースを同期化します。ソース・データ・サーバの外部バックアップを使用して、宛先のシャドウでデータベースをリストアします。詳細は、このドキュメントの “バックアップとリストア” の章を参照してください。

Important:

ソース・インスタンスと宛先のインスタンスがエンディアンの異なるシステム上に存在する場合 (このリリース用のオンライン・ドキュメント "インターシステムズでサポートされるプラットフォームOpens in a new tab" の “サポート対象テクノロジ” のセクションの “プラットフォームのエンディアン” を参照)、使用前に宛先のシャドウにリストアするデータベースをソースのエンディアンに変換する必要があります。その手順は、“バックアップとリストア” の章の "エンディアンに関する注意事項" を参照してください。

シャドウイングの管理と監視

Caché では、管理ポータルを通してシャドウ処理へのインタフェースを提供しています。また、^SHADOW ユーティリティまたは SYS.Shadowing API クラス、SYS.Shadowing.DataSourceOpens in a new tab および SYS.Shadowing.ShadowOpens in a new tab を使用して、シャドウ処理を構成および管理することもできます。このドキュメントでは、管理ポータルを使用した手順について説明し、シャドウイング API を使用した例をいくつか示します。

シャドウの状態は 3 つの状態のうちのいずれかになります。その状態に応じて、さまざまなシャドウのアクションを実行できます。以下のセクションでは、各状態とアクションについてその相互関係を含めて説明します。

シャドウの状態とアクション

シャドウの状態は、必ず以下のいずれかになります。

  • Stopped — シャドウを停止すると、そのプロパティを変更できます。これは、新規に作成したシャドウの初期状態です。

  • Processing — シャドウを実行しているときはデータベースの更新が適用され、シャドウのプロパティは変更できません。

  • Suspended — シャドウを一時停止すると、データベースの更新は適用されませんが、チェックポイントは保持されます ("シャドウのチェックポイント" を参照)。そのプロパティを更新することはできますが、変更の中には、直ちに有効にならないものもあります。

シャドウで可能なアクションには以下の 4 つのタイプがありますが、実際に実行できるアクションは現在のシャドウの状態とユーザ特権によって異なります。

  • 開始および再開 — [ソース・イベントの選択] で指定した開始ポイントから、あるいは、再開の場合、適切なチェックポイントから、停止していたシャドウを開始します。

  • 停止 (ロールバックあり、またはロールバックなし) — 処理中のシャドウまたは一時停止していたシャドウを停止します。シャドウ処理を停止した場合、Caché は、オープン・トランザクションをロールバックするかどうかの選択を提供します。

  • 一時停止 — 処理中のシャドウを一時停止します。シャドウを一時停止すると、シャドウの停止とは異なり、そのシャドウのオープン・トランザクション、ジャーナル・ファイル、およびチェックポイントが維持されます。

  • 再開 — 一時停止していたシャドウを、その停止位置から、または選択したチェックポイントから再開します。致命的なエラーが発生した場合、シャドウは中止され、一時停止状態になります。

以下の図は、各状態のシャドウで実行可能なアクションを示しています。この図では、シャドウの状態を円で表し、その状態で実行できるアクションを矢印で表しています。

シャドウの状態と実行可能なアクションの関係
generated description: shadow states ops

シャドウ処理の考慮事項

シャドウの状態をいつ、どのようにして変更するかを決定する際、以下の条件に留意してください。

  • 停止したシャドウは、Caché の再開によって、自動的に開始または再開しません。この章で説明しているように、停止したシャドウを明示的に開始または再開する必要があります。反対に、Caché を起動すると、以前の Caché セッションで停止状態ではなかったシャドウが自動的に再開します。

  • 一時停止しているシャドウは開始できません。処理を再開するか、シャドウを停止してから開始する必要があります。

  • ロールバックでシャドウを停止した後は、再開を選択しないでください。シャドウ・データベースは、シャドウが前回の停止のジャーナルの場所に到達するまで、判定不可能な状態となる場合があります。

  • 宛先のシャドウ内の個々のデータベースが失敗するかディスマウントされた場合、そのシャドウ内のその他のデータベースのシャドウイングは続行します。これが発生した場合、"宛先データベースの同期" の手順を使用して、影響を受けたデータベースをリストアまたはマウントした後に、そのデータベースをキャッチアップする必要があります。

管理ポータルでは、定義されたシャドウに対するタスクを以下の 2 つの方法で実行できます。

  • シャドウ管理タスクには、システム・マネージャの特権が必要です。システム管理タスクの [構成] メニュー (システム管理, 構成 ページ) から、[接続性] 列の [シャドウサーバ設定] をクリックします。

  • シャドウ処理タスクには、オペレータの特権が必要です。システム処理 ページの [運用] メニューから、[シャドウサーバ] を選択して、[このシステムをシャドウ・サーバとして設定] をクリックします。

これらのシャドウイング・タスクをプログラムで実行する方法の詳細は、"インターシステムズ・クラス・リファレンス" の SYS.Shadowing.ShadowOpens in a new tab エントリの個々のメソッドの説明を参照してください。

シャドウのチェックポイント

システムは、シャドウイング・プロセスを通じて定期的にチェックポイントを作成します。シャドウのチェックポイントは、以下の意味を持つソース・ジャーナルのシャドウ・コピーにおける場所です。

  1. それ以前のすべてのレコードが、シャドウ・データベースに適用されていると見なされます。

  2. データベースの整合性に関して言えば、シャドウが一時停止した後のチェックポイントから再開するのが安全です。

SYS.Shadowing.ShadowOpens in a new tab クラスの CheckPointInfo メソッドを使用してチェックポイント情報を取得できます。

シャドウ管理タスク

システム管理, 構成, 接続性, シャドウサーバ設定 ページには、定義された各シャドウが表示されます。各シャドウには、名前、状態、ソース名とポート、開始ポイント、フィルタ、およびそのシャドウ構成で実行するアクション項目が示されます。必要なタスクを実行するには、以下のオプションをクリックします。

  • [編集] — 新しいシャドウの追加時に入力したフィールドの更新内容を許可します。これらの設定の詳細は、"シャドウの定義" を参照してください。シャドウが処理中の場合、編集は保存できません。

  • [開始] — 選択した開始ポイントからシャドウ処理を開始します。シャドウが停止している場合に利用できるオプションです。詳細は、"シャドウイングの開始" を参照してください。

  • [再開] — シャドウを停止した際にオープン・トランザクションをロールバックしたかどうかによって、適切なチェックポイントからシャドウ処理を開始します。詳細は、"シャドウイングの再開" を参照してください。

  • [停止] — シャドウ処理を停止します。シャドウが処理中または一時停止中の場合に利用できるオプションです。オープン・トランザクションをロールバックしたい場合、[オープン・トランザクションのロールバック] チェックボックスにチェックを付けます。詳細は、"シャドウイングの停止" を参照してください。

  • [削除] — シャドウ定義全体を削除します。削除するにはシャドウを停止する必要があります。

シャドウイングの開始

シャドウの定義を追加すると、システム管理, 構成, 接続性, シャドウサーバ設定 ページのシャドウのリストに表示されます。シャドウをこのページから開始できます。

  1. シャドウイング・プロセスを開始する前に、シャドウイングするソースのデータベースと宛先のデータベースを同期化していること、およびソース・データベースを対応する宛先データベースにマップ済みであることを確認します。

  2. 開始するシャドウ名の行の [開始] をクリックします。

  3. ソース・インスタンスの位置情報を確認後、[ソース・イベントの選択] をクリックして、シャドウイングを開始する位置を選択します。ソース・ジャーナル・ファイル・ディレクトリの使用可能なソース・イベントを示すページが表示されます。シャドウイングの開始前に、ソース・イベントを選択する必要があります。詳細は、"ソース・イベントの選択" を参照してください。

管理ポータルから、処理されているシャドウを開始しようとすると、以下の警告が表示されます。

*** WARNING ***
There is a checkpoint from previous shadowing session.
You might want to RESTART the shadow from that
checkpoint instead.
If you do START, the checkpoint and any remaining
shadow copies of journal files from previous shadowing
session will be deleted.
Are you sure you want to start shadowing?

この警告のように、既に処理しているシャドウを開始すると、Caché は、すべてのチェックポイントをクリアし、最初のチェックポイントとして選択した開始ポイントを保存します。また、このプロセスは、ソース・ジャーナル・ファイルの残りのすべてのシャドウ・コピーを削除し、ファイル間の重複の可能性にかかわらず、ソースから新しいコピーを取得します。新しい開始ポイントが、シャドウ・データベースの状態と一致するようにしてください。

1 つの Caché のインスタンス上で複数のシャドウを実行する場合は、"一般メモリ・ヒープの考慮事項" を参照して必要な調整の詳細を確認してください。

Important:

実行中のシャドウの一部であるデータベース ([処理] 状態のデータベース) をディスマウントしても、シャドウは中断されません。つまり、ディスマウントされたデータベースが遅れを取っても、その他のデータベースの更新は続行されます。ディスマウントされたシャドウ・データベースにより、コンソール・ログに深刻な状況であることを示すメッセージが表示されるため、"宛先データベースの同期" の説明に従って、シャドウが再マウントされた後にそのシャドウと再同期する必要があります。

ソース・イベントの選択

宛先のシャドウの開始 (または再開) では、ジャーナル対象データベースのシャドウイングを開始するデータ・ソース・サーバで、ジャーナル・ファイルからソース・イベントを選択する必要があります。

[ソース・イベントの選択] をクリックして、シャドウイングに有効な開始ポイントとなる、ソース・データベースのジャーナル・イベントのリストを表示します。このリストで、ソース・イベントのシャドウイングを開始する時間をクリックします。ソース・データベースと宛先データベースを同期化した後の開始ポイントを選択します。

例えば、システムはバックアップが成功すると、ジャーナル・ファイルを自動的に切り替えます。シャドウイング・プロセスを開始する前に、正しくバックアップしたソースのファイルを宛先のシャドウ・データベースでリストアすることにより、データベースを同期化します。シャドウで、システム管理, 構成, 接続性, シャドウサーバ設定 ページから [ソースイベントを選択] をクリックすると、以下のようなイベントのリストが表示されます。

generated description: shadow source events

この例で、ソースのバックアップが正常に終了した時点 (データベースが同期化された時点) でシャドウイングを開始するには、end of backup () というイベント日時 (22.05.08 08:30:54) をクリックします。

一般メモリ・ヒープの考慮事項

シャドウの宛先でのジャーナル読み取りやデータベース更新のプロセスは、一般メモリ・ヒープ・サイズ (gmheap とも呼ばれます) から割り当てられた共有メモリを介して通信します。Caché の複数のプロセスがこのメモリを使用し、Caché がこのメモリを割り当てる方法には非常に複雑なやり取りが必要であるので、Caché は、必要に応じて起動中に gmheap 割り当てを暗黙的に増加します。ほとんどの場合、手動で割り当てを調節する必要はありません。

Caché 実行中に同時またはほとんど同時に複数のシャドウを開始すると、gmheap 割り当てエラーが発生する場合があります。シャドウをグループとして開始することによって割り当てを向上させることができます。複数のシャドウをひとつずつ続けて開始 (または再開) すると、最初に開始するシャドウが、約半分の空き gmheap メモリを使用し、二番目に開始するシャドウが、残りの半分を使用するという具合に続きます。一方、複数のシャドウをグループとして開始すると、グループ内の各シャドウが空き gmheap メモリの 1/(N+1) を使用します (N は、グループ内のシャドウの数)。したがって、複数のシャドウをグループとして開始すると、gmheap からのメモリ割り当てにおいて考えられるエラーが回避されるだけでなく、シャドウ間でメモリが均等に割り当てられます。

詳細は、"インターシステムズ・クラス・リファレンス" の SYS.Shadowing.ShadowOpens in a new tab エントリの StartGroup メソッドを参照してください。

gmheap のサイズは、管理ポータルの システム管理, 設定, 追加設定, メモリ詳細 ページで調整できます。

シャドウイングの停止

シャドウイングを停止する際、[オープン・トランザクションのロールバック] チェックボックスにチェックを付けるまたはチェックを外すことによって、オープン・トランザクションをロールバックするかどうかを選択できます。

ロールバックなしの停止

ロールバックしないことを選択する場合、シャドウの一時停止と同様ですが、さらに権限が必要です。現在のチェックポイントを維持したいが、一時停止したシャドウのように再起動時に Caché が自動的にシャドウを再開することは望まない場合に、このオプションを選択できます。例えば、Caché を再起動し、起動した後、シャドウを開始する前に追加変更を行う必要がある構成変更を行う場合、このオプションを使用します。

ロールバックありの停止

このオプションは、主にディザスタ・リカバリのためのものです。ロールバックは、シャドウ・データベースを、ソースと同期化されてはいないものの、論理的に整合性のとれた状態に設定します。停止してロールバックしたシャドウの再開は行わないでください。誤ってロールバック・オプションを選択した場合でも回復できるようにするオプションがあるので、シャドウをソースと再同期させる必要はなくなります。

Caution:

ロールバックで停止したシャドウを再開すると、シャドウがロールバック前の状態のポイントを超えるまで、シャドウが不定の状態のままとなる場合があります。

シャドウイングの再開

シャドウイングを停止した場合、シャドウの開始を選択するほかに、シャドウを再開することもできます。オープン・トランザクションをロールバックしないことにした場合、シャドウを停止する前に取られた最後のチェックポイントから処理が開始されます。シャドウを停止した際にロールバックすることを選択した場合、シャドウの処理は、シャドウが停止した際に最初に開かれていたトランザクションの前のチェックポイントから開始します。シャドウの再開には、前回シャドウを停止した時から保持されているジャーナル・ファイルが再利用されます。

シャドウ処理タスク

シャドウのソース・サーバと宛先サーバの両方から、シャドウイング処理の状態を監視できます。管理ポータルから、システム処理, シャドウサーバ ページに移動します。このページでは、シャドウイング・プロセスをシャドウ側から監視するか、またはデータ・ソース側から監視するかによって、適切なオプションを選択します。以下のセクションでは、各側の内容を詳細に説明します。

宛先シャドウの管理

宛先シャドウからシャドウ・プロセスを監視および管理できます。[このシステムをシャドウ・サーバとして設定] をクリックして、このシャドウ・マシンのソース・サーバおよび各項目で実行できる関連アクションのリストを表示します。システム処理, シャドウサーバ, シャドウ ページに、定義済みの各シャドウが、以下のテーブルで説明する情報と共に一覧表示されます。

フィールド 説明
名前 シャドウの名前。
状態 このセクションで前述の、停止処理一時停止の 3 つのシャドウイング状態のいずれか。処理を開始する際、接続を試行中 の状態が表示される場合があります。
チェックポイント 安全に処理を再開できる、ジャーナルのシャドウ・コピーのオフセットの場所。
エラー シャドウの宛先で報告されたエラーの数。
オープン・トランザクション シャドウ上にオープン・トランザクションがあるかどうか、および、ある場合にはその数を示します。
待ち時間 ソースからコピーしたが、シャドウ・データベースにはまだ適用していないジャーナル・レコードをシャドウが処理する推定時間。

必要なタスクを実行するには、以下のオプションをクリックします。

  • [詳細] — 選択したこのシャドウイング構成の詳細が表示されます。

  • [再開] — シャドウ処理を再開します。これは一時停止しているシャドウ処理で利用できるオプションです。

  • [一時停止] — シャドウ処理を一時停止します。シャドウが処理中の場合に利用できるオプションです。

  • [エラー] — 宛先のシャドウで発生したエラーのリストを表示します。Caché は、シャドウの構成で指定したエラーの数の詳細を保持します。これらのエラーをクリアし、シャドウのリストに戻るには、[削除] をクリックします。

データ・ソースの監視

ソース・システムのシャドウ・プロセスは、システム処理, シャドウサーバ の [データソース] 列から監視することもできます。

  • [このシステムをデータ・ソースとして設定] をクリックすると、このデータ・ソースに定義されたシャドウのリストが表示されます。システム処理, シャドウサーバ, データソース ページに、定義済みの各シャドウが、以下のテーブルで説明する詳細と共に一覧表示されます。

    フィールド 説明
    ポート Caché ソース・インスタンスのスーパーサーバ・ポート番号 (プロセスID も表示)。
    シャドウ IP シャドウの宛先マシンの IP アドレス。
    ジャーナル 現在コピー中のジャーナル・ファイルのフル・ディレクトリ・パスおよびファイル名。
    PID ジャーナル・コピー・プロセスのプロセス ID 番号。
    待ち時間 シャドウがソース・ジャーナル・ファイルのコピーに追いつく推定時間。これは、宛先側で使用できる、シャドウ・デジャーナリングの待ち時間ではありません。
    シャドウイング・レート シャドウがソース・ジャーナル・ファイルをコピーする 1 秒あたりの速さ (KB 単位)。
  • [エラーログ] をクリックして、システム処理, シャドウサーバ, データソースエラー ページを表示します。このページには、このデータ・ソースについて報告されたエラーが一覧表示されます。

この情報をプログラム的に取得することもできます。詳細は、"インターシステムズ・クラス・リファレンス" の SYS.Shadowing.DataSourceOpens in a new tab のエントリを参照してください。

宛先データベースの同期または再同期

さまざまな理由で、シャドウ内の他のデータベースに遅れを取ったデータベース (例えば、宛先データベースがメンテナンスのためにディスマウントされた、またはバックアップからリストアされたなど) を再同期する必要が生じる場合があります。また、既存のシャドウ構成にデータベースを追加した場合、それがシャドウイングによりデジャーナルされたジャーナル・ファイルと同期していることを確認する必要があります。

ニーズに応じて、いくつかのオプションから選択できます。

新規または既存のソース・データベースの新規コピーを使用した同期

シャドウ・データベースを同期する最も単純な方法は、同期を必要とするソース・データベースのバックアップを作成する前にシャドウイングを一時停止することです。この方法で同期されたデータベースは、シャドウがバックアップの作成に対応するジャーナルの場所にキャッチアップされるまで、宛先のシャドウにおいて整合性のない状態になります。影響を受けるのは同期されるデータベースのみです。このアプローチの欠点は、ソース・データベースのバックアップを実行する適切な時点まで待機する必要があるということです。

この方法でデータベースを同期するには、以下の手順を実行します。

  1. シャドウの一時停止 (停止ではない) : "宛先シャドウの管理" の説明に従って、システム処理, シャドウサーバ, シャドウ ページに移動し、[一時停止] をクリックします。

  2. シャドウに新規データベースを追加する場合は、宛先およびソースでデータベースを作成し、次に "データベースのマップ" の説明に従って、ソース・データベースのマッピングをシャドウ構成に追加します。

    既存のソース・データベースを同期する場合は、ソース上でバックアップを作成して、それを宛先でリストアします。以前はシャドウに含まれていなかったソース上に既存のデータベースを追加する場合は、ソース上にバックアップを作成してそれを宛先でリストアし、"データベースのマップ" の説明に従って、ソース・データベースのマッピングをシャドウ構成に追加します。

    Note:

    以前のバックアップを使用する場合は、以下の手順のいずれかを実行する必要があります。

  3. シャドウを再開します。

ソース・データベースの既存のコピーを使用した同期

上記の手順で説明したソース・データベースの新規バックアップを作成するのではなく、同期を必要とするデータベースの既存のコピー (つまり、現在シャドウによってデジャーナルされているジャーナル・ファイルよりも古いデータベースのバージョン) を使用する必要がある場合もあります。例えば、以前のバックアップを使用して破損したソース・データベースをリストアしたり、新しいバックアップを作成できない環境下でシャドウにソース上のデータベースを追加したり、ディスマウント後に遅れを取った宛先データベースをキャッチアップしたりする場合などです。

このようなデータベースを同期する場合、いくつかのオプションがあります。最も単純な方法は、適切なジャーナル・ファイル (リストアするバックアップに対応するジャーナル・ファイル、または宛先データベースがディスマウントされたときにデジャーナルされたジャーナル・ファイル) を表すソース・イベントからシャドウ全体を再起動することです。ただし、シャドウ内の多数のデータベースから 1 つまたはいくつかのデータベースのみをキャッチアップする場合は、このオプションには以下の欠点があります。

  • この操作は、同期されるデータベースだけでなくシャドウ内のすべてのデータベースをデジャーナルするための時間を要する。

  • 宛先データベースは整合性のない状態になるため、すべてのデータベースがキャッチアップされるまで使用できない。

  • 必要なジャーナル・ファイルのいずれかが使用できないか破損している場合、シャドウをキャッチアップできず、その結果すべてのデータベースをシャドウ・ソースの新規バックアップからリストアする必要がある。

これらの欠点があっても、多数のデータベースで同期が必要な場合、または適用されるジャーナルの量が比較的少ない場合、適切なジャーナル・ファイルからシャドウ全体を再起動することは、通常その簡潔性ゆえに推奨される方法です。

適切なジャーナル・ファイルからシャドウ全体を再起動して同期する方法は、以下のとおりです。

  1. シャドウの停止 : システム管理, 構成, 接続性,シャドウサーバ設定 ページに移動して ("シャドウ管理タスク" を参照)、開いているトランザクションをロールバックすることなくシャドウを停止します (詳細は、"シャドウイングの停止" を参照)。

  2. バックアップをリストアするか、またはディスマウントされているデータベースをマウントします。

  3. シャドウ内にまだ含まれていないソース・データベースのバックアップをリストアした場合は、"データベースのマップ" の説明に従って、ソース・データベースのマッピングをシャドウ構成に追加します。

  4. シャドウの開始 : システム管理, 構成, 接続性, シャドウサーバ設定 ページに移動して ("シャドウイングの開始" を参照)、シャドウを開始します。ソース・イベントとして ("ソース・イベントの選択" を参照)、リストアしたバックアップに対応するジャーナル・ファイル、または宛先データベースがディスマウントされたときにデジャーナルされていたジャーナル・ファイルのいずれかを選択します。

代替方法にはより多くの手順が含まれますが、ジャーナル・データは同期中のデータベースにのみ適用されるため、前の手順に対して挙げられた欠点は最小限に抑えられます。シャドウ全体を同期せずに特定のデータベースをキャッチアップするには、以下の手順を実行します。

  1. シャドウの一時停止 (停止ではない) : "宛先シャドウの管理" の説明に従って、システム処理, シャドウサーバ, シャドウ ページに移動し、[一時停止] をクリックします。

  2. バックアップからデータベースをリストアするか、ディスマウントされているデータベースをマウントします。

  3. 以下のオプションのいずれかを選択します。

    • ^JRNRESTO ユーティリティを使用して、リストアしたバックアップに対応するジャーナル・ファイルまたは宛先データベースがディスマウントされたときにデジャーナルされていたジャーナル・ファイルのいずれかを開始して、必要なジャーナル・ファイルを各データベースにリストアします。このユーティリティの使用方法については、このドキュメントの “ジャーナリング” の章の "^JRNRESTO を使用したジャーナル・ファイルからのグローバルのリストア" を参照してください。

    • "シャドウイングの構成" で説明される手順に従って、影響を受けるデータベースのみを含む代替シャドウを構成して開始します。データベースがキャッチアップされたら、代替シャドウを停止して、代替シャドウ構成を削除します。

  4. シャドウ内にまだ含まれていないソース・データベースのバックアップをリストアした場合は、"データベースのマップ" の説明に従って、ソース・データベースのマッピングをシャドウ構成に追加します。

  5. シャドウを再開します。

シャドウイングの災害復旧への使用

Caché 高可用性ガイド” の “ミラーリング” の章で説明されているとおり、自動フェイルオーバーを組み合わせた Caché ミラーリングでは、計画的および計画外停止に対応できる効果的で低コストの高可用性ソリューションを実現できます。ミラーリングは災害復旧機能を完全装備しています。

しかし、ミラーリングが使用されていない場合、Caché シャドウイングはオフサイトの災害復旧に適した低コストのソリューションです。これは、オペレーティング・システムおよびコンピュータ・ハードウェアのメーカーによって提供されるさまざまな Caché 互換の高可用性フェイルオーバー方法のいずれかと組み合わせて使用することができます (“Caché 高可用性ガイド” の “システム・フェイルオーバーの方法” の章を参照してください)。災害復旧におけるシャドウイングの利点には、以下が含まれます。

  • データ損失が通常少ない。

  • 主要な場所から離れた場所にシャドウを置くことができます。

  • 復旧時間が通常は数分足らずである。

このセクションでは、以下のトピックについて説明します。

シャドウ先への計画的なプロダクションの移動

シャドウイングは、例えばプロダクション・ホスト・システムでメンテナンスを実行するなどの目的で、プロダクション・データベースの計画的な一時的再配置を実行するのに非常に適しています。なぜなら、シャドウィングには、シャドウ先への計画的なプロダクションの切り替えを実行する際に、シャドウ先がキャッチアップを行えるようにするための組み込みメカニズムが含まれているからです。

シャドウ先への計画的なプロダクションの移動を実行するには、以下の手順を実行します。

  1. プロダクション・サーバ (シャドウ・ソース) でアプリケーションの動作を停止します。

  2. シャドウ・ソースの Caché インスタンスを、例えば ccontrol stop コマンドを使用して、正常にシャットダウンします (“Caché システム管理ガイド” の “Caché 複数インスタンスの使用法” の章にある “Caché インスタンスの制御” を参照してください)。

    シャドウ・ソースのシャットダウンの実行中に、シャットダウン・プロセスはシャドウ先がソースから現行のすべてのジャーナル・ファイルを受け取るのを待機します。その後、それらのシャドウ先にサービスを提供しているジョブを終了します。ソースが宛先に関する情報を取得しようとするときにエラーが発生する場合、または待機期間内にすべてのジャーナル・ファイルが宛先に受け取られたという確認をソースが受信しない場合、コンソール・ログにメッセージが書き込まれます (“Caché 監視ガイド” の “管理ポータルを使用した Caché の監視” にある “ログ・ファイルの監視” を参照してください)。したがって、ソースのコンソール・ログを調べて、そのようなメッセージがないことを確認することにより、切り替え対象の宛先がソースとキャッチアップしていることを確認できます。

  3. シャドウ先がシャドウ・ソースからすべてのジャーナル・データのデジャーナリングを完了したことを確認し、シャドウ先のシャドウイング停止手順に従います。

  4. 宛先で Caché をシャットダウンし、以下のいずれかを実行します。

    • シャドウ先の IP アドレスと完全修飾ドメイン名 (FQDN) を、プロダクションの移動元のシャドウ・ソースと完全に一致するように変更します。

    • シャドウ先の IP アドレスを指すように Web アプリケーションの DNS を変更します。

  5. 宛先で Caché を再起動します。

  6. 新しいプロダクション・サーバ (シャドウ先) でアプリケーションの動作を再開します。

前の手順ですべてのジャーナル・データが元のシャドウ・ソースから受け取られ、宛先で完全にデジャーナルされた (つまり、データ損失がない) ことが確実である場合、元の構成に戻ることができます。ただし、その際には、計画的停止が終了しており、元のシャドウイング方向を逆にする (つまり、現在のプロダクション・インスタンス (以前の宛先) をシャドウ・ソースとして構成し、以前のソースを宛先として構成する) ことにより、元のプロダクション・インスタンスが再起動されている必要があります。必要に応じて、“シャドウイングの構成” のセクションの説明に従ってください。その後、前の手順を反対方向で繰り返すことができます。

シャドウ先を使用した災害復旧

ディスクの障害、ハードウェアやソフトウェアの障害によるデータベースの品質低下、または主要な物理装置の故障からの回復手段として、シャドウイングは優れています。(ただし、悪意によるグローバルの削除には対応できません。)Caché シャドウ・サーバは、さまざまな TCP ネットワークを持つ小規模なサーバ上で、複数の異なるプラットフォームからジャーナルを受け取ることができます。シャドウイングでは宛先で発生した論理的な更新のみを扱うので、構造的な問題が拡大するリスクを排除できます。ただし、Caché シャドウイングが災害復旧方法に最適かどうかを決定する際には、プロダクション・サーバの障害によりシャドウイングが中断された場合の以下の制限を考慮する必要があります。

  • シャドウ先は、プロダクション・サーバのパフォーマンスに影響しないように、ソース・ジャーナルを非同期的に適用します。これにより、一般的には数秒ですが、シャドウ先に適用されるデータに、待ち時間が発生します。その結果、シャドウ先データベースを使用する場合、わずかな時差が生じることになります。シャドウ先とシャドウ・ソースの接続が継続的に切断された場合、この待ち時間が増加する可能性があります。Caché は、災害復旧中に宛先データベースを使用するリスクを判別できるようにするため、シャドウ先の状態と進行状況を監視するメカニズムを提供しています。

  • 開いたままのトランザクションが残る可能性があります。シャドウを停止する際、未完了のトランザクションをロールバックするかどうかを選択できます。これは、災害時のソース・ジャーナル・ファイルの状態により異なる場合があります。

プロダクション/シャドウ・ソース・システムがアプリケーション・サーバとして動作している場合、リカバリを高速にするために、同一のアプリケーションを災害復旧シャドウ先にインストールしてください。

災害復旧にシャドウ先を使用するには、前のセクションの手順を使用できます。その際に、シャドウ・ソースが正常にシャットダウンされたのではなく、障害が発生したか、または使用不可になったと想定し、障害発生前にシャドウ先がシャドウ・ソースから受け取ったすべてのジャーナル・データのデジャーナリングを完了したことを確認する手順から開始します。その後、シャドウ先でシャドウイング停止手順に従います。前述のように、シャドウイングの停止中にオープン・トランザクションをロールバックすることを選択できます。シャドウイングを停止したら、災害復旧に宛先データベースを使用するリスクを評価できます。

計画外停止の状況では、データ損失の発生はほぼ確実であるため、前のセクションにあるように、元のシャドウ・ソースがキャッチアップ動作を回復し、元の構成に戻ったら、シャドウイングの方向を逆にすることはできません。また、この状況では、“宛先データベースの同期または再同期” で説明されているように、すべてのデータベースを完全に再同期する必要があります。

FeedbackOpens in a new tab