複数のシステムでのデータ整合性
ミラーリング、またはその他のメカニズムを使用して、別のシステムでデータのコピーを保持する場合、2 つのシステム間のデータの整合性を確認することができます。DataCheck では、この確認、および一時的な不一致の再確認も行います。
DataCheck の概要
DataCheck は、2 つのシステム (DataCheck のソースと DataCheck の宛先) にあるデータの状態を比較し、それらが一致しているかどうかを判断するメカニズムを提供します。チェックのすべての構成、動作制御および結果は、宛先システム上で提供され、ソース・システムは基本的に受動的です。
DataCheck の宛先として機能する InterSystems IRIS® のインスタンスで、DataCheck の宛先構成を作成する必要があります。同じインスタンスに複数の宛先構成を作成して、複数のソース・システムに対してデータをチェックするように構成する (または、1 つのソースに対してさまざまなデータをチェックするように構成する) ことができます。DataCheck を使用してミラーの整合性をチェックする場合の詳細は、"ミラー用の DataCheck の構成" を参照してください。
DataCheck のトピックについては、以下のサブセクションで詳しく説明します。
DataCheck クエリ
宛先システムは、DataCheck “クエリ” と呼ばれる作業ユニットをソース・システムに送信します。各クエリは、データベース、最初のグローバル参照、ノード数、およびターゲット・グローバル参照を指定します。両方のシステムで、最初のグローバル参照から始めて指定数のグローバル・ノードを検索し、グローバル・キーと値をハッシュすることにより、回答を計算します。回答が一致した場合、宛先システムはその結果を記録し、ノード数を増やし、最初のグローバル参照を高度化してそのクエリを再送信します。回答が一致しなかった場合、クエリは、その不一致が最小の構成クエリ・サイズに隔離されるまでノード数を減らして再送信されます。
まだ処理されていないグローバル (添え字の包含/除外範囲が使用されている場合はグローバル範囲)、DataCheck により現在処理されているアクティブ・クエリなど、宛先システムによって送信されたクエリに関する情報を表示するには、^DATACHECK ルーチンの [詳細表示] サブメニューの [クエリ表示] オプションを使用できます。
DataCheck ジョブ
各クエリへの回答は、ソース・システムと宛先システムの両方で実行される DataCheck ワーカ・ジョブにより計算されます。ワーカ・ジョブの数は、宛先システムの動的に調整可能なパフォーマンス設定により決定されます。詳細は、この章の “パフォーマンスに関する考慮事項” を参照してください。
ワーカ・ジョブに加え、各システムにはその他のジョブがあります。宛先システムでは、さらに以下のジョブが実行されます。
-
マネージャ・ジョブ — クエリのロードと配信、クエリの回答の比較、およびワークフロー・フェーズでの進捗管理を行います。このジョブは、ソース・システムのマネージャ・ジョブに接続されます。
-
レシーバ・ジョブ — ソース・システムからの回答を受信します。
ソース・システムでは、さらに以下のジョブが実行されます。
-
マネージャ・ジョブ — 宛先システムのマネージャ・ジョブから要求を受信し、これらをワーカ・ジョブに送信します。
-
センダ・ジョブ — ワーカ・ジョブからのクエリの回答を受信し、これらを宛先システムのレシーバ・ジョブに送信します。このジョブは、宛先システムのレシーバ・ジョブに接続されます。
DataCheck 結果
チェックの結果では、以下のいずれかの状態のグローバル添え字範囲をリストします。
-
[不明] — DataCheck は、まだこの範囲にチェックを付けていません。
-
[一致] — DataCheck は、この範囲が一致していることを確認しました。
-
[不一致] — DataCheck は、この範囲内で不一致を検出しました。
-
[照合不一致] — ソース・システムと宛先システムの間の照合が異なることがグローバルで検出されました。
-
[除外] — この範囲はチェックから除外されています。
現在のチェック結果および前回のチェックの最終結果は、宛先システムで表示することができます。詳細は、SYS.DataCheck.RangeListOpens in a new tab クラスを参照してください。 DataCheck 内のすべての添え字範囲は、範囲の最初を含みますが、範囲の最後を含みません。添え字範囲の詳細は、この章の "チェックするグローバルおよび添え字範囲の指定" を参照してください。
チェック結果の例を次に示します。
c:\InterSystems\iris\mgr\mirror2 ^XYZ Unmatched
^XYZ --Matched--> ^XYZ(3001,4)
^XYZ(3001,4) --Unmatched--> ^XYZ(5000)
^XYZ(5000) --Matched--> [end]
この結果は、^XYZ から ^XYZ(3001,4) までの範囲 (^XYZ(3001,4) は含まない) のノードが一致し、^XYZ(3001,4) から ^XYZ(5000) までの範囲 (^XYZ(5000) は含まない) に少なくとも 1 つの不一致があることを示しています。 ^XYZ(5000) から最後までの範囲のノードは一致しています。
不一致範囲に含まれる不一致の最小数と頻度は、最小クエリ・サイズによって異なります ("パフォーマンスに関する考慮事項" を参照)。例えば、この例で最小クエリ・サイズが既定値の 32 に設定されている場合、^XYZ(3001,4) から ^XYZ(5000) までの範囲には、32 個のノードごとに少なくとも 1 つの不一致があります。この範囲内で連続して 33 個以上のノードに不一致がなかった場合、別個の一致範囲として結果に表示されます。
DataCheck ワークフロー
チェック中にデータが変更され、一時的な不一致が記録される場合があります。このような一時的な不一致を解消するため、再チェックが必要となることがあります。宛先システムには、グローバルのチェック方法を定義するワークフローがあります。
一般的なワークフローは、フェーズ #1 の “チェック” フェーズで始まります。(フェーズ #1 は、常にチェック・サイクルの論理的な開始ポイントとして定義する必要があります。なぜなら、次のセクションで説明されるように、フェーズ #1 は、ワークフロー・タイムアウトや ^DATACHECK ルーチンの [開始] ダイアログによって、最初からの "リセット" を示すために使用されるからです。)このフェーズの最初に、最後に完了した結果として現在の結果セットが保存され、新しいアクティブな結果セットが構築されます。DataCheck は、チェックに含めるよう指定されたすべてのグローバルの最初の受け渡しを行います。
チェック・フェーズに続き、通常は必要に応じた繰り返し回数で “不一致の再チェック” フェーズが指定されます。一時的な不一致を解消するため、繰り返しのたびに、一致しないすべての範囲を再チェックします。
ワークフローの各フェーズが完了すると、DataCheck は次のフェーズに移ります。最後のフェーズが完了すると、ワークフローは暗黙的にフェーズ #1 から再度開始されます。“停止” フェーズはすべての DataCheck ジョブをシャットダウンし、手動で次のフェーズが指定されるまで “アイドル” フェーズは DataCheck を待機させます。
DataCheck の開始、停止、および再接続
DataCheck はいつでも停止および開始できます。DataCheck を開始すると、その停止位置からワークフローを再開します。さらに、現在のフェーズに続いたり現在のフェーズを中止する別のワークフロー・フェーズを、いつでも指定することができます。
チェック中に DataCheck の停止、切断、またはミラーリングによる一時停止が発生する場合、ルーチンにより、システムが停止した理由、停止したフェーズ、および開始時に行われる操作 (例えば、再開処理、次のフェーズへの移動、ユーザ要求によるフェーズの変更、ワークフロー・タイムアウトによるフェーズ #1 の再開など) が報告されます。 開始時に、DataCheck が現行フェーズの処理を再開しようとしたり、フェーズ #1 以外のフェーズに移行したりしようとする場合、以下の例に示すように、フェーズ #1 の再開というオプションが表示されます。
Option? 4
Configuration Name: test
State: Stopped due to Stop Requested
Current Phase: 1 - Check
Workflow Phases:
1 - Check
2 - RecheckDiscrepancies, Iterations=10
3 - Stop
(restart)
Workflow Timeout: 432000
New Phase Requested: 2
Abort Current Phase Requested
DataCheck is set to abort the current phase and transition to phase #2.
You may enter RESTART to restart at phase #1
Start Datacheck configuration 'test'? (yes/no/restart)
DataCheck が切断され、長時間経過した後でしか再接続しない場合は、代わりにワークフローのフェーズ #1 から再開する方が望ましい場合があります。例えば、システムがチェックの途中で数週間切断され、その後チェックが再開された場合、その結果の値は疑わしいものになります。なぜなら、一部は 2 週間前から、一部は現時点から収集されたものであるためです。このワークフローには、時間を秒単位で指定する Timeout プロパティが含まれ、その時間内であれば、DataCheck は部分的に完了したワークフロー・フェーズを再開できます。timeout を超えると、DataCheck は、次回実行状態になったときにフェーズ #1 から再開します。既定値は 5 日間 (432,000 秒) です。これは、この DataCheck 構成により大量のデータがチェックされ、正常に完了するのに数時間から数日かかる可能性があるという想定に基づいています。そのため、より短時間でチェックが完了する構成の場合、より小さな値にすることをお勧めします。ゼロを指定すると、タイムアウトは行われません。
前述のとおり、フェーズ #1 は、常にチェック・サイクルの論理的な開始ポイントとして定義する必要があります。なぜなら、前述の例で示されたように、フェーズ #1 は、ワークフロー・タイムアウトや ^DATACHECK ルーチンの [開始] ダイアログによって、最初からの "リセット" を示すために使用されるからです。
ミラー用の DataCheck の構成
DataCheck の宛先構成の作成時にシステムがミラーのメンバである場合 ("高可用性ガイド" の “ミラーリング” の章を参照)、ミラーリングされるデータをチェックするように DataCheck を構成できるオプションが提供されます。このオプションを選択する場合、DataCheck のソースとして機能するミラー・メンバを選択するだけで、構成の残りは自動的に設定されます。
チェックの開始時、ミラーリングされるデータベースはすべてチェックに含まれるので、データベースを個々にマップする必要はありません。また、"チェックするグローバルおよび添え字範囲の指定" の説明に従って、チェックするグローバルを指定したり、データベース全体を除外することができます。ミラーベースの DataCheck 構成を、ミラーリングされないデータベースのチェックに使用できませんが、この目的で別のミラーベースでない DataCheck 構成を作成することはできます。
このセクションでは、以下の項目について説明します。
ミラー内での DataCheck の計画
DataCheck の各宛先構成は、それぞれ 1 つのソース・ミラー・メンバに接続します。ソース・メンバを変更することはできませんが、追加の DataCheck 構成を作成して、複数のソース・ミラー・メンバ (または、同じソースのさまざまなデータ・セット) に対してチェックを行うことができます。
このセクションでは、以下のメンバ固有のサブセクションについて説明します。
フェイルオーバー・メンバ間のデータのチェック
フェイルオーバー・ミラー・メンバ間でチェックを行う場合、チェックは通常、以下の理由で DataCheck の宛先として構成されたバックアップ・フェイルオーバー・メンバを使用して実行されます。
-
DataCheck の宛先は、チェックの結果やその他の状態情報 (それ自体がジャーナリングしたもの) を保持するために、ソースよりも多くのリソースを使用します。
-
バックアップ・フェイルオーバー・メンバが DataCheck の宛先である場合、プライマリ・フェイルオーバー・メンバが停止しても、バックアップ上で結果を確認できます。
Note:ほとんどの構成では、フェイルオーバーが既に発生し、結果の確認はたいていフェイルオーバーの決定後に行われるということが前提となっています。
DataCheck がソースへの接続を失ったときは必ず、ソース・マシンが再度使用可能になるのを無限に待機して、接続を再試行します。ミラーベースの DataCheck がプライマリ・フェイルオーバー・メンバでなかったときに宛先で開始され、その後そのメンバがプライマリになった場合、DataCheck は自動的に再接続を試みるのではなく、停止します。これにより、DataCheck がプライマリで誤って実行されることがなくなります。再接続の詳細は、この章の "DataCheck の開始、停止、および再接続" を参照してください。
非同期メンバのデータのチェック
ミラーベースの DataCheck がフェイルオーバー・メンバと非同期メンバ間のチェックを行う場合は、非同期メンバが宛先となることが一般的です。これは、フェイルオーバー・メンバ間のチェックに関する前述の理由と同じですが ("フェイルオーバー・メンバ間のデータのチェック" を参照)、主として障害復旧時にチェックの結果を非同期メンバに格納する必要があるためです。
2 つのフェイルオーバー・メンバがある場合、ソースである 2 つのフェイルオーバー・メンバのそれぞれに対して、非同期メンバで DataCheck の宛先構成を 1 つ作成すると一般的に便利です。^DATACHECK ルーチンでは、両方を自動的に作成できるだけでなく、2 つのうちどちらをプライマリ・フェイルオーバー・メンバとするかについてそれぞれの動作を設定できます。
DataCheck の各構成には、プライマリ・メンバとしてソース・フェイルオーバー・メンバの状態に基づいてその動作を制御するための設定が含まれます。設定は以下のとおりです。
-
[制限なし]
フェイルオーバー・メンバ間で DataCheck を実行する必要がなく、両方のフェイルオーバー・メンバをチェックするエージェントとして非同期メンバを使用するため、両方を制限なしでチェックすることが適している場合です (既定)。
-
[プライマリのみチェック] (DataCheck のソースがプライマリになるまで一時停止)
プライマリがこの非同期メンバのデータの正当なソースであるため、プライマリに対してのみチェックを行うことが適している場合です。
-
[プライマリをチェックしない] (DataCheck のソースがプライマリの場合は一時停止)
プロダクション・プライマリ・システム上のリソースを消費しないため、バックアップに対してチェックを行うことが適している場合です。
システム管理者によって手動で (必要に応じて) 実行される DataCheck 構成の場合、これらの設定は特に重要でない場合があります。これらは、継続的に (または、ほぼ継続的に) 実行される DataCheck 構成の場合により重要になります。
特別な関係がなくても、いずれのメンバももう 1 つのメンバをチェックできます。例えば、両方のフェイルオーバー・メンバをチェックするために非同期メンバを使用している場合でも、その他の非同期メンバに対するチェックのソースとして使用できます。これにより、他の非同期メンバを使用してフェイルオーバー・メンバに対するチェックを行う必要がなくなります。
チェックするグローバルの選択
DataCheck の実行時に存在するミラーリングされるデータベースは、すべて自動的にチェックされます。チェックするグローバルおよびデータベースの制御方法の詳細は、この章の "チェックするグローバルおよび添え字範囲の指定" を参照してください。
DataCheck のセットアップ手順
^DATACHECK ルーチンにより DataCheck の宛先システムを設定し、管理ポータルにより DataCheck のソース・システムを有効にすることができます。新しい DataCheck システムを設定するには、以下を実行します。
-
新しい宛先システムを作成します。
-
宛先システムの構成を、以下のように設定または編集します。
-
ミラーベースでない構成の場合、ソース・システムへの TCP 接続用に、ホスト名/IP アドレス、スーパーサーバ・ポート、およびオプションの TLS 構成を指定します。
ミラーベースの構成の場合、チェックするミラー・メンバを指定します。
-
ミラーベースでない構成の場合、チェックするデータベース一式とソース・システム上の対応するパスを指定します。
ミラーベースの構成の場合、ミラーリングされるデータベースがすべて含まれます。
-
必要に応じて、どのデータベース、グローバル、およびグローバル範囲を含めるか、あるいは除外するかをきめ細かく制御するため、グローバル選択マスクおよび添え字範囲を指定します。詳細は、この章の "チェックするグローバルおよび添え字範囲の指定" を参照してください。
-
必要に応じて、動的に調整可能な設定を調整し、チェックのパフォーマンスおよびシステム・リソースの使用量を制御します。詳細は、この章の "パフォーマンスに関する考慮事項" を参照してください。
-
必要に応じて、チェック方法を指定するワークフローを変更します。詳細は、この章の “DataCheck ワークフロー” を参照してください。
-
-
ソース・システムで %Service_DataCheck サービスを有効にします。詳細は、この章の “DataCheck サービスの有効化” を参照してください。
-
チェックを制御する宛先システムを起動します。
-
以下のように、チェックの状態を監視します。
-
ソース・システムで、状態とログ・ファイルを表示します。
-
宛先システムで、状態とログ・ファイルのほか、クエリと結果のリストも表示します。
-
DataCheck サービスの有効化
ソース・システムで実行している InterSystems IRIS インスタンスの管理ポータルから、データ・チェック・サービスを有効にし、必要に応じて接続を制限します。
-
管理ポータルの [サービス] ページ ([システム管理] > [セキュリティ] > [サービス]) に移動します。
-
サービス名のリストで [%Service_DataCheck] をクリックし、データ・チェック・サービス・プロパティを編集します。
-
[サービスの有効化] チェック・ボックスにチェックを付けます。[保存] をクリックする前に、このデータベース・ソースに接続できる IP アドレスを制限することもできます。その場合は、以下の手順を実行してから [保存] をクリックします。
Note:ミラーをチェックするように構成した場合、DataCheck は、TLS を使用するようにミラーが設定されていれば TLS を使用します (詳細は、この章の "ミラー用の DataCheck の構成" を参照してください)。ただし、DataCheck サービスは、ミラー・メンバに対してのみアクセスを自動的に制限することはありません。他のシステムからの DataCheck 接続を制限する場合、%Service_DataCheck サービスに対して [許可済みの接続元] を構成する必要があります。
-
必要に応じて、サービスへのアクセスを制限するため、[許可済みの接続元] ボックス (以前入力したサーバ・アドレスが表示されています) で、[追加] をクリックし、[IP アドレス] を追加します。使用するすべてのアドレスを入力し終えるまで、この手順を繰り返します。
これらのアドレスは、該当する行の [削除] をクリックして個別に削除できます。また、[すべて削除] をクリックしてすべてのアドレスを削除し、どのアドレスからも接続を許可することもできます。
チェックするグローバルおよび添え字範囲の指定
DataCheck では、以下に詳細を示すオプションを使用して、チェックに含めたりチェックから除外するグローバル名および添え字範囲を指定できます。
グローバルおよび添え字範囲を指定する際、リテラル値のみがグローバル名および添え字として受け入れられます。
-
[[マップされた/ミラーリングされる] 全データベースの全グローバルをチェックする] — ミラーベースでない構成では、すべてのマップされたデータベースの全グローバルをチェックし、ミラーベースの構成では、すべてのミラーリングされるデータベースの全グローバルをチェックします。
-
[一部のグローバル/データベースを含む/除外する] — 指定したマスクに基づいて選択されたデータベースのグローバルをチェックします。添え字は許可されません。
マスク、またはコンマ区切りのマスクのリストを以下のように追加または編集できます。
-
* — すべてのグローバルをチェックします (既定)。
-
最後の文字に * — 前にある文字 (列) で始まるすべてのグローバルをチェックします。
-
マスクの前の ' — グローバルをチェックから除外します。
以下はその例です。
-
ABC* — ABC で始まるすべてのグローバル名
-
A:D — A から D のすべてのグローバル名
-
A:D,Y* — A から D、および Y で始まるすべてのグローバル名
-
*,'C*,'D* — C または D で始まるグローバルを除くすべてのグローバル
-
'* — すべてのグローバルを除外します。
特定のデータベースのグローバル選択マスクを定義するだけでなく、グローバル選択マスクが定義されていないデータベースに対して使用される “既定のグローバル選択マスク” を明示的に設定することもできます。当初、既定のマスクは * に設定されます。
Note:ミラーベースの DataCheck の場合、新しく追加されたミラーリングされるデータベースが次回のチェックに含まれます。そのため、新しく追加されたミラーリングされるデータベースが自動的にチェックされないようにする場合は、既定のマスクを '* に設定します。
例えば、マスクが定義されていないすべてのデータベースに対する既定のマスク (*,'^DontCheckMe) を指定すると同時に、特に USER および USER2 データベースに対してグローバル選択マスク (A:D) を指定するには、^DATACHECK ルーチンの [構成の編集] サブメニューから以下を実行します (この章の "^DATACHECK ルーチン" を参照してください)。
1) Import Settings from a Shadow 2) Connection Settings 3) Database Mappings 4) Globals to Check 5) Performance Settings 6) Manage Workflow Option? 4 1) Check All Globals in All Mapped Databases 2) Include/Exclude Some Globals/Databases 3) Include/Exclude Some Globals/Databases and Subscript Ranges Option? 1 => 2 Save changes? Yes => 1) Options for selecting globals to check 2) Set default include/exclude mask for databases with no mask defined 3) Add or remove include/exclude mask for databases 4) View include/exclude masks Option? 2 Enter a mask string, * to include all, '* to exclude all, ? for help Mask: * => *,'^DontCheckMe Save changes? Yes => 1) Options for selecting globals to check 2) Set default include/exclude mask for databases with no mask defined 3) Add or remove include/exclude mask for databases 4) View include/exclude masks Option? 3 1) C:\InterSystems\IRIS\mgr\docbook\ [no mask defined, use default] 2) C:\InterSystems\IRIS\mgr\user\ [no mask defined, use default] 3) C:\InterSystems\IRIS\mgr\user2\ [no mask defined, use default] Database (multiple selections allowed): 2,3 Enter a mask string, * to include all, '* to exclude all, ? for help ! to delete this mask and revert to default Mask: A:D 1) C:\InterSystems\IRIS\mgr\docbook\ [no mask defined, use default] 2) C:\InterSystems\IRIS\mgr\user\ [A:D] 3) C:\InterSystems\IRIS\mgr\user2\ [A:D] Database (multiple selections allowed): Save changes? Yes => 1) Options for selecting globals to check 2) Set default include/exclude mask for databases with no mask defined 3) Add or remove include/exclude mask for databases 4) View include/exclude masks Option?
-
-
[一部のグローバル/データベースおよび添え字範囲を含む/除外する] — [一部のグローバル/データベースを含む/除外する] オプションと同じタスクを実行できるだけでなく、このオプションでは、特定のグローバルの添え字範囲を識別することができます。含めるようにマークされたグローバル添え字範囲は、そのグローバルがグローバル選択マスクに含まれるかどうかに関係なく含められます。DataCheck 内のすべての添え字範囲は、範囲の最初を含みますが、範囲の最後を含みません。
Note:DataCheck では、処理の過程で除外範囲のデータに一致が検出された場合、そのデータが一致としてマークされる可能性があります。 一方、除外された範囲の不一致がマークされることはありません。
例えば、上記の例の続きで、USER2 データベースに対し、グローバル選択マスク (A:D) を指定したとします。以下のようにプロンプトに応答して、^NAME グローバルに添え字範囲を含めることができます。
1) Options for selecting globals to check 2) Set default include/exclude mask for databases with no mask defined 3) Add or remove include/exclude mask for databases 4) View include/exclude masks Option? 1 1) Check All Globals in All Mapped Databases 2) Include/Exclude Some Globals/Databases 3) Include/Exclude Some Globals/Databases and Subscript Ranges Option? 2 => 3 Save changes? Yes => 1) Options for selecting globals to check 2) Set default include/exclude mask for databases with no mask defined 3) Add or remove include/exclude mask for databases 4) View include/exclude masks 5) Add/Edit Subscript Ranges for a Global 6) Delete All Subscript Ranges for a Global 7) Delete All Subscript Ranges 8) View Defined Subscript Ranges Option? 5 1) C:\InterSystems\IRIS\mgr\docbook\ 2) C:\InterSystems\IRIS\mgr\user\ 3) C:\InterSystems\IRIS\mgr\user2\ Database: 3 C:\InterSystems\IRIS\mgr\user2\ Global Name: ^NAME There are no subscript ranges defined for this global. You may start by including all or excluding all subscripts. Answer YES to include, NO to exclude: no C:\InterSystems\IRIS\mgr\user2\ ^NAME ^NAME --Excluded--> [end] From (inclusive): ? Enter a global reference with or without subscripts or null for end. The leading ^ may be omitted. For subscripted references the entire global name may be omitted and simply begin with open parentheses From (inclusive): (10) To (exclusive): (20) Answer YES to include, NO to exclude: yes C:\InterSystems\IRIS\mgr\user2\ ^NAME ^NAME --Excluded--> ^NAME(10) ^NAME(10) --Included--> ^NAME(20) ^NAME(20) --Excluded--> [end] From (inclusive): Continue editing subscript ranges for this global? Yes => no C:\InterSystems\IRIS\mgr\user2\ ^NAME ^NAME --Excluded--> ^NAME(10) ^NAME(10) --Included--> ^NAME(20) ^NAME(20) --Excluded--> [end] Save changes? Yes => 1) Options for selecting globals to check 2) Set default include/exclude mask for databases with no mask defined 3) Add or remove include/exclude mask for databases 4) View include/exclude masks 5) Add/Edit Subscript Ranges for a Global 6) Delete All Subscript Ranges for a Global 7) Delete All Subscript Ranges 8) View Defined Subscript Ranges Option?
マスク情報は、以下のように表示できます。
Option? 4 The default include/exclude mask is: *,'^DontCheckMe The following databases are using non-default global selection criteria C:\InterSystems\IRIS\mgr\user\ A:D C:\InterSystems\IRIS\mgr\user2\ * Has additional global subscript ranges to include/exclude that apply regardless of whether those globals are included in this mask. A:D 1) Options for selecting globals to check 2) Set default include/exclude mask for databases with no mask defined 3) Add or remove include/exclude mask for databases 4) View include/exclude masks 5) Add/Edit Subscript Ranges for a Global 6) Delete All Subscript Ranges for a Global 7) Delete All Subscript Ranges 8) View Defined Subscript Ranges Option?
マスク情報には添え字範囲の記述が含まれているため、その情報は以下のように表示できます。
Option? 8 Device: Right margin: 80 => DataCheck Destination System: GLOBTEST Global Selection Subscript Ranges C:\InterSystems\IRIS\mgr\user2\ ^NAME ^NAME --Excluded--> ^NAME(10) ^NAME(10) --Included--> ^NAME(20) ^NAME(20) --Excluded--> [end] 1) Options for selecting globals to check 2) Set default include/exclude mask for databases with no mask defined 3) Add or remove include/exclude mask for databases 4) View include/exclude masks 5) Add/Edit Subscript Ranges for a Global 6) Delete All Subscript Ranges for a Global 7) Delete All Subscript Ranges 8) View Defined Subscript Ranges Option?
^DATACHECK ルーチン
^DATACHECK ルーチン (%SYS ネームスペース内) を使用して、データ・チェックを構成および管理できます。任意のプロンプトでヘルプを表示するには、? を入力します。
^DATACHECK ルーチンを開始するには、以下を実行します。
-
ターミナルで、以下のコマンドを入力します。
set $namespace = "%SYS" %SYS>do ^DATACHECK
-
メイン・メニューが表示されます。選択番号を入力します。ルーチンを終了するには Enter キーを押します。
1) Create New Configuration 2) Edit Configuration 3) View Details 4) Start 5) Stop 6) Delete Configuration 7) Incoming Connections to this System as a DataCheck Source Option?
Note:オプション 2 ~ 6 では、複数の宛先システムを作成した場合、アクションを実行する宛先システムを選択できるようにリストが表示されます。
メイン・メニューでは、以下のテーブルのように実行する DataCheck タスクを選択できます。
オプション 説明 1) 新規構成の作成 [新規構成の作成] プロンプトによって、新しい DataCheck 宛先システム構成の名前が要求されます。
2) 構成の編集 [構成の編集] サブメニューが表示されます。
3) 詳細表示 [詳細表示] サブメニューが表示されます。
4) 開始 宛先システムを起動または再開します。再開する場合は、停止位置から再開されます。
5) 停止 宛先システムを停止します。停止した後に宛先システムを再開する場合、宛先システムは停止した位置から再開されます。
6) 構成の削除 指定した宛先システム構成を削除します。
7) DataCheck のソースであるこのシステムへの着信接続 [DataCheck のソースであるこのシステムへの着信接続] サブメニューが表示されます。
Note:ソース・システムでは、このオプションを選択する必要があります。
新規構成の作成
このサブメニューでは、宛先システムを構成できます。このオプションを選択すると、以下のプロンプトが表示されます。
Configuration Name:
ミラー・メンバでないシステムで DataCheck の構成を作成する場合、[設定の編集] サブメニューが表示されます。"ミラーベースでないシステムでの DataCheck の構成の編集" の説明に従って、手動で構成を完了してください。
ミラー・メンバであるシステムで DataCheck の構成を作成する場合、データ・チェックをミラーリングに基づくかどうかに依存する追加情報を求められます。ミラーリングに基づかない DataCheck を構成することを選択した場合は、[設定の編集] サブメニューが表示されます。このサブメニューを使用して、"ミラーベースでないシステムでの DataCheck の構成の編集" の説明に従って、手動で構成を完了してください。一方、ミラーリングに基づく DataCheck を構成することを選択した場合、ミラーリングされるデータベースにデータ・チェックが制限され、宛先システムがフェイルオーバー・メンバか非同期ミラー・メンバかによって後続のプロンプトが変わります。詳細は、この章の "ミラー用の DataCheck の構成" を参照してください。
構成の編集
このサブメニューでは、宛先システムの構成を変更できます。サブメニューのオプションは、ミラーベースの構成を編集するか、ミラーベースでない構成を編集するかによって異なります。詳細は、以下のサブセクションを参照してください。
ミラーベースでないシステムでの DataCheck の構成の編集
ミラーベースでないシステムでは、このオプションを選択すると、以下のプロンプトが表示されます。
Configuration Name: dc_test
1) Import Settings from a Shadow (static)
2) Connection Settings (static)
3) Database Mappings (static)
4) Globals to Check (dynamic)
5) Performance Settings (dynamic)
6) Manage Workflow (dynamic)
Option?
編集モードでは、複数の宛先システムを作成した場合、編集する宛先システムを選択できるようにリストが表示されます。また、オプション 1 ~ 3 の設定を編集するには、まずシステムを停止する必要があります。
選択番号を入力します。前のメニューに戻るには ^ キーを押します。このサブメニューの各オプションでは、以下のテーブルのように宛先システムを構成できます。
オプション | 説明 |
---|---|
1) シャドウからの設定のインポート |
非推奨です。使用しないでください。 |
2) 接続設定 |
ソース・システムに接続するための情報。 |
3) データベース・マッピング |
ソース・システムおよび宛先システムに対して、データベース・マッピングを追加、削除、またはリストできます。 |
4) チェックするグローバル |
チェックするグローバルまたはチェックから除外するグローバル。詳細は、この章の "チェックするグローバルおよび添え字範囲の指定" を参照してください。 |
5) パフォーマンス設定 |
使用するシステム・リソース (スロットル) および DataCheck が不一致を隔離する粒度 (最小クエリ・サイズ) を調整します。詳細は、この章の "パフォーマンスに関する考慮事項" を参照してください。 |
6) ワークフローの管理 |
ワークフロー・フェーズの順序を管理します。詳細は、この章の "DataCheck ワークフロー" を参照してください。 |
ミラーベースの DataCheck の構成の編集
ミラーベースのシステムでは、以下のサブメニューが表示されます。
Configuration Name: MIRRORSYS2_MIRRORX201112A_1
1) Globals to Check
2) Performance Settings
3) Manage Workflow
4) Change Mirror Settings (Advanced)
Option?
選択番号を入力します。前のメニューに戻るには ^ キーを押します。このサブメニューの各オプションでは、以下のテーブルのように宛先システムを構成できます。
オプション | 説明 |
---|---|
1) チェックするグローバル |
チェックするグローバルまたはチェックから除外するグローバル。詳細は、この章の "チェックするグローバルおよび添え字範囲の指定" を参照してください。 |
2) パフォーマンス設定 |
使用するシステム・リソース (スロットル) および DataCheck が不一致を隔離する粒度 (最小クエリ・サイズ) を調整します。詳細は、この章の "パフォーマンスに関する考慮事項" を参照してください。 |
3) ワークフローの管理 |
ワークフロー・フェーズの順序を管理します。詳細は、この章の "DataCheck ワークフロー" を参照してください。 |
4) ミラー設定の変更 (詳細) |
この章の、“ミラーリングに関する考慮事項” セクションの "ミラー内での DataCheck の計画" を参照してください。 |
詳細表示
このサブメニューでは、宛先システムの状態の監視および、実行しているクエリやデータ・チェック結果の詳細情報の表示を行うことができます。
System Name: dc_test
1) View Status
2) View Results
3) View Queries
3) View Log
Option?
選択番号を入力します。前のメニューに戻るには ^ キーを押します。このサブメニューの各オプションでは、以下のテーブルのように宛先システムの情報を表示できます。
オプション | 説明 |
---|---|
1) 状態表示 |
選択した宛先システムに関する情報を表示します。この情報には、DataCheck ワーカ・ジョブのパフォーマンス・メトリック、ソースと状態、現在のフェーズ、ワークフロー・タイムアウト、要求された新規フェーズ、現行フェーズで完了したクエリの割合、このフェーズで記録された不一致の数などが含まれます。 |
2) 結果表示 |
選択した宛先システムの結果を表示します。詳細は、この章の "DataCheck 結果" を参照してください。 |
3) クエリ表示 |
選択されている宛先システムによって送信されたクエリに関する情報を表示します ("DataCheck クエリ" を参照してください)。これには、まだ処理されていないグローバル (添え字の包含/除外範囲が使用されている場合はグローバル範囲) が含まれ、DataCheck により現在処理されているアクティブ・クエリが示されます。このリストの末尾には合計数が表示されます。 |
4) ログ表示 |
選択した宛先システムのログ・ファイルが表示されます。 |
^DATACHECK が 2 つのミラー・メンバ・インスタンスでミラーリング・データベースの 2 つのコピーに対して実行され、そのデータベースでグローバル全体の設定と削除がすぐに行われる場合、[状態表示] オプションを [結果表示] オプションと比較すると、表示される結果がわかりにくくなる可能性があります。例えば、一致しない回答が状態に含まれていることが報告されるが、その回答の原因となったグローバルが結果では実際に報告されないことがあります (それ以降の試行で不一致が解決したため)。さらに、表示される回答の数が、インスタンス内の実際のグローバルの数 (管理ポータルで表示されるものと結果で実際に報告されるもの) より多くなる可能性があります。
[受け取った回答] にはゼロ以外の一致しない値があるが不一致にはゼロの値があることを [View Status] で示す場合、これは一時グローバルであり、データの問題ではないことを示します。
DataCheck のソースであるこのシステムへの着信接続
このサブメニューでは、ソース・システムに関する情報を表示できます。
1) List Source Systems
2) View Log
Option?
選択番号を入力します。前のメニューに戻るには ^ キーを押します。このサブメニューの各オプションでは、以下のテーブルのようにソース・システムの情報を表示できます。
オプション | 説明 |
---|---|
1) ソース・システムのリスト |
DataCheck のソース・システムに関する情報を表示します。 |
4) ログ表示 |
ソース・システムのログ・ファイルが表示されます。 |
データ・チェックに関する特別な考慮事項
DataCheck を使用するときは、以下の特別な考慮事項を確認してください。
パフォーマンスに関する考慮事項
複数のシステムでのデータベースの整合性を確保するうえでデータ・チェックは有用ですが、ソース・システムと宛先システムの両方でリソースが消費されます。これにより、負荷および DataCheck の構成によっては、いずれかのシステムで他のプロセスのパフォーマンスに悪影響を及ぼす可能性があります。DataCheck には、パフォーマンスの管理を支援するコントロールが含まれます。
スロットルは、DataCheck が使用できるシステム・リソース (CPU、ディスク I/O、データベース・キャッシュ) の量を制御する 1 から 10 までの整数です。スロットル値は、いつでも変更してすぐに反映させることができます。例えば、システムの負荷が軽いと思われる時間には値を大きくし、システムの負荷が重い時間には小さくすることができます。これは、実行時間が長くなると予想されるチェックに有用です。DataCheck ルーチンは、負荷の重い時間に停止する可能性もありますが、再起動すると、チェックが停止された時点から自動的に再開されます。
各システムの特徴は異なりますが、スロットル値の以下の一般的な記述が当てはまります。
-
スロットル値を 1 に設定した場合、DataCheck クエリの実行について 1 つのプロセスを超えるリソースは使用されません。 つまり、CPU を最大 1 つのみを使用して、一度に 1 つのディスク I/O のみを実行します。 使用されるリソースが主に CPU なのか主にディスク I/O なのかは、データが既にバッファにあるかどうかによります。これは、チェックの進捗に伴って変わる場合があります。
-
スロットル値を 8 に上げると、より多くのシステム・リソースが各ステップで消費されます。 大量のリソース (多くの CPU など) が存在するシステムの場合、8 のスロットル設定時、DataCheck が CPU の数や他の要素を考慮しながら、システム・リソースの大部分を使用するように、リソースの消費量がほぼ同じ倍数増加するよう各間隔が調整されます。ただし、8 のスロットル設定時でも、システムは負荷の軽いアプリケーション・アクティビティに応答することが想定されるため、高負荷時以外の時間帯において、通常のシステムでは 6、7、または 8 の設定が適切な場合があります。
-
9 のスロットル設定は 8 とあまり変わりませんが、DataCheck ジョブによるバッファ・プール全体の使用を可能にします (バッチ・フラグの設定を解除します)。
-
10 のスロットル設定では、ほぼすべてのシステム・リソースを使用してチェックを完了するよう試行されます。
^DATACHECK の [詳細表示] サブメニューの [状態表示] オプションにより、DataCheck ワーカ・ジョブのパフォーマンス・メトリックが表示されます。これにより、パフォーマンスの特性、およびそれらの特性がスロットル設定とどのように関連するのかを理解できます。
スロットルの実装は、ソフトウェア特性およびハードウェア特性の進化とともに変わる場合があります。
最小クエリ・サイズは、クエリの検索で許可されるグローバル・ノードの最小数を表します。つまり、DataCheck が不一致を隔離する際に使用するグローバル・ノードの範囲の最小サイズを決定します。値を小さくすると不一致を見つけやすくなり、値を大きくすると不一致部分のチェック速度が大幅に向上します。例えば、最小クエリ・サイズを 1 (非推奨) に設定すると、個々の不一致ノードは、別個の不一致範囲 (または少なくともすべての一致しないグローバルを含む範囲) として報告され、不一致が正確に識別できますが、パフォーマンスに大きな影響が出ます。最小クエリ・サイズを 1000 (やはり非推奨) に設定すると、1 つまたは複数の不一致は、少なくとも 1000 個の一致しないノードを含む範囲として報告され、一致しないノードを見つけにくくなりますが、チェックは大幅に高速化します。既定値は 32 です。これは十分に小さいため、パフォーマンスに大きな影響を及ぼすことなく、管理ポータルを使って範囲内のグローバル・ノードを比較的簡単に目視検査できます ("グローバルの使用法" の “グローバルの管理” の章を参照)。
セキュリティに関する考慮事項
宛先システムでは、チェックが完了したグローバルおよびチェック中のグローバルの添え字範囲を保存します (結果およびクエリ)。(この章の "チェックするグローバルおよび添え字範囲の指定" を参照してください。)この添え字データは、%SYS ネームスペース (既定では IRISSYS データベース内) の ^SYS.DataCheck* グローバルに保存されます。グローバルの値は保存されず、添え字のみが保存されます。%SYS ネームスペースに保存されるその他のデータベースのグローバル添え字には、セキュリティ構成によっては、それ以外の場合に一部のユーザには表示されない機密情報が含まれることがあります。したがって、保護された配置では、特に注意が必要です。
構成、起動、および停止の機能を含め、^DATACHECK ルーチンを使用するには、^SYS.DataCheck* グローバルを含むデータベース (既定では IRISSYS) に、%Admin_Operate:Use 特権と Read/Write 特権 (チェックの構成には Write、その他のすべてのタスクには Read) の両方が必要です。^SYS.DataCheck* グローバルに保存される構成および結果データは、十分なデータベース特権があればだれでも、ルーチンの外部から表示および操作することができます。
DataCheck データへのアクセス権を持つべきではないユーザに %DB_IRISSYS:Read 特権が与えられるセキュアな配置では、%SYS ネームスペースにグローバル・マッピングを追加して、^SYS.DataCheck* グローバルを IRISSYS 以外の別のデータベースにマップできます。このデータベースには、新しいリソース名を割り当てることができます。これで、DataCheck の使用を許可されたロールにこのリソースへの読み取り許可を制限できます。
別の宛先システムがソースとしてこのシステムに接続できるかどうかは、このシステムの %Service_DataCheck サービスにより制御されます。このサービスは、新しいインストールでは既定で無効になり、許可された IP アドレスのリストで構成することができます。詳細は、この章の "DataCheck サービスの有効化" を参照してください。
2 つのシステム間の通信の暗号化に関しては、TLS を使用してソースに接続するよう宛先システムを構成することができます。詳細は、"TLS を使用するための InterSystems IRIS スーパーサーバの構成" を参照してください。