Sun Java System Application Server Enterprise Edition 8.1 2005Q2 高可用性 (HA) 管理ガイド

HADB の設定

この節では、次の基本的な HADB 設定作業について説明します。

管理ドメインの作成

コマンド hadbm createdomain を実行すると、指定した HADB ホストを含む管理ドメインが作成されます。このコマンドは、ホストと持続性設定ストアとの間の内部通信チャネルを初期化します。

コマンドの構文は次のとおりです。

hadbm createdomain
 [--adminpassword=password |--adminpasswordfile=
file | --no-adminauthentication] [--agent=maurl]
 hostlist

hostlist オペランドは、それぞれが有効な IPv4 ネットワークアドレスである HADB ホストのコンマ区切りリストです。新規ドメインに組み込むすべてのホストを hostlist に含めてください。

コマンドオプションの説明は、「汎用オプション」を参照してください。

このコマンドを使用する前に、HADB 管理エージェントが hostlist に含まれているすべてのホスト上で実行中であるかを確認してください。さらに、管理エージェントは次の条件を満たしている必要があります。

hadbm が管理ドメインを作成すると、ドメイン内のすべてのホストが使用可能になります。これで、管理エージェントがデータベースを管理する用意は整いました。HADB ドメインを作成したら、次のステップは、HADB データベースの作成です。HADB データベースの作成に関する詳細については、「データベースの作成」を参照してください。


例 3–2 HADB 管理ドメインの作成

次の例では、指定した 4 つのホスト上に管理ドメインが作成されます。

hadbm createdomain --adminpassword= password host1,host2,host3,host4

hadbm がコマンドを正常に実行すると、次のメッセージが表示されます。

「ドメイン host1、host2、host3、host4 が作成されました。」

HADB ドメインを作成した後、HADB パッケージのパスとバージョンを管理エージェントに登録します。


データベースの作成

hadbm create コマンドを使用して、データベースを手動で作成します。

このコマンドを使用してデータベースを作成する前に、管理ドメインを作成し、HADB パッケージを登録します。hadbm create を実行する時点でこの 2 つのステップをまだ行なっていない場合は、コマンドによってそれらのステップが暗黙に実行されます。このようにすれば行う作業は減るように思えますが、いずれかのコマンドでエラーが生じたときに、デバッグが困難になる場合があります。さらに、hadbm create は不可分ではありません。つまり、暗黙的なコマンドのいずれかが失敗した場合に、正常に実行されたコマンドはロールバックされません。したがって、ドメインを作成し HADB パッケージを登録した後にのみ、データベースを作成するのが最善です。

たとえば、hadbm createdomainhadbm registerpackage は正常に実行されるものの hadbm create database は失敗する場合、 hadbm createdomainhadbm registerpackage によって加えられた変更は持続します。

Procedureデータベースを作成するには

  1. 管理ドメインを作成します。

    詳細については、「管理ドメインの作成」を参照してください。

  2. HADB パッケージを登録します。

    詳細については、「HADB パッケージの登録」を参照してください。

  3. hadbm create コマンドを使用してデータベースを作成します。

    コマンド構文については、次の節を参照してください。

hadbm create コマンド構文

hadbm create [--package= name] [--packagepath= path] [--historypath= path] [--devicepath= path] [--datadevices= number ] [--portbase= number] [--spares=number ] [--set=attr-val-list ] [--agent=maurl] [--no-cleanup] [ --no-clear ] [ --devicesize =size] [--dbpassword=password | --dbpasswordfile=file ] --hosts=host list [-- adminpassword=password | -- adminpasswordfile=file | -- no-adminauthentication ] [dbname ]

dbname オペランドには データベース名を指定します。この名前は一意でなければなりません。データベース名が一意であることを確認するために、hadbm list コマンドを使用して既存のデータベース名を一覧表示します。複数のデータベースを作成する必要がなければ、デフォルトのデータベース名を使用してください。たとえば、同じセットの HADB マシン上に独立データベースで複数のクラスタを作成するには、クラスタごとに別個のデータベース名を使用します。

hadbm create コマンドは、エラーメッセージをログファイルではなくコンソールに書き込みます。

表 3–7 には、 hadbm create コマンドの特殊なオプションが説明されています。追加のコマンドオプションの説明は、「汎用オプション」を参照してください。

表 3–7 hadbm create オプション

オプション (省略形) 

説明 

デフォルト 

--datadevices= number

-a 

各ノード上のデータデバイスの数。1〜8 を含みます。データデバイスには 0 から始まる番号が付けられます。 

--devicepath= path

-d 

デバイスへのパス。デバイスには次の 4 つがあります。 

  • DataDevice

  • NiLogDevice (ノード内部ログデバイス)

  • RelalgDevice (関係代数クエリーデバイス)

  • NoManDevice (ノードマネージャーデバイス)。

    このパスは存在していて、書き込み可能であることが必要です。このパスをノードまたはデバイスごとに異なる設定にする場合は、「異機種システム混在デバイスパスの設定」を参照してください。

Solaris および Linux: /var/opt/SUNWhadb

Windows: C:\Sun\AppServer\SUNWhadb\vers。ここで、vers は HADB バージョン番号です。

デフォルトは、管理エージェント設定ファイル内の ma.server.dbdevicepath によって指定されます。詳細については、「設定ファイル」を参照してください。

--devicesize= size

-z 

各ノードのデバイスサイズ。詳細については、「デバイスサイズの指定」を参照してください。

「既存ノードへの記憶スペースの追加」の説明に従って、デバイスサイズを増やします。

1024M バイト 

最大サイズは、オペレーティングシステムのファイルサイズまたは 256G バイトの小さい方となります。最小サイズは次のとおりです。 

(4 x LogbufferSize + 16M バイト) / n

ここで、n--datadevices オプションで指定されたデータデバイスの番号です。

--historypath= path

-t 

履歴ファイルへのパス。このパスはすでに存在していて、書き込み可能であることが必要です。 

履歴ファイルの詳細については、「履歴ファイルの消去と保存」を参照してください。

デフォルトは、管理エージェント設定ファイル内の ma.server.dbhistorypath によって指定されます。詳細については、「設定ファイル」を参照してください。

Solaris および Linux:/var/opt/SUNWhadb

Windows: REPLACEDIR (実行時に実際の URL に置換される) 

--hosts= hostlist

-H 

データベース内のノードのホスト名または IP アドレス (IPv4 のみ) のコンマ区切りリスト。DNS 検索への依存を避けるため、IP アドレスを使用してください。ホスト名は必ず絶対名にします。localhost127.0.0.1 をホスト名として使用することはできません。Host names

詳細については、「ホストの指定」を参照してください。

なし 

--package=name -k

HADB パッケージの名前 (バージョン)。パッケージが見つからない場合は、デフォルトパッケージが登録されます。 

このオプションは推奨されていません。hadbm registerpackage コマンドを使用して、パッケージをドメインに登録してください。 

なし 

--packagepath=path-L

HADB ソフトウェアパッケージへのパス。パッケージがドメインに登録されていない場合にのみ使用します。 

このオプションは推奨されていません。hadbm registerpackage コマンドを使用して、パッケージをドメインに登録してください。 

なし 

--portbase= number

-b 

ノード 0 に使用するポートベース番号。 後続のノードには、この番号から 20 刻みでポートベース番号が自動的に割り当てられます。各ノードはそれ自身のポートベース番号とそれに続く 5 つの連続する番号のポートを使用します。 

同じマシン上で複数のデータベースを実行するには、明示的にポート番号を割り当てるように計画します。 

15200 

--spares= number

-s 

スペアノードの数。この数は、偶数かつ --hosts オプションに指定したノード数より少ない数でなければいけません。

--set=attr-val-list

-S 

name =value 書式のデータベース設定属性のコンマ区切りリスト。データベース設定属性の説明は、「履歴ファイルの消去と保存」を参照してください。

なし 


例 3–3 データベースの作成例

次に示すのは、データベースを作成するコマンドの例です。

hadbm create --spares 2 --devicesize 1024 --dbpassword secret123
 --hosts n0,n1,n2,n3,n4,n5

ホストの指定

--hosts オプションを使用して、データベース内のノードのホスト名または IP アドレスのコンマ区切りリストを指定します。hadbm create コマンドは、リスト内のホスト名 (または IP アドレス) ごとに 1 つのノードを作成します。ノードの数は偶数でなければなりません。重複するホスト名を使用すると、同じマシン上に異なるポート番号が指定された複数のノードが作成されます。同じマシン上のノードがミラーノードではないことを確認してください。

ノードには、このオプションでリストされている順番で、ゼロから始まる番号が付けられます。最初のミラー化されたペアはノード 0 と 1、2 番目のミラーペアはノード 2 と 3 となり、以下同様です。奇数番号のノードが一方の DRU に配置され、偶数番号のノードは他方の DRU に配置されます。--spares オプションを指定すると、最も大きい番号のノードがスペアノードとなります。

二重ネットワークインタフェースの設定については、「ネットワーク冗長性の設定」を参照してください。

デバイスサイズの指定

--devicesize オプションを使用して、デバイスサイズを指定します。推奨されているデバイスサイズは次のとおりです。

(4x / nd + 4l/d) / 0.99

説明:

異機種システム混在デバイスパスの設定

ノードまたはサービスごとに異なるデバイスパスを設定するには、hadbm create-- set オプションを使用します。デバイスには、DataDeviceNiLogDevice (ノード内部ログデバイス)、RelalgDevice (関係代数クエリーデバイス)、および NoManDevice (ノードマネージャーデバイス) の 4 種類があります。各 name =value ペアの構文は次のとおりです。ただし、-devno は、deviceDataDevice の場合にのみ必要です。

node-nodeno.device-devno.Devicepath

次に例を示します。

--set Node-0.DataDevice-0.DevicePath=/disk0,
Node-1.DataDevice-0.DevicePath=/disk 1

次のようにして、履歴ファイルへの異機種システム混在パスを設定することも可能です。

node-nodeno.historypath=path

履歴ファイルについては、「履歴ファイルの消去と保存」を参照してください。

特定のノードまたはデバイス用に設定されていないデバイスパスは、すべて --devicepath の値にデフォルト設定されます。


注 –

デバイスパスおよび履歴ファイルの場所の変更は、hadbm set および hadbm addnodes コマンドを使用して行います。


トラブルシューティング

データベースの作成がうまくいかない場合は、次の点をチェックしてください。

設定属性の表示と変更

データベース設定属性の表示および変更は、それぞれ hadbm get および hadbm set コマンドを使用して行えます。

設定属性の値の取得

設定属性の値を取得するには、hadbm get コマンドを使用します。有効な属性のリストについては、「設定属性」を参照してください。コマンド構文は次のとおりです。

hadbm get attribute-list | --all  
[dbname]  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]

dbname オペランドにはデータベース名を指定します。デフォルトは hadb です。

attribute-list オペランドは、コンマで区切られたまたは引用符で囲まれスペースで区切られた、属性のリストです。--all オプションはすべての属性の値を表示します。hadbm get のすべての属性のリストについては、「設定属性」を参照してください。

コマンドオプションの説明は、「汎用オプション」を参照してください。


例 3–4 hadbm get の使用例

hadbm get JdbcUrl,NumberOfSessions

設定属性の値の設定

設定属性の値を設定するには、hadbm set コマンドを使用します。有効な属性のリストについては、「設定属性」を参照してください。

hadbm set [dbname] attribute
=value[,attribute=
value...]
 [--adminpassword=password | --adminpasswordfile=file]
 [--agent=maurl]

dbname オペランドにはデータベース名を指定します。デフォルトは hadb です。

attribute=value リストは、コンマで区切られたまたは引用符で囲まれスペースで区切られた、属性のリストです。

コマンドオプションの説明は、「汎用オプション」を参照してください。

このコマンドが正常に実行されると、データベースは以前の状態またはよりよい状態で再起動されます。データベースの状態については、「HADB の状態の取得」を参照してください。「データベースの再起動」で説明されている手順に従って、HADB を再起動します。

次の属性は、hadbm set では設定できません。その代わりに、データベース作成時に設定します (「データベースの作成」を参照)。


注 –

hadbm set を使用して ConnectionTraceSQLTraceMode 以外のいずれかの設定属性を設定すると、HADB の順次再起動が実行されます。順次再起動では、各ノードが停止し、一度に 1 つずつ新規の設定で起動します。このとき HADB サービスは中断されません。

ConnectionTrace または SQLTraceMode を設定した場合、順次再起動は実行されませんが、変更は Application Server インスタンスから作成された新規の HADB 接続に対してのみ反映されます。


設定属性

次の表に、hadbm set での変更と hadbm get での検出が可能な設定属性を一覧表示します。

表 3–8 設定属性

属性 

説明 

デフォルト 

範囲 

ConnectionTrace

True に設定すると、クライアント接続 (JDBC、ODBC) が開始または終了したときに、メッセージが HADB 履歴ファイルに記録されます。 

False 

True または False 

CoreFile

デフォルト値を変更しないでください。 

False 

True または False 

DatabaseName

データベースの名前。 

hadb 

 

DataBufferPoolSize

共用メモリーに割り当てられるデータバッファプールのサイズ。 

200M バイト 

16 〜 2047M バイト 

DataDeviceSize

ノードのデバイスサイズを指定します。推奨される DataDeviceSize のサイズについては、「デバイスサイズの指定」を参照してください。

最大値は、256G バイトとオペレーティングシステムの最大ファイルサイズの小さい方です。最小値は次のとおりです。 

(4 x LogbufferSize + 16M バイト) / n

ここで、n はデータデバイスの番号です。

1024M バイト 

32 〜 262144M バイト 

PackageName 

データベースが使用する HADB ソフトウェアパッケージの名前。 

V4.x.x.x 

なし 

DevicePath

デバイスの場所。デバイスは次のとおりです。 

  • データデバイス (DataDevice)

  • ノード内部ログデバイス (NiLogDevice)

  • 関係代数クエリーデバイス (RelalgDevice)

Solaris および Linux: /var/opt/SUNWhadb

Windows: C:\Sun\AppServer\SUNWhadb\vers。ここで、vers は HADB バージョン番号です。

 

EagerSessionThreshold

通常または高速処理 (eager) アイドルセッション有効期限を使用するかどうかを判別します。 

通常のアイドルセッション有効期限では、アイドル状態が SessionTimeout 秒を超過したセッションが期限切れとなります。

並行セッションの数がセッション最大数の EagerSessionThreshold パーセントを超えている場合は、アイドル状態が EagerSessionTimeout 秒を超過したセッションが期限切れとなります。

NumberOfSessions 属性の半分 

0 〜 100 

EagerSessionTimeout

高速処理 (eager) セッション有効期限を使用している場合に、データベース接続がアイドル状態になってから期限切れになるまでの秒数。 

120 秒 

0 〜 2147483647 秒 

EventBufferSize

データベースイベントが記録されるイベントバッファーのサイズ。0 に設定すると、イベントバッファーへのロギングは実行されません。

障害が起きている間、イベントバッファーはダンプされます。これは、障害の原因に関する有用な情報を提供し、試験的な配備の際に役立ちます。 

イベントをメモリーに書き込むと、パフォーマンスが犠牲になります。 

0M バイト

0 〜 2097152M バイト 

HistoryPath

HADB 履歴ファイルの場所。このファイルの内容は、情報、警告、およびエラーメッセージです。 

これは読み取り専用属性です。 

Solaris および Linux: /var/opt/SUNWhadb

Windows: REPLACEDIR (実行時に実際の URL に置換される) 

 

InternalLogbufferSize

ノード内部ログデバイスのサイズ。データの格納に関連する操作のトラックが保持されます。 

12M バイト 

4 〜 128M バイト 

JdbcUrl

データベースの JDBC 接続 URL。 

これは読み取り専用属性です。 

なし 

 

LogbufferSize

ログバッファーのサイズ。データに関連する操作のトラックをが保持されます。 

48M バイト 

4 〜 2048M バイト 

MaxTables

HADB データベース内で許可される表の最大数。 

1100 

100 〜 1100 

NumberOfDatadevices

HADB ノードで使用されるデータデバイスの数。 

これは読み取り専用属性です。 

1 〜 8 

NumberOfLocks

HADB ノードによって割り当てられるロックの数。 

50000 

20000 〜 1073741824 

NumberOfSessions

HADB ノード用に開くことが可能なセッション (データベース接続) の最大数。 

100 

1 〜 10000 

PortBase

異なる HADB プロセス用に異なるポート番号を作成する際に使用するベースポート番号。 

これは読み取り専用属性です。 

15200 

10000 〜 63000 

RelalgDeviceSize

関係代数クエリーに使用するデバイスのサイズ。 

128M バイト 

32 〜 262144M バイト 

SessionTimeout

通常のセッション有効期限を使用している場合に、データベース接続がアイドル状態になってから期限切れになるまでの時間。 

1800 秒 

0 〜 2147483647 秒 

SQLTraceMode

履歴ファイルに書き込まれる実行された SQL クエリーに関する情報の量。 

SHORT に設定すると、SQL セッションのログインとログアウトが記録されます。FULL に設定すると、準備中および実行中のすべての SQL が、パラメータ値を含めて記録されます。

NONE 

NONE/SHORT/FULL 

StartRepairDelay

スペアノードが、障害の発生したアクティブノードに対してノード復旧の実行を許可する最大時間。障害の発生したノードがこの時間内に回復できない場合、スペアノードが障害の発生したノードのミラーからデータのコピーを開始してアクティブになります。デフォルト値を変更しないことをお勧めします。 

20 秒 

0 〜 100000 秒 

StatInterval

HADB ノードがスループットと応答時間の統計情報を履歴ファイルに書き込む間隔。無効にする場合は、0 に設定します。 

次に示すのは、統計情報の行の例です。 

Req-reply time: # 123, min= 69 avg= 1160 max= 9311 %=100.0

ハッシュ記号 (#) の後の数字は、StatInterval の間に処理された要求の数です。次の 3 つの数字は、StatInterval の間に完了したトランザクションが処理に要した時間の最小値、平均値、最大値をマイクロ秒で表したものです。パーセント記号 (%) の後の数字は、StatInterval の間に 15 ミリ秒以内で正常に完了したトランザクションの数です。

600 秒 

0 〜 600 秒 

SyslogFacility

syslog にレポートするときに使用する機能。syslog デーモンを設定しておくことをお勧めします (詳細は man syslogd.conf を参照)。

同じマシン上で実行中の他のアプリケーションによって使用されていない機能を使用します。 

syslog ロギングを無効にするには、none に設定します。

local0 

local0、local1、local2、local3、local4、local5、local6、local7、kern、user、mail、daemon、auth、syslog、lpr、news、uucp、cron、none 

SysLogging

True に設定すると、HADB ノードは情報をオペレーティングシステムの syslog ファイルに書き込みます。

True 

True または False 

SysLogLevel

オペレーティングシステムの syslog に保存される HADB メッセージの最小レベル。指定したレベル以上のすべてのメッセージが記録されます。たとえば、「info」に設定した場合は、すべてのメッセージが記録されます。

warning 

nonealert errorwarninginfo 

SyslogPrefix

HADB によって書き込まれるすべての syslog メッセージの前に挿入されるテキスト文字列。

hadb -dbname 

 

TakeoverTime

ノードに障害が発生してから、処理がミラーに引き継がれるまでの時間。デフォルト値を変更しないでください。 

10000 (ミリ秒) 

500 〜 16000 ミリ秒 

JDBC 接続プールの設定

Application Server は Java Database Connectivity (JDBC) API を使用して HADB と通信します。asadmin configure-ha-cluster コマンドは、クラスタ cluster-name 用に JDBC 接続プールを自動的に作成して HADB と共用します。接続プールの名前は cluster-name-hadb-pool です。JDBC リソースの JNDI URL は jdbc/cluster-name -hastore です。

通常、接続プールは初期設定のままで十分です。ノードを追加する場合は、通常プールサイズを変更して、アクティブな HADB ノードがそれぞれ 8 つの接続を持つようにします。「ノードの追加」を参照してください。

この章では、次のトピックを扱います。

JDBC URL の取得

JDBC 接続ツールをセットアップする前に、次のように hadbm get コマンドを使用して、 HADB の JDBC URL を決定する必要があります。

hadbm get JdbcUrl [dbname]

次に例を示します。

hadbm get JdbcUrl

このコマンドを実行すると、JDBC URL が次の書式で表示されます。

jdbc:sun:hadb:host:port,
host:port,...

jdbc:sun:hadb: 接頭辞を削除した host:port, host:port... の部分を、表 3–10 で説明されている serverList 接続プールプロパティーの値として使用します。

接続プールの作成

次の表に、HADB 用に必須の接続プール設定を要約します。ノードを追加する際には「通常プールサイズ」を変更し、それ以外の設定は変更しないでください。

表 3–9 HADB 接続プール設定

設定 

HADB 用に必要な値 

名前

HADB JDBC リソースの「プール名」設定がこの名前を参照している必要があります 

データベースベンダー

HADB 4.4 

グローバルトランザクションのサポート

チェックしない/False 

データソースクラス名

com.sun.hadb.jdbc.ds.HadbDataSource

通常プールサイズ

アクティブな HADB ノードごとに 8 つの接続を使用します。詳細については、 『System Deployment Guide』を参照してください。

接続検証が必要

チェックする/True 

検証方法

meta-data

テーブル名

指定しない 

すべての接続を再確立

チェックしない/False 

トランザクション遮断

repeatable-read

遮断レベルを保証

チェックする/True 

次の表に、HADB 用に必須の接続プールのプロパティーを要約します。ノードを追加する際には serverList を変更し、それ以外のプロパティーは変更しないでください。

表 3–10 HADB 接続プールプロパティー

プロパティー 

説明 

username

asadmin create-session-store コマンドに使用する storeuser の名前。

password

asadmin create-session-store コマンドに使用するパスワード (storepassword)。

serverList

HADB の JDBC URL。この値を特定するには、「JDBC URL の取得」を参照してください。

データベースにノードを追加する場合は、この値を変更する必要があります。「ノードの追加」を参照してください。

cacheDatabaseMetaData

必要に応じて false を指定すると、Connection.getMetaData() を呼び出すことによってデータベースが呼び出され、接続が有効になります。

eliminateRedundantEndTransaction

必要に応じて true を指定すると、重複するコミットおよびロールバックの要求の削除、およびトランザクションが開いていない場合にはそれらの要求の無視により、パフォーマンスが向上します。

maxStatement

開いている接続あたりのドライバ文プールにキャッシュされる文の最大数。このプロパティーは 20 に設定します。


例 3–5 接続プールの作成

次に示すのは、HADB JDBC 接続プールを作成する asadmin create-jdbc-connection-pool コマンドの例です。

asadmin create-jdbc-connection-pool
--user adminname --password secret 
--datasourceclassname com.sun.hadb.jdbc.ds.HadbDataSource
--steadypoolsize=32
--isolationlevel=repeatable-read
--isconnectvalidatereq=true
--validationmethod=meta-data
--property username=storename:password=secret456:serverList=
host\:port,host\:port,
host\\:port,host\:port,
host\:port,host\:port
:cacheDatabaseMetaData=false:eliminateRedundantEndTransaction=true hadbpool

Solaris では、プロパティー値に含まれるコロン文字 (:) は 2 つの円記号 (\\) でエスケープします。Windows では、コロン文字 (:) を 1 つの円記号 (\) でエスケープします。


JDBC リソースの作成

次の表に、HADB 用に必須の JDBC リソース設定を要約します。

表 3–11 HADB JDBC リソース設定

設定 

説明 

JNDI 名

セッション持続性設定のデフォルトの JNDI 名はjdbc/hastore です。このデフォルト名または別の名前を使用することができます。

可用性サービスを使用可能にするには、store-pool-jndi-name 「持続性ストア」プロパティーの値にもこの JDNI 名を指定する必要があります。

プール名

リストから、この JDBC リソースが使用する HADB 接続プールの名前 (または ID) を選択します。詳細については、「ネットワーク冗長性の設定」を参照してください。

データソースが有効

チェックする/True