3.6.3 インナレプリカグループ内のRDエリアの構成変更と構成情報の複写
ここでは,インナレプリカグループ内のRDエリアの構成変更と構成情報の複写について説明します。また,(3)では構成変更の例として,インナレプリカグループ内のRDエリアを拡張する手順について説明します。
(1) インナレプリカグループ内のRDエリアの構成変更
インナレプリカグループ内のRDエリアに対して,通常のRDエリア(インナレプリカ機能を使っていないRDエリア)と同様に,次の操作ができます。
このような操作を実行すると,処理対象となったRDエリアの構成情報(定義情報)が変更されます。インナレプリカグループ内のRDエリアでの,構成情報を変更する条件を,次の表に示します。
データベース構成変更ユティリティのオペランド指定 |
RDエリアの構成情報変更有無 |
|
---|---|---|
RDエリアの拡張(expand rdarea文) |
〇 |
|
RDエリアの再初期化 (initialize rdarea文) |
RDエリア名 |
× |
with reconstruction |
〇 |
|
open attribute {INITIAL|DEFER|SCHEDULE} |
× |
|
page ページ長 characters |
〇※ |
|
storage conrol segment セグメントサイズ pages |
〇※ |
|
max entries 最大リスト登録数 |
× |
|
extension {use 増分セグメント数 segments|nouse} |
〇※ |
|
without lock table |
× |
|
file name “HiRDBファイルシステム領域名/HiRDBファイル名” |
〇※ |
|
initial HiRDBファイル内セグメント数 segments |
〇※ |
|
RDエリアの属性変更 (alter rdarea文) |
RDエリア名 |
× |
rename rdarea to 変更後のRDエリア名 |
× |
|
open attribute {INITIAL|DEFER|SCHEDULE} |
× |
|
extension {use 増分セグメント数 segments|nouse} |
〇※ |
- (凡例)
-
○:構成情報を変更します。
×:構成情報を変更しません。
- 注※
-
このオペランドを指定した場合,変更前後の値にかかわらず,KFPX24282-Iメッセージを表示します。変更前後の値変更がない場合,KFPX24282-Iメッセージが表示されても,pdrdconstckコマンドを実行した際の整合性チェックは正常終了します。
インナレプリカグループ内のRDエリアに構成情報の差異がある状態でHiRDBを運用することは,障害が発生する原因となります(例:RDエリアの切り替え時に矛盾を検知し,RDエリアが障害閉塞する)。このため,構成情報を変更した場合には,変更内容をインナレプリカグループ内のすべてのRDエリアへコピーする必要があります。
インナレプリカグループ内のRDエリアの構成情報を変更した場合,KFPX24282-Iメッセージを表示します。このメッセージが表示された場合,インナレプリカグループ内のすべてのRDエリアに対して,RDエリアの構成情報をコピーしてください。構成情報のコピーについては,「インナレプリカグループ内のRDエリアの構成情報の複写」で説明します。また,pdrdconstckコマンドを実行することで,インナレプリカグループ内のRDエリアの整合性をチェックし,RDエリアの構成情報に差異があるかどうかを確認できます。pdrdconstckコマンドについては,マニュアル「HiRDB コマンドリファレンス」を参照してください。
(2) インナレプリカグループ内のRDエリアの構成情報の複写
インナレプリカグループ内のRDエリアの拡張や再初期化,属性変更などによってRDエリアの構成情報に変更があった場合,そのRDエリアのデータベース実体をインナレプリカ内の別のRDエリアへコピーして運用するとき,構成定義の変更を別のRDエリアへも矛盾なくコピーする必要があります。HiRDBのpdmodコマンドでdefine copy rdarea文を実行すると,RDエリアの構成情報を矛盾なくコピーできます。
RDエリアの構成変更実行時にペアボリュームが分離状態であれば,そのあと,分離していたボリュームをペアボリュームに戻すと,実体も矛盾なくコピーできます。ただし,構成変更実行時には,ペアボリュームはベア状態(PAIR)にしておくことを推奨します。ペア状態であれば,実体は矛盾なくコピーされます。
ペアボリュームが分離状態でRDエリアの構成変更を実行する例を次に示します。
オリジナルRDエリアの容量を拡張した場合,レプリカRDエリアが独立して運用している間は,そのまま運用を続行できます。再度,オリジナルRDエリアのデータをレプリカRDエリアへコピーして運用する場合,運用する前に構成情報の変更を,レプリカRDエリアへコピーします。次の図に示す例では,オリジナルRDエリアがカレント状態で,現在運用中のRDエリアはオリジナルRDエリアだけです(レプリカRDエリアは閉塞かつクローズ状態)。ここでは,すべてのレプリカRDエリアへ構成情報をコピーします。
|
前述の図に示す例の場合は次の手順で,構成情報と実体をコピーします。
-
オリジナルRDエリア構成情報のインナレプリカグループ内への複写
-
オリジナルRDエリアの実体のインナレプリカグループ内への複写(ペアボリュームの生成)
なお,インナレプリカグループ内のRDエリアの拡張については,「インナレプリカグループ内のRDエリアの拡張」で説明します。
(a) オリジナルRDエリア構成情報のインナレプリカグループ内への複写
図「インナレプリカグループ内のRDエリアの構成情報と実体の複写」のように,オリジナルRDエリアの拡張のためにHiRDBファイルを追加した場合,define copy rdarea文をpdmodコマンドで実行し,二つのレプリカRDエリアへ,拡張したオリジナルRDエリアの構成情報をコピーします。
次に,図「インナレプリカグループ内のRDエリアの構成情報と実体の複写」の場合のdefine copy rdarea文の指定例とpdmodコマンドの実行例を示します。
- define copy rdarea文の指定例(define copy rdarea文のファイル名:/usr/dfcpy01)
// オリジナルRDエリアの構成情報をレプリカRDエリア1へコピー define copy rdarea RD01_GN1 // コピー先のレプリカRDエリアを指定 reproduce RD01; // コピー元のオリジナルRDエリアを指定 // オリジナルRDエリアの構成情報をレプリカRDエリア2へコピー define copy rdarea RD01_GN2 // コピー先のもう一つのレプリカRDエリアを指定 reproduce RD01; // コピー元のオリジナルRDエリアを指定
- pdmodコマンドの実行例
pdmod -a /usr/dfcpy01
/usr/dfcpy01ファイルに記述された上記に示すdefine copy rdarea文を実行します。pdmodコマンドは,HiRDB管理者が,HiRDBの稼働中に実行します。複数のサーバマシンでHiRDBシステムを構成している場合,システムマネジャがあるサーバマシンで実行します。pdmodコマンドについては,マニュアル「HiRDB コマンドリファレンス」を参照してください。
(b) オリジナルRDエリアの実体のインナレプリカグループ内への複写(ペアボリュームの生成)
図「インナレプリカグループ内のRDエリアの構成情報と実体の複写」の例の場合,構成情報だけではなく,HiRDBファイルの実体を二つのレプリカRDエリアへコピーする必要があります。これは,分離していたボリュームをペアボリュームに戻すことでできます。
(3) インナレプリカグループ内のRDエリアの拡張
ここでは,インナレプリカグループ内のRDエリアの構成変更例として,オリジナルRDエリアの拡張を取り上げます。オリジナルRDエリアRD01を拡張する例を使って,拡張の手順について説明します。この例では,新たな領域(HiRDBファイルシステム領域)を作成し,そこにHiRDBファイルを追加することでオリジナルRDエリアを拡張します。新たに設ける領域は,ミラーリング機能を使って二重化したボリューム(ペアボリューム)へ割り当てます。ペアボリュームを用意することで,レプリカRDエリアも拡張します。オリジナルRDエリアの拡張は,次の手順で実施します。
- 1.拡張用の新たな領域の作成
-
-
新たなHiRDBファイルシステム領域への世代番号の割り当て
-
新たなHiRDBファイルシステム領域を割り当てるボリュームの用意(ペアボリュームの生成)
-
新たなHiRDBファイルシステム領域の作成
-
2.オリジナルRDエリアの拡張
3.バックアップファイルの取得
- 4.レプリカRDエリア構成情報と実体のインナレプリカグループ内への複写
-
-
レプリカRDエリア構成情報のインナレプリカグループ内への複写
-
レプリカRDエリアの実体のインナレプリカグループ内への複写(ペアボリュームの分離)
-
以降,各操作内容について説明します。なお,各操作の終了後,実行結果が正しいかどうかを確認することをお勧めします。各操作で使用するコマンドの実行結果の確認方法については,マニュアル「HiRDB コマンドリファレンス」を参照してください。
(a) 拡張用の新たな領域の作成
- 1.新たなHiRDBファイルシステム領域への世代番号の割り当て
-
「HiRDBファイルシステム領域の世代番号の登録」で示すように,HiRDBのpdmodコマンドでcreate generation文を実行して,新たに設けるHiRDBファイルシステム領域の世代番号をHiRDB(データディクショナリ用RDエリア)へ登録します。世代番号には,拡張対象のRDエリアの世代番号を指定します。ここでは,RDエリアRD01_GN1は世代番号1であるため,新たに用意する領域に対しても世代番号1を割り当てます。RDエリアRD01_GN2は世代番号2であるため,新たに用意する領域に対しても世代番号2を割り当てます。次に,create generation文の指定例およびpdmodコマンドの実行例を示します。
- create generation文の指定例
-
(create generation文のファイル名:/usr/exgen01)
// 新たに設けるHiRDBファイルシステム領域の世代番号の登録 create generation for HiRDB file system area "/HiRDB_P/area09_GN1" // 新たに設けるレプリカRDエリア用の // HiRDBファイルシステム領域HiRDB_P/area09_GN1を指定 server name bes1 // 対象とするサーバ名を指定 generation number 1 // 割り当てる世代番号:1を指定 reproduce "/HiRDB_P/area09"; // 新たに設けるオリジナルRDエリア用の // HiRDBファイルシステム領域/HiRDB_P/area09を指定 // 新たに設けるHiRDBファイルシステム領域の世代番号の登録 create generation for HiRDB file system area "/HiRDB_P/area09_GN2" // 新たに設けるレプリカRDエリア用の // HiRDBファイルシステム領域HiRDB_P/area09_GN2を指定 server name bes1 // 対象とするサーバ名を指定 generation number 2 // 割り当てる世代番号:2を指定 reproduce "/HiRDB_P/area09"; // 新たに設けるオリジナルRDエリア用の // HiRDBファイルシステム領域/HiRDB_P/area09を指定
- pdmodコマンドの実行例
pdmod -a /usr/exgen01
/usr/exgen01ファイルに記述された上記に示すcreate generation文を実行します。
pdmodコマンドは,HiRDB管理者が,HiRDBの稼働中に実行します。複数のサーバマシンでHiRDBシステムを構成している場合,システムマネジャがあるサーバマシンで実行します。pdmodコマンドについては,マニュアル「HiRDB コマンドリファレンス」を参照してください。
- 2.新たなHiRDBファイルシステム領域を割り当てるボリュームの用意(ペアボリュームの生成)
-
オリジナルRDエリア用のHiRDBファイルシステム領域を割り当てるボリュームを用意します。このボリュームは,レプリカRDエリアにも対応し,オリジナルとレプリカの間で矛盾がないようにするために,ペアボリュームにしておきます。ペアボリュームは,ハードウェアまたはミラーファイル管理ソフトウェアのミラーリング機能を使って生成します。
- 3.新たなHiRDBファイルシステム領域の作成
-
オリジナルRDエリア用のHiRDBファイルシステム領域を作成します。HiRDBのpdfmkfsコマンドを実行して,HiRDBファイルシステム領域(/HiRDB_P/area09)を作成します。pdfmkfsコマンドは,HiRDB管理者が,HiRDBの稼働中または停止中に実行します。複数のサーバマシンでHiRDBシステムを構成している場合,領域を作成するサーバマシンごとに実行します。pdfmkfsコマンドについては,マニュアル「HiRDB コマンドリファレンス」を参照してください。
- pdfmkfsコマンドの実行例
pdfmkfs -n 10 -l 10 -k DB -e 20 -i /HiRDB_P/area09
-nオプションに新たに作成するHiRDBファイルシステム領域の大きさをメガバイト単位で指定します。-lオプションにHiRDBファイルシステム領域に作成するHiRDBファイル数の最大値を指定します。-kオプションにRDエリア用のHiRDBファイルシステム領域を作成するモード(DB)を指定します。-eオプションには,HiRDBファイルシステム領域内のHiRDBファイルの増分回数の上限値を指定します。-iオプションにHiRDBファイルシステム領域内を初期化することを指定します。/HiRDB_P/area09は,オリジナルRDエリア用に作成するHiRDBファイルシステム領域名です。
(b) オリジナルRDエリアの拡張
HiRDBのpdmodコマンドでexpand rdarea文を実行して,オリジナルRDエリアを拡張します。次に,expand rdarea文の指定例およびpdmodコマンドの実行例を示します。
- expand rdarea文の指定例(expand rdarea文のファイル名:/usr/expnd01)
// オリジナルRDエリアRD01の拡張指定 expand rdarea RD01 // 拡張するオリジナルRDエリアRD01を指定 file name "/HiRDB_P/area09/file09" // 追加するHiRDBファイル名を指定 initial 10000 segments; // HiRDBファイルのセグメント数を指定
- pdmodコマンドの実行例
pdmod -a /usr/expnd01
/usr/expnd01ファイルに記述された上記に示すexpand rdarea文を実行します。
pdmodコマンドは,HiRDB管理者が,HiRDBの稼働中に実行します。複数のサーバマシンでHiRDBシステムを構成している場合,システムマネジャがあるサーバマシンで実行します。pdmodコマンドについては,マニュアル「HiRDB コマンドリファレンス」を参照してください。
(c) バックアップファイルの取得
拡張したオリジナルRDエリアのバックアップファイルを取得します。拡張によってRDエリアの構成が変更されたため,マスタディレクトリ用RDエリアおよびデータディクショナリ用RDエリアのバックアップファイルも取得します。バックアップファイルは,HiRDBのpdcopyコマンドで取得します。
- pdcopyコマンドの実行例
pdcopy -m /hirdb/rdarea/rdmast/rdmast01 -M r -b /usr/hirdb/pdcopy/backup05 -r RDMSTR01,RDDIC01,RD01 -q 0 -p /usr/hirdb/pdcopy/list05
-mオプションには,マスタディレクトリ用RDエリアの先頭のHiRDBファイル名を指定しています。-Mオプションには,バックアップ取得モードとして,「バックアップ取得時にバックアップ取得対象のRDエリアを参照できるが,更新はできないモード(r)」を指定します。
-rオプションには,バックアップ対象のRDエリア名を指定します。ここでは,マスタディレクトリ用RDエリア(RDMSTR01),データディクショナリ用RDエリア(RDDIC01)および拡張したレプリカRDエリアのバックアップの取得を指定します。レプリカRDエリアの指定には,-rオプションと-qオプションを使用します。-rオプションにはオリジナルRDエリア名RD01を指定し,-qオプションで取得対象の世代番号1を指定します。
バックアップ先のファイル名は,-bオプションに指定します。-pオプションには,pdcopyコマンドの処理結果リストの出力先を指定しています。
pdcopyコマンドは,HiRDB管理者が,HiRDBの稼働中に実行します。複数のサーバマシンでHiRDBシステムを構成している場合,システムマネジャがあるサーバマシンで実行します。pdcopyコマンドについては,マニュアル「HiRDB コマンドリファレンス」を参照してください。
バックアップの取得方法については,マニュアル「HiRDB システム運用ガイド」を参照してください。
また,pdcopyコマンドの実行前に,pdlogswap -d sys -wコマンドを実行してシステムログファイルをスワップしてください。
(d) レプリカRDエリア構成情報と実体のインナレプリカグループ内への複写
RDエリアの拡張によってオリジナルRDエリアの構成情報に変更があった場合,拡張されたデータをインナレプリカグループ内のレプリカRDエリアとして使用するとき,この変更内容をレプリカRDエリアへ複写する必要があります。構成情報の複写方法については,「インナレプリカグループ内のRDエリアの構成情報の複写」を参照してください。また,構成情報の変更に伴い,変更のあったRDエリアのデータもインナレプリカグループ内のオリジナルRDエリアを含むほかのRDエリアへ複写し,構成情報と矛盾しないようにします。レプリカRDエリア用の追加HiRDBファイルは(a)で生成したペアボリュームを分離することで作成できますが,構成情報はRDエリア内にも保持しているため,再度,拡張部分でない領域も含めてすべてペアボリュームをペア化し,レプリカRDエリア全体をコピーし直す必要があります。