18.20.2 セカンダリノードの新規追加時にadbinitコマンドを実行する際の留意事項
セカンダリノードを新規に追加する場合,追加するセカンダリノードでadbinitコマンドを実行しますが,ほかのノードで使用した初期設定オプションをそのまま利用できないことがあります。DBエリアの構成を変更している場合,その変更内容を初期設定オプションの指定に反映して,adbinitコマンドを実行する必要があります。そのため,新規に追加するセカンダリノードで使用する初期設定オプションに,DBエリアの構成変更の差分情報を反映する必要があります。それができない場合は,ここで説明する手順に従って初期設定オプションを作成してください。
ここで説明する手順のおおまかな流れは,最初にコマンドを実行して,現在のDBエリアの情報をファイルに抽出します。そのファイルを編集して,初期設定オプションファイルを作成します。
- 重要
-
-
説明中の$DBDIRは,DBディレクトリを意味しています。実際にコマンドを実行する際は,DBディレクトリのパスを指定してください。
-
以降の手順は,プライマリノードで実行してください。
-
- メモ
-
クラウドストレージ機能を使用している場合は,セカンダリノードまたはワーカーノードを新規に追加する際,以前セカンダリノードまたはワーカーノードでDBディレクトリを作成したときに使用した初期設定オプションをそのまま利用できます。これは,ノード間で共有するDBエリアがすべてクラウドストレージに集約されているためです。
そのため,初期設定オプションには,DBエリアの構成変更の差分を反映する必要はありません(以降で説明している作業をする必要はありません)。
- 〈この項の構成〉
(1) 初期設定オプションファイルの基を作成する
echo "set adb_init_mst_blk_path = \"$(ls -l $DBDIR/ADBMST \
| awk '{print $NF}')\"" >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 -E "^Used" | awk -F',' '{print $3, $9}' | awk '!a[$0]++' \ | sed -e '1i set adb_init_dbarea_initialize = N' \ -e 's/"ADBDIC"/set adb_init_dic_blk_path =/g' \ -e 's/"ADBSTBL"/set adb_init_stbl_blk_path =/g' \ | sed -r '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.を実施します。
上記の図の番号と次の説明の番号が対応しています。
-
-iオプションのファイル数の指定値を,xから重複行の数に変更してください。この例の場合,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_page_size
-
adb_init_wrk_blk_path
adb_init_wrk_blk_pathオペランドには,ノードごとに割り当てる作業表用DBエリアファイルのブロックスペシャルファイル名を指定します。詳細については,「18.4.8 データベースの作成」の「(4) セカンダリノードおよびワーカーノードでのDBディレクトリの作成」を参照してください。
以上で初期設定オプションの修正が完了しました。セカンダリノードを新規に追加する際,ここで作成した初期設定オプションを使用してadbinitコマンドを実行してください。