この節では、次の基本的な HADB 設定作業について説明します。
コマンド hadbm createdomain を実行すると、指定した HADB ホストを含む管理ドメインが作成されます。このコマンドは、ホストと持続性設定ストアとの間の内部通信チャネルを初期化します。
コマンドの構文は次のとおりです。
hadbm createdomain [--adminpassword=password |--adminpasswordfile= file | --no-adminauthentication] [--agent=maurl] hostlist
hostlist オペランドは、それぞれが有効な IPv4 ネットワークアドレスである HADB ホストのコンマ区切りリストです。新規ドメインに組み込むすべてのホストを hostlist に含めてください。
コマンドオプションの説明は、「一般的なオプション」を参照してください。
このコマンドを使用する前に、HADB 管理エージェントが hostlist に含まれているすべてのホスト上で実行中であるかを確認してください。さらに、管理エージェントは次の条件を満たしている必要があります。
既存のドメインのメンバーではない。
同一のポートを使用するように設定されている。
UDP や TCP を介して、および IP マルチキャストを使用して相互に通信できる。
hadbm が管理ドメインを作成すると、ドメイン内のすべてのホストが使用可能になります。これで、管理エージェントがデータベースを管理する用意は整いました。HADB ドメインを作成したら、次のステップは、HADB データベースの作成です。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 createdomain と hadbm registerpackage は正常に実行されるものの hadbm create database は失敗する場合、 hadbm createdomain と hadbm registerpackage によって加えられた変更は持続します。
管理ドメインを作成します。
詳細については、「管理ドメインの作成」を参照してください。
HADB パッケージを登録します。
詳細については、「HADB パッケージの登録」を参照してください。
hadbm create コマンドを使用してデータベースを作成します。
コマンド構文については、次の節を参照してください。
dbname オペランドには データベース名を指定します。この名前は一意でなければなりません。データベース名が一意であることを確認するために、hadbm list コマンドを使用して既存のデータベース名を一覧表示します。複数のデータベースを作成する必要がなければ、デフォルトのデータベース名を使用してください。たとえば、同じセットの HADB マシン上に独立データベースで複数のクラスタを作成するには、クラスタごとに別個のデータベース名を使用します。
hadbm create コマンドは、エラーメッセージをログファイルではなくコンソールに書き込みます。
表 3–7 には、hadbm create コマンドの特殊オプションが説明されています。追加のコマンドオプションの説明は、「一般的なオプション」を参照してください。
表 3–7 hadbm create オプション
オプション (省略形) |
説明 |
デフォルト |
---|---|---|
-a |
各ノード上のデータデバイスの数。1〜8 を含みます。データデバイスには 0 から始まる番号が付けられます。 |
1 |
-d |
デバイスへのパス。デバイスには次の 4 つがあります。
|
Solaris および Linux: /var/opt/SUNWhadb Windows: C:\Sun\AppServer\SUNWhadb\vers。ここで、vers は HADB バージョン番号です。 デフォルトは、管理エージェント設定ファイル内の ma.server.dbdevicepath によって指定されます。詳細については、「設定ファイル」を参照してください。 |
-z |
各ノードのデバイスサイズ。詳細については、「デバイスサイズの指定」を参照してください。 「既存ノードへの記憶スペースの追加」の説明に従って、デバイスサイズを増やします。 |
1024M バイト 最大サイズは、オペレーティングシステムのファイルサイズまたは 256G バイトの小さい方となります。最小サイズは次のとおりです。 (4 x LogbufferSize + 16M バイト) / n ここで、n は --datadevices オプションで指定されたデータデバイスの番号です。 |
-t |
履歴ファイルへのパス。このパスはすでに存在していて、書き込み可能であることが必要です。 履歴ファイルの詳細については、「履歴ファイルの消去と保存」を参照してください。 |
デフォルトは、管理エージェント設定ファイル内の ma.server.dbhistorypath によって指定されます。詳細については、「設定ファイル」を参照してください。 Solaris および Linux:/var/opt/SUNWhadb Windows の場合: REPLACEDIR (実行時に実際の URL に置換される) をクリックします。 |
-H |
データベース内のノードのホスト名または IP アドレス (IPv4 のみ) のコンマ区切りリスト。DNS 検索への依存を避けるため、IP アドレスを使用してください。ホスト名は必ず絶対名にします。localhost や 127.0.0.1 をホスト名として使用することはできません。 詳細については、「ホストの指定」を参照してください。 |
なし |
--package=name -k |
HADB パッケージの名前 (バージョン)。パッケージが見つからない場合は、デフォルトパッケージが登録されます。 このオプションは推奨されていません。hadbm registerpackage コマンドを使用して、パッケージをドメインに登録してください。 |
なし |
--packagepath=path-L |
HADB ソフトウェアパッケージへのパス。パッケージがドメインに登録されていない場合にのみ使用します。 このオプションは推奨されていません。hadbm registerpackage コマンドを使用して、パッケージをドメインに登録してください。 |
なし |
-b |
ノード 0 に使用するポートベース番号。 後続のノードには、この番号から 20 刻みでポートベース番号が自動的に割り当てられます。各ノードはそれ自身のポートベース番号とそれに続く 5 つの連続する番号のポートを使用します。 同じマシン上で複数のデータベースを実行するには、明示的にポート番号を割り当てるように計画します。 |
15200 |
-s |
スペアノードの数。この数は、偶数かつ --hosts オプションに指定したノード数より少ない数でなければいけません。 |
0 |
-S |
name =value 書式のデータベース設定属性のコンマ区切りリスト。データベース設定属性の説明は、「履歴ファイルの消去と保存」を参照してください。 |
なし |
次に示すのは、データベースを作成するコマンドの例です。
hadbm create --spares 2 --devicesize 1024 --hosts n0,n1,n2,n3,n4,n5
--hosts オプションを使用して、データベース内のノードのホスト名または IP アドレスのコンマ区切りリストを指定します。hadbm create コマンドは、リスト内のホスト名 (または IP アドレス) ごとに 1 つのノードを作成します。ノードの数は偶数でなければなりません。重複するホスト名を使用すると、同じマシン上に異なるポート番号が指定された複数のノードが作成されます。同じマシン上のノードがミラーノードではなく、異なる DRU からでもないことを必ず確認してください。
ノードには、このオプションでリストされている順番で、ゼロから始まる番号が付けられます。最初のミラー化されたペアはノード 0 と 1、2 番目のミラーペアはノード 2 と 3 となり、以下同様です。奇数番号のノードが一方の DRU に配置され、偶数番号のノードは他方の DRU に配置されます。--spares オプションを指定すると、もっとも大きい番号のノードがスペアノードとなります。
二重ネットワークインタフェースの設定については、「ネットワーク冗長性の設定」を参照してください。
--devicesize オプションを使用して、デバイスサイズを指定します。推奨されているデバイスサイズは次のとおりです。
(4x / nd + 4l/d) / 0.99
説明:
x は、ユーザーデータの合計サイズです。
n は、--hosts オプションで指定されたノード数です。
d は、--datadevices オプションで指定された、ノードあたりのデバイス数です。
l は、属性 LogBufferSize で指定されたログバッファーサイズです。
hadbm addnodes を使用するなどして再度の断片化が行われる可能性がある場合は 、推奨されるデバイスサイズは次のようになります。
(8x / nd + 4l/d) / 0.99
ノードまたはサービスごとに異なるデバイスパスを設定するには、hadbm create の -- set オプションを使用します。デバイスには、DataDevice、NiLogDevice (ノード内部ログデバイス)、RelalgDevice (関係代数クエリーデバイス)、および NoManDevice (ノードマネージャーデバイス) の 4 種類があります。各 name =value ペアの構文は次のとおりです。ただし、-devno は、device が DataDevice の場合にのみ必要です。
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 コマンドを使用して行います。
データベースの作成がうまくいかない場合は、次の点をチェックしてください。
すべてのホスト上で管理エージェントを起動し、HADB ドメインを定義したことを確認します。詳細については、「管理エージェントの起動」を参照してください。
ファイルおよびディレクトリのアクセス権は、次のユーザーに対して、インストールパス、履歴パス、デバイスパス、設定パスへの読み取り、書き込み、および実行のアクセスを許可するように設定されている必要があります。
Sun Java System Application Server 管理ユーザー (インストール時に設定)
HADB システムユーザー
ユーザーアクセス権の設定に関する詳細については、「HADB の設定の準備」を参照してください。
Application Server および HADB ポート割り当てが、同じマシン上のほかの ポート割り当てと競合しないようにする必要があります。推奨されているデフォルトのポート割り当ては次のとおりです。
Sun Java SystemMessage Queue: 7676
IIOP: 3700
HTTP サーバー: 80
管理サーバー: 4848
HADB ノード: 各ノードは連続する 6 つのポートを使用します。たとえば デフォルトポート 15200 の場合、ノード 0 は 15200 〜 15205、ノード 1 は 15220 〜 15225 を使用し、以下同様です。
ディスク容量が適切であることも必要です。『Sun Java System Application Server 9.1 リリースノート』を参照してください。
データベース設定属性の表示および変更は、それぞれ 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 のすべての属性のリストについては、「設定属性」を参照してください。
コマンドオプションの説明は、「一般的なオプション」を参照してください。
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 では設定できません。その代わりに、データベース作成時に設定します (「データベースの作成」を参照)。
DatabaseName
DevicePath
HistoryPath
NumberOfDatadevices
Portbase
JdbcUrl (この値は、データベース作成時に --hosts および --portbase オプションに基づいて設定される)。
hadbm set を使用して ConnectionTrace と SQLTraceMode 以外のいずれかの設定属性を設定すると、HADB の順次再起動が実行されます。順次再起動では、各ノードが一度に 1 つずつ、停止して新規の設定で起動します。このとき HADB サービスは中断されません。
ConnectionTrace または SQLTraceMode を設定した場合、順次再起動は実行されませんが、変更は Application Server インスタンスから作成された新規の HADB 接続に対してのみ反映されます。
次の表に、hadbm set での変更と hadbm get での検出が可能な設定属性を一覧表示します。
表 3–8 設定属性
属性 |
説明 |
デフォルト |
範囲 |
---|---|---|---|
True に設定すると、クライアント接続 (JDBC、ODBC) が開始または終了したときに、メッセージが HADB 履歴ファイルに記録されます。 |
False |
True または False |
|
デフォルト値を変更しないでください。 |
False |
True または False |
|
データベースの名前。 |
hadb | ||
共用メモリーに割り当てられるデータバッファープールのサイズ。 |
200M バイト |
16 〜 2047M バイト |
|
ノードのデバイスサイズを指定します。推奨される DataDeviceSize のサイズについては、「デバイスサイズの指定」を参照してください。 最大値は、256G バイトとオペレーティングシステムの最大ファイルサイズの小さい方です。最小値は次のとおりです。 (4 x LogbufferSize + 16M バイト) / n ここで、n はデータデバイスの番号です。 |
1024M バイト |
32 〜 262144M バイト |
|
PackageName |
データベースが使用する HADB ソフトウェアパッケージの名前。 |
V4.x.x.x |
なし |
デバイスの場所。デバイスは次のとおりです。
|
Solaris および Linux: /var/opt/SUNWhadb Windows: C:\Sun\AppServer\SUNWhadb\vers。ここで、vers は HADB バージョン番号です。 | ||
通常または高速処理 (eager) アイドルセッション有効期限を使用するかどうかを判別します。 通常のアイドルセッション有効期限では、アイドル状態が SessionTimeout 秒を超過したセッションが期限切れとなります。 並行セッションの数がセッション最大数の EagerSessionThreshold パーセントを超えている場合は、アイドル状態が EagerSessionTimeout 秒を超過したセッションが期限切れとなります。 |
NumberOfSessions 属性の半分 |
0 〜 100 |
|
高速処理 (eager) セッション有効期限を使用している場合に、データベース接続がアイドル状態になってから期限切れになるまでの秒数。 |
120 秒 |
0 〜 2147483647 秒 |
|
データベースイベントが記録されるイベントバッファーのサイズ。0 に設定すると、イベントバッファーへのロギングは実行されません。 障害が起きている間、イベントバッファーはダンプされます。これは、障害の原因に関する有用な情報を提供し、試験的な配備の際に役立ちます。 イベントをメモリーに書き込むと、パフォーマンスが犠牲になります。 |
0M バイト |
0 〜 2097152M バイト |
|
HADB 履歴ファイルの場所。このファイルの内容は、情報、警告、およびエラーメッセージです。 これは読み取り専用属性です。 |
Solaris および Linux: /var/opt/SUNWhadb Windows: REPLACEDIR (実行時に実際の URL に置換される) | ||
ノード内部ログデバイスのサイズ。データの格納に関連する操作のトラックが保持されます。 |
12M バイト |
4 〜 128M バイト |
|
データベースの JDBC 接続 URL。 これは読み取り専用属性です。 |
なし | ||
ログバッファーのサイズ。データに関連する操作のトラックが保持されます。 |
48M バイト |
4 〜 2048M バイト |
|
HADB データベース内で許可される表の最大数。 |
1100 |
100 〜 1100 |
|
HADB ノードで使用されるデータデバイスの数。 これは読み取り専用属性です。 |
1 |
1 〜 8 |
|
HADB ノードによって割り当てられるロックの数。 |
50000 |
20000 〜 1073741824 |
|
HADB ノード用に開くことが可能なセッション (データベース接続) の最大数。 |
100 |
1 〜 10000 |
|
異なる HADB プロセス用に異なるポート番号を作成する際に使用するベースポート番号。 これは読み取り専用属性です。 |
15200 |
10000 〜 63000 |
|
関係代数クエリーに使用するデバイスのサイズ。 |
128M バイト |
32 〜 262144M バイト |
|
通常のセッション有効期限を使用している場合に、データベース接続がアイドル状態になってから期限切れになるまでの時間。 |
1800 秒 |
0 〜 2147483647 秒 |
|
履歴ファイルに書き込まれる実行された SQL クエリーに関する情報の量。 SHORT に設定すると、SQL セッションのログインとログアウトが記録されます。FULL に設定すると、準備中および実行中のすべての SQL が、パラメータ値を含めて記録されます。 |
なし |
NONE/SHORT/FULL |
|
スペアノードが、障害の発生したアクティブノードに対してノード復旧の実行を許可する最大時間。障害の発生したノードがこの時間内に回復できない場合、スペアノードが障害の発生したノードのミラーからデータのコピーを開始してアクティブになります。デフォルト値を変更しないことをお勧めします。 |
20 秒 |
0 〜 100000 秒 |
|
HADB ノードがスループットと応答時間の統計情報を履歴ファイルに書き込む間隔。無効にする場合は、0 に設定します。 次に示すのは、統計情報の行の例です。 Req-reply time: # 123, min= 69 avg= 1160 max= 9311 %=100.0 ハッシュ記号 (#) の後ろの数字は、StatInterval の間に処理された要求の数です。次の 3 つの数字は、StatInterval の間に完了したトランザクションが処理に要した時間の最小値、平均値、最大値をマイクロ秒で表したものです。パーセント記号 (%) の後ろの数字は、StatInterval の間に 15 ミリ秒以内で正常に完了したトランザクションの数です。 |
600 秒 |
0 〜 600 秒 |
|
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 |
|
True に設定すると、HADB ノードは情報をオペレーティングシステムの syslog ファイルに書き込みます。 |
True |
True または False |
|
オペレーティングシステムの syslog ファイルに保存される HADB メッセージの最小レベル。指定したレベル以上のすべてのメッセージが記録されます。たとえば、「info」に設定した場合は、すべてのメッセージが記録されます。 |
警告 |
nonealert errorwarninginfo |
|
HADB によって書き込まれるすべての syslog メッセージの前に挿入されるテキスト文字列。 |
hadb -dbname | ||
ノードに障害が発生してから、処理がミラーに引き継がれるまでの時間。デフォルト値を変更しないでください。 |
10000 (ミリ秒) |
500 〜 16000 ミリ秒 |
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 リソースに関する一般情報については、『Sun Java System Application Server 9.1 高可用性 (HA) 管理ガイド』を参照してください。
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 用に必須の接続プールのプロパティーを要約します。ノードを追加する際には serverList を変更し、それ以外のプロパティーは変更しないでください。
表 3–10 HADB 接続プールプロパティー
プロパティー |
説明 |
---|---|
asadmin create-session-store コマンドに使用する storeuser の名前。 |
|
asadmin create-session-store コマンドに使用するパスワード (storepassword)。 |
|
HADB の JDBC URL。この値を特定するには、「JDBC URL の取得」を参照してください。 データベースにノードを追加する場合は、この値を変更する必要があります。「ノードの追加」を参照してください。 |
|
必要に応じて false を指定すると、Connection.getMetaData() を呼び出すことによってデータベースが呼び出され、接続が有効になります。 |
|
必要に応じて true を指定すると、重複するコミットおよびロールバックの要求の削除、およびトランザクションが開いていない場合にはそれらの要求の無視により、パフォーマンスが向上します。 |
|
開いている接続あたりのドライバ文プールにキャッシュされる文の最大数。このプロパティーは 20 に設定します。 |
次に示すのは、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 つの円記号 (\) でエスケープします。
次の表に、HADB 用に必須の JDBC リソース設定を要約します。
表 3–11 HADB JDBC リソース設定
設定 |
説明 |
---|---|
セッション持続性設定のデフォルトの JNDI 名はjdbc/hastore です。このデフォルト名または別の名前を使用することができます。 可用性サービスを使用可能にするには、store-pool-jndi-name「持続性ストア」プロパティーの値にもこの JDNI 名を指定する必要があります。 |
|
リストから、この JDBC リソースが使用する HADB 接続プールの名前 (または ID) を選択します。詳細については、「ネットワーク冗長性の設定」を参照してください。 |
|
チェックする/True |