Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


16.18.2 セカンダリノードの新規追加時にadbinitコマンドを実行する際の留意事項

セカンダリノードを新規に追加する場合,追加するセカンダリノードadbinitコマンドを実行しますが,ほかのノードで使用した初期設定オプションをそのまま利用できないことがあります。DBエリアの構成を変更している場合,その変更内容を初期設定オプションの指定に反映して,adbinitコマンドを実行する必要があります。そのため,新規に追加するセカンダリノードで使用する初期設定オプションに,DBエリアの構成変更の差分情報を反映する必要があります。それができない場合は,ここで説明する手順に従って初期設定オプションを作成してください。

ここで説明する手順のおおまかな流れは,最初にコマンドを実行して,現在のDBエリアの情報をファイルに抽出します。そのファイルを編集して,初期設定オプションファイルを作成します。

重要
  • 説明中の$DBDIRは,DBディレクトリを意味しています。実際にコマンドを実行する際は,DBディレクトリのパスを指定してください。

  • 以降の手順は,プライマリノードで実行してください。

〈この項の構成〉

(1) 初期設定オプションファイルの基を作成する

echo "set adb_init_mst_blk_path = \"$(ls -l $DBDIR/ADBMST \
| sed -e 's/.*ADBMST ->/ADBMST ->/g' | awk '{print $3}')\"" >adbinit.opt

上記のコマンドを実行し,初期設定オプションファイル(adbinit.optファイル)の基を作成してください。この例では,カレントディレクトリにadbinit.optファイルを作成しています。

上記のコマンドを実行すると,次に示すadbinit.optファイルが作成されます。

■この時点でのadbinit.optファイルの内容

set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60....93bc"

(2) adbinit.optファイルにadbinitdbareaオペランドなどの情報を追加する

adbdbstatus -d used | grep Used | awk -F',' '{print $3, $9}' | uniq \
| awk '{print $1, $2}' \
| sed -e 's/DBarea_name DBarea_filename/set adb_init_dbarea_initialize = N/g' \
      -e 's/\"ADBDIC\"/set adb_init_dic_blk_path =/g' \
      -e 's/\"ADBSTBL\"/set adb_init_stbl_blk_path =/g' \
| sed -e 's/^\"\(.*\)\" \"\(.*\)\"/adbinitdbarea -n \\\"\1\\\" -i 0K,x -v \2,\\/g' \
>>adbinit.opt

上記のadbdbstatusコマンドを実行すると,adbinitdbareaオペランドなどの情報が,(1)で作成したadbinit.optファイルに追加されます。上記のコマンドを実行すると,ある程度整った形でadbinit.optファイルが作成されるため,(3)以降でadbinit.optファイルを編集する手間が軽減できます。

■この時点でのadbinit.optファイルの内容

set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60....93bc"
set adb_init_dbarea_initialize = N                                             ...1
set adb_init_dic_blk_path = "/dev/disk/by-id/wwn-0x60....e259"                 ...2
set adb_init_stbl_blk_path = "/dev/disk/by-id/wwn-0x60....311b"                ...3
adbinitdbarea -n \"DBAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60....0000",\   ...4
adbinitdbarea -n \"DBAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60....0001",\   ...5
adbinitdbarea -n \"NEWAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60....0400",\  ...6
adbinitdbarea -n \"NEWAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60....0401",\  ...7
adbinitdbarea -n \"NEWAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60....0402",\  ...8

上記の1〜8のオペランドが追加されます。

(3) adbinit.optファイルの内容を修正する

adbinit.optファイルをテキストエディタで開いて,初期設定オプションの指定を修正してください。初期設定オプションの指定については,マニュアルHADB コマンドリファレンスadbinit(データベースの初期設定)adbinitコマンドの指定形式初期設定オプションの形式を参照してください。

この例の場合,adbinitdbareaオペランドのオプションの指定を修正する必要があります。

[図データ]

[説明]

adbinitdbareaオペランドの指定を次のように修正します。

  • adbinitdbareaオペランドの-nオプションのDBエリア名が重複している行がある場合

    上記の図の1.〜3.を実施します。

  • adbinitdbareaオペランドの-nオプションのDBエリア名が重複している行がない場合

    上記の図の1.および3.を実施します。

上記の図の番号と次の説明の番号が対応しています。

  1. -iオプションのファイル数の指定値を,xから重複行の数に変更してください。この例の場合,23に変更します。

  2. 囲まれた個所の指定を削除してください。

  3. 各重複行の最終行の末尾の「,\」を削除してください。

adbinit.optファイルの修正後の内容

set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60....93bc"
set adb_init_dbarea_initialize = N
set adb_init_dic_blk_path = "/dev/disk/by-id/wwn-0x60....e259"
set adb_init_stbl_blk_path = "/dev/disk/by-id/wwn-0x60....311b"
adbinitdbarea -n \"DBAREA1\" -i 0K,2 -v "/dev/disk/by-id/wwn-0x60....0000",\
                                        "/dev/disk/by-id/wwn-0x60....0001"   
adbinitdbarea -n \"NEWAREA1\" -i 0K,3 -v "/dev/disk/by-id/wwn-0x60....0400",\
                                         "/dev/disk/by-id/wwn-0x60....0401",\
                                         "/dev/disk/by-id/wwn-0x60....0402"   

上記の網掛け部分が修正されています。

(4) DBディレクトリ直下のファイルを確認する

DBディレクトリのサブディレクトリに,DBエリアファイルのシンボリックリンクを格納している場合は,そのDBエリアの情報を指定しているadbinitdbareaオペランドに,-fオプションの指定を追加する必要があります。この場合は,以降の手順を実施してください。

ls $DBDIR

■実行結果の表示例

ADBDIC  ADBMST  ADBSTBL  ADBSYS  ADBWORK  ADBWRK  AREAS  DBAREA1  DBAREA1.00001  SPOOL

OSのlsコマンドで,DBディレクトリ直下のファイル一覧を表示してください。DBエリア名と同じ名称のファイルがあるかどうかを確認してください。

上記の例の場合,DBAREA1はありますが,NEWAREA1はありません。このため,NEWAREA1を指定しているadbinitdbareaオペランドに-fオプションを追加する必要があります。

(5) NEWAREA1の格納ディレクトリを調査する

find $DBDIR -name NEWAREA1 2>/dev/null

上記のコマンドを実行して,DBエリアファイルNEWAREA1の,DBディレクトリ内の格納ディレクトリを調査します。

■実行結果の表示例

$DBDIR/AREAS/NEW/NEWAREA1      ...1
$DBDIR/AREAS/OLD/NEWAREA1      ...2

以降の説明で,1を1のファイル,2を2のファイルと表記します。

上記の例のように,パスは異なるが,同じファイル名が複数表示された場合は,OSのlsコマンドでリンク先を調査する必要があります。

(6) 1のファイルのリンク先を確認する

ls -l $DBDIR/AREAS/NEW/NEWAREA1* | sed -e 's/.* -> //g'

OSのls -lコマンドを実行して,1のファイルのリンク先を確認してください。

■実行結果の表示例

/dev/disk/by-id/wwn-0x60....0400
/dev/disk/by-id/wwn-0x60....0401
/dev/disk/by-id/wwn-0x60....0402

上記3つのリンク先が,adbinit.optファイルの内容と一致しています。

adbinit.optファイルの内容

adbinitdbarea -n \"NEWAREA1\" -i 0K,3 -v "/dev/disk/by-id/wwn-0x60....0400",\
                                         "/dev/disk/by-id/wwn-0x60....0401",\
                                         "/dev/disk/by-id/wwn-0x60....0402"

(7) 2のファイルのリンク先を確認する

ls -l $DBDIR/AREAS/OLD/NEWAREA1* | sed -e 's/.* -> //g'

OSのls -lコマンドを実行して,2のファイルのリンク先を確認してください。

■実行結果の表示例

/dev/disk/by-id/wwn-0x60....a000

上記のリンク先は,adbinit.optファイルの内容と一致していません。

(8) 初期設定オプションの指定内容を修正する

(6)および(7)の確認結果から,1のファイルが該当することがわかりました。

1のファイルのパス名のうち,下記の下線部分を-fオプションに指定して追加してください。

$DBDIR/AREAS/NEW/NEWAREA1

上記の例の場合,次のように-fオプションを追加します。

-f \"AREAS/NEW/\"

adbinit.optファイルの修正後の内容

set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60....93bc"
set adb_init_dbarea_initialize = N
set adb_init_dic_blk_path = "/dev/disk/by-id/wwn-0x60....e259"
set adb_init_stbl_blk_path = "/dev/disk/by-id/wwn-0x60....311b"
adbinitdbarea -n \"DBAREA1\" -i 0K,2 -v "/dev/disk/by-id/wwn-0x60....0000",\
                                        "/dev/disk/by-id/wwn-0x60....0001"
adbinitdbarea -n \"NEWAREA1\" -f \"AREAS/NEW/\" -i 0K,3\
              -v "/dev/disk/by-id/wwn-0x60....0400",\
                 "/dev/disk/by-id/wwn-0x60....0401",\
                 "/dev/disk/by-id/wwn-0x60....0402"

上記の下線部分を追加します。

(9) 作業表用DBエリアに関するオペランドを追加する

次のオペランドを必要に応じて追加してください。

adb_init_wrk_blk_pathオペランドには,ノードごとに割り当てる作業表用DBエリアファイルのブロックスペシャルファイル名を指定します。詳細については,「16.3.8 データベースの作成」の「(4) セカンダリノードおよびワーカーノードでのDBディレクトリの作成」を参照してください。

以上で初期設定オプションの修正が完了しました。セカンダリノードを新規に追加する際,ここで作成した初期設定オプションを使用してadbinitコマンドを実行してください。