【IRIS/Cache】データベース間でグローバルをチェックする(設定編)

はじめに

シャドウイングやミラーリングを開始する前や、データのコピーを行った時、何ならデータがクラッシュした際のバックアップとの比較等、元のデータベースとコピー先のデータベースでデータ(グローバル)を比較したくなるものです。

プログラムを作って確認するのも問題ありませんが、今回は自動でチェックしてくれるコマンドをご紹介します。

前準備

データチェックコマンドを実行するには、チェック元のシステムに対し「%Service_DataCheck」のサービスを有効にする必要があります。

管理ポータルを起動し、サービス画面を起動します。
[システム管理] > [セキュリティ] > [サービス]

「%Service_DataCheck」をクリックすると、登録子画面が開きます。

「サービス有効」のチェックボックスにチェックを付けます。

「許可済みの接続元」に関しては、このサービスを有効にしてしまうと、誰もが簡単にデータベースを覗けてしまいます。
セキュリティが気になる場合は対象のIPを入力する事で、制限をかけることが可能になります。

状況によって、任意で設定して下さい。

DATACHECK

覚えやすいコマンドですよね。
「%SYS」ネームスペースで実行するので、ターミナルを「%SYS」ネームスペースに切り替えて、「d ^DATACHECK」に切り替えます。

d ^DATACHECK
%SYS>d ^DATACHECK
 
 
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?

各項目は、大体こんな意味合いです。

  1. チェック用設定の作成
  2. チェック用設定の変更
  3. チェック結果の表示
  4. チェック開始
  5. チェック終了
  6. 1.で作成した設定の削除
  7. 接続一覧

各項目を試してみよう

1) Create New Configuration

データチェックを行うには、先ずデータのチェック設定を作成する必要があります。
これが無いと何もできません(笑

設定の名づけ

Option? 1
 
You are creating a DataCheck destination configuration.  Each destination
configuration checks data on this system against one source system.  Multiple
configuration can be created to check against other sources, or to check a
different set of data on the same source.  Results of the check are stored here
on the destination.  You must enable the DataCheck service on the source.
 
When used to check the consistency of a shadowing system, this system
should also be the shadow destination system.
 
Name of this DataCheck configuration: [任意入力(defragCheck)]

一先ず設定の名前を付けます。
今回は、デフラグ前後のデータベースを使って、デフラグ実行時に異常が発生していないか確認したいと思います。

そのため、設定名称を「defragCheck」にしたいと思います。
入力すると、次の設定項目が表示されます。

1) Import Settings from a Shadow
2) Connection Settings
3) Database Mappings
4) Globals to Check
5) Performance Settings
6) Manage Workflow
 
Option?

1) Import Settings from a Shadow(シャドウイング設定の読み込み)

シャドウイングを行っている場合、その設定を取り込む事が出来ます。

2) Connection Settings(接続先の設定)

接続先の設定を行います。
※今回は自端末チェック行う予定なので、自端末のIPを設定しました。

Option? 2
IP or host name of source: [接続先のIP]
Port number of source: 1972 => [Enter]
Use SSL? No => [Enter]
Save changes? Yes => [Enter]

後はスーパーサーバーポート番号とSSLを使うかの設定を行います。
設定に問題が無ければ保存します。

スーパーサーバーポート番号

初期入力だと「1972」で設定されると思いますが、念のための確認方法です。
管理ポータルで[システム管理] > [構成] > [システム構成] > [メモリと開始設定]をクリックします。
赤枠がスーパーサーバーポート番号になります。

3) Database Mappings(データベースのマッピング)

チェックを行う両システムに対し、どのデータベース同士を確認させ合うかを設定します。

1) Add an entry
2) Delete an entry
3) List all entries
 
Option?

1) Add an entry(マッピングの作成)

先ずはマッピングの作成を行います。
最初は、チェックの元(ソース)となるデータベースを設定します。
 ※チェック元のシステムのサービス設定「%Service_DataCheck」を念のため確認して下さい。

Source Database (other system): [?]
 
 1) d:\iris\mgr\
 2) d:\iris\mgr\hscustom\
 3) d:\iris\mgr\hslib\
 4) d:\iris\mgr\hssys\
 5) d:\iris\mgr\irisaudit\
 6) d:\iris\mgr\irislib\
 7) d:\iris\mgr\irislocaldata\
 8) d:\iris\mgr\iristemp\
 9) d:\iris\mgr\user\
10) d:\irisdb\checkdata\
11) d:\irisdb\sample-data\
12) d:\irisdb\sample\
 
Source Database (other system): [10 or d:\irisdb\checkdata\]

データベースのフォルダパスが分かっているのであれば、直接入力が可能です。
リストから選択したい場合は一旦「?」を入力して、チェック元のデータベースリストを表示させて選択する事が可能です。

番号かフォルダパスを入力して下さい。

次は、チェック先となるデータベースを設定します。
設定方法は、チェック元と同じです。

Source Database (other system): [10] d:\irisdb\checkdata\
Destination Database (this system): [?]
 
 1) d:\iris\mgr\
 2) d:\iris\mgr\hscustom\
 3) d:\iris\mgr\hslib\
 4) d:\iris\mgr\hssys\
 5) d:\iris\mgr\irisaudit\
 6) d:\iris\mgr\irislib\
 7) d:\iris\mgr\irislocaldata\
 8) d:\iris\mgr\iristemp\
 9) d:\iris\mgr\user\
10) d:\irisdb\checkdata\
11) d:\irisdb\sample-data\
12) d:\irisdb\sample\
 
Destination Database (this system): [11] d:\irisdb\sample-data\
 
Source Database (other system): [Enter]

複数のデータベースをチェックするのであれば、同じ手順を繰り返してください。
マッピング作業が完了したら、何も入力しないでEnterをクリックすると終了します。

2) Delete an entry(マッピングの削除)

設定したマッピングを削除する際に利用します。
リストの中から、削除する対象のマッピング番号を選択して削除を行います。

Option? [2]
 
1) d:\irisdb\checkdata\ -> D:\IRISDB\SAMPLE-DATA\
 
Entry to delete: [1] 

削除対象が無ければ、何も入力しないでEnterをクリックする事で終了します。

3) List all entries(マッピングリストの表示)

設定したマッピングを確認します。

Option? [3]
Database Mappings
  Source Database (other system) -> Destination Database (this system)
  d:\irisdb\checkdata\ -> D:\IRISDB\SAMPLE-DATA\

データベースのマッピング作業は、以上で終了になります。
何も入力せずEnterをクリックすると設定の保存を確認されます。

1) Add an entry
2) Delete an entry
3) List all entries
 
Option? [Enter]
Save changes? Yes => [y]

「y」をクリックして、入力した内容を保存して終了します。

4) Globals to Check(チェック対象のグローバル設定)

データベースのマッピングが完了したら、データベース内の対象グローバルを設定します。

データベース内の全てのグローバルを対象とするのであれば、迷わず「1) Check All Globals in All Mapped Databases」を選択して下さい。

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) Include/Exclude Some Globals/Databases(対象グローバルの設定)

データベース内の特定グローバルを対象とする場合に選択します。
細かい設定は「2) Set default include/exclude mask for databases with no mask defined」になります。

Option? 1 => [2:
Save changes? Yes => [Enter(y)]
 
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: * =>

グローバルに対するマスクを設定します。
マスクのルールは下記になります。

  • 「*」ワイルドカード
  • 「’」チェック対象外
使用例(ドキュメントより)
  • ABC* — ABC で始まるすべてのグローバル名
  • A:D — A から D のすべてのグローバル名
  • A:D,Y* — A から D、および Y で始まるすべてのグローバル名
  • *,’C,’D* — C または D で始まるグローバルを除くすべてのグローバル
  • ‘* — すべてのグローバルを除外します。

今回は、developer.data.~のチェックを行い、SampleTest.dataはデータベースコピー後に作成した為、対象から外したいと思います。

マスク内容は「developer.data.*」か「*,’SampleTest.data」になります。

Option? [2]
Enter a mask string, * to include all, '* to exclude all, ? for help
Mask: * => [マスクをかけたいグローバルを入力(developer.data.*)]
Save changes? Yes => [y]

マスク内容を入力したら、設定の保存を求められるので「y」をクリックします。

「3) Add or remove include/exclude mask for databases」,「4) View include/exclude masks」に関しては、マスクの追加と確認なので、今回は割愛します。

5) Performance Settings(パフォーマンス設定)

スロットル(Throttle)とグローバルのノード数(Minimum Query)の設定を行います。

Option? [5]
Throttle (1-10): 2 => {Enter]
Minimum Query Size: 32 => [Enter]

スロットル設定

スロットル値を増やせばマシンへの負荷が増えます。
 →その分早くチェックが完了します。

8以上にした場合、チェック自体が動作しない場合がありました。
ご利用の実行環境とご相談下さい。

グローバルのノード数

一度にチェックするグローバルのノード数を設定します。
設定値を小さくすると、グローバルの相違を確認した時、対象のグローバルを絞り込みやすくなりますが、チェック回数が増えることになります。

これら2つの値は実行環境に依存しているので、適宜設定を見直しつつ最適な値を設定して下さい。

個人的な印象だと、グローバルのノード数は値を変えてもあまり影響が無い印象でした。
 →グローバルのチェック数よりも、ディスクのI/Oの方が影響度が大きいと思われます。

6) Manage Workflow()

オリジナルのチェックフローを作成する事が出来ます。

通常のフローは
  Phases1. チェック
  Phases2. 再チェック(10回)
  Phases3. 停止
の流れになります。

Current Phase: 3 - Stop
Workflow Phases:
  1 - Check
  2 - RecheckDiscrepancies, Iterations=10
  3 - Stop
  (restart)
Workflow Timeout: 432000
New Phase Requested: 1
 
Modify workflow phases? No =>

今回はローカル端末なので、recheckは10回も不要です。
2回程にしておきましょう。

Modify workflow phases? No => [y]
 
1) Check - Check consistency of all globals selected
2) Idle - Wait for user to specify next workflow phase
3) RecheckDiscrepancies - Recheck any discrepant global ranges
4) Stop - Stop the DataCheck system
 
Phase 1: 1 Check
Phase 2: 3 RecheckDiscrepancies
  Iterations: 1 => 2
Phase 3: 4 Stop
Phase 4: [Enter]
New phase number (after current phase): [3]
Abort current phase? No => [Enter]
Workflow Timeout: 432000 => [Enter]
 
Current Phase: 3 - Stop
Workflow Phases:
  1 - Check
  2 - RecheckDiscrepancies, Iterations=2
  3 - Stop
  (restart)
Workflow Timeout: 432000
New Phase Requested: 3
 
Save changes? Yes => y

これでオリジナルのチェックフローが出来ました。
 ※再チェック回数を2回にしただけですが(笑

おわりに

以上でデータチェックの準備編が完了になります。

そもそも2つのデータベース間で、グローバルのチェックを行うという機会自体が少ないと思いますが、いざと言う時に備えておくのも良いかと思います。

次回は、設定した内容を実行したいと思います。