元の HADB 設定を拡張する 2 つの理由があります。
保存されているセッションデータのボリュームが増えて、データデバイス内の既存の記憶スペースを超過している。データデバイスが満杯になったために、トランザクションが異常終了し始める可能性があります。
ユーザー側の負荷が増えて、システムリソースが使い果たされる。さらにホストを追加することが必要です。
この節では、Application Server クラスタまたはデータベースを停止せずに HADB を拡張する方法について説明します。特に、次の点を扱います。
「HADB マシンの管理」にある関連情報も参照してください。
次のような場合に、HADB 記憶スペースを追加します。
ユーザートランザクションが、次のいずれかのエラーメッセージを出して繰り返し異常終了する。
4592: データデバイスに空きブロックがありません
4593: データデバイスに未予約ブロックがありません
hadbm deviceinfo コマンドが終始空きサイズの不足を報告する。「デバイス情報の取得」を参照してください。
ノードに使用されていないディスクスペースがある場合やディスク容量を追加する場合は、既存のノードに記憶スペースを追加することもできます。推奨されているデータデバイスサイズについては、「デバイスサイズの指定」を参照してください。
ノードに記憶スペースを追加するには、hadbm set コマンドを使用してデータデバイスサイズを増やします。
hadbm set DataDeviceSize=size
ここで、size は M バイト単位でのデータデバイスサイズです。
コマンドオプションの説明は、「汎用オプション」を参照してください。
FaultTolerant またはそれ以上のシステム状態にあるデータベースでは、データデバイスサイズを変更することによって、データや可用性を犠牲にすることなくシステムはアップグレードされます。再設定の間も、データベースは稼働状態を維持します。FaultTolerant またはそれ以上の状態ではないシステムでデバイスサイズを変更すると、データの喪失が生じます。データベースの状態の詳細については、「データベースの状態」を参照してください。
次に示すのは、データデバイスサイズを設定するコマンドの例です。
hadbm set DataDeviceSize=1024
HADB が処理能力や記憶容量をさらに必要としている場合には、マシンを追加します。HADB を実行するマシンを新たに追加するには、第 2 章「高可用性 (HA) データベースのインストールと設定」で説明されている手順に従って、HADB パッケージをインストールします。このとき、Application Server を一緒にインストールしてもしなくてもかまいません。ノードトポロジの別の形態については、『Sun Java System Application Server Enterprise Edition 8.2 配備計画ガイド』の第 3 章「トポロジの選択」を参照してください。
新規ノード上で管理エージェントを起動します。
管理ドメインを新規ホストへ拡張します。
詳細については、hadbm extenddomain コマンドを参照してください。
この新規ホスト上で新規ノードを起動します。
詳細については、「ノードの追加」を参照してください。
HADB システムの処理能力と記憶容量を増やすには、新規ノードを作成してデータベースに追加します。
ノードを追加した後で、HADB JDBC 接続プールの次のプロパティーを更新します。
serverlist プロパティー。
通常プールサイズ。一般には、新規ノードにつき 8 つの接続を追加します。詳細については、『Sun Java System Application Server Enterprise Edition 8.2 配備計画ガイド』の「システムのサイジング」を参照してください。
ノードを追加するには、hadbm addnodes コマンドを使用します。コマンド構文は次のとおりです。
hadbm addnodes [--no-refragment] [--spares=sparecount] [--historypath=path] [--devicepath=path] [--set=attr-name-value-list] [--dbpassword=password | --dbpasswordfile=file ] [--adminpassword=password | --adminpasswordfile=file] --hosts=hostlist [dbname]
dbname オペランドにはデータベース名を指定します。デフォルトは hadb です。データベースの状態は、HAFaultTolerant またはFaultTolerant である必要があります。データベースの状態の詳細については、「データベースの状態」を参照してください。
--devicepath と --historypath オプションを指定しない場合、新規ノードは既存データベースと同じデバイスパスを持ち、同じ履歴ファイルを使用します。
ノードを追加すると、既存データの再断片化と再配布が実行されて、システムに新規ノードが組み込まれます。オンラインで再断片化を実行するには、再断片化が終了するまで古いデータと新しいデータを同時に保持できるだけの十分なスペースが HADB ノードのディスクに必要です。つまり、ユーザーデータサイズは、ユーザーデータに使用可能なスペースの 50% を超えてはいけません。詳細については、「デバイス情報の取得」を参照してください。
システムが軽くロードされるときにノードを追加するのが最善です。
次に例を示します。
hadbm addnodes -adminpassword=password --hosts n6,n7,n8,n9
次の表で、hadbm addnodes の特別なコマンドオプションについて説明します。その他のオプションの説明は、「汎用オプション」を参照してください。
表 3–13 hadbm addnodes オプション
オプション |
説明 |
デフォルト |
---|---|---|
-r |
ノード作成中はデータベースを再断片化しないでください。その場合には、後で hadbm refragment コマンドを使用してデータベースを再断片化し、新規ノードを使用します。再断片化の詳細については、「データベースの再断片化」を参照してください。 再断片化するための十分なデバイススペースがない場合は、より多い数のノードを持つデータベースを作成し直します。「データベースの再作成によるノードの追加」を参照してください。 |
適用外 |
-s |
すでに存在するスペアノードに追加する新規スペアノードの数。この数は、偶数、かつ追加するノードの数以下でなければなりません。 |
0 |
-d |
デバイスへのパス。デバイスは次のとおりです。
|
Solaris および Linux: HADB_install_dir/device Windows: C:\Sun\AppServer\SUNWhadb\vers。ここで、vers は HADB バージョン番号です。 |
-H |
データベース内の新規ノード用の新しいホスト名を一覧にしたコンマ区切りリスト。リスト中のコンマで区切られた項目ごとに 1 つのノードが作成されます。ノードの数は偶数でなければなりません。HADB ホストの IP アドレスは、IPv4 アドレスである必要があります。 重複するホスト名を使用すると、同じマシン上に異なるポート番号が指定された複数のノードが作成されます。同じマシン上のノードがミラーノードではないことを確認してください。 奇数番号のノードが一方の DRU に配置され、偶数番号のノードは他方の DRU に配置されます。--spares を使用すると、もっとも大きい番号のノードが新規スペアノードとなります。 二重のネットワークインタフェースを持つデータベースを作成した場合も、同じ方法で新規ノードを構成する必要があります。「ネットワーク冗長性の設定」を参照してください。 |
なし |
データベースを再断片化して、新たに作成したノードにデータを格納します。再断片化により、すべてのアクティブなノードにデータが均一に分散します。
データベースを再断片化するには、hadbm refragment コマンドを使用します。コマンド構文は次のとおりです。
hadbm refragment [--dbpassword=password | --dbpasswordfile=file] [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] [dbname]
dbname オペランドにはデータベース名を指定します。デフォルトは hadb です。データベースの状態は、HAFaultTolerant またはFaultTolerant である必要があります。データベースの状態の詳細については、「HADB の状態の取得」を参照してください。
コマンドオプションの説明は、「汎用オプション」を参照してください。詳細については、hadbm-refragment(1)を参照してください。
オンラインで再断片化を実行するには、再断片化が終了するまで古いデータと新しいデータを同時に保持できるだけの十分なスペースが HADB ノードのディスクに必要です。つまり、ユーザーデータサイズは、ユーザーデータに使用可能なスペースの 50% を超えてはいけません。詳細については、「デバイス情報の取得」を参照してください。
システムが軽くロードされるときにデータベースを再断片化するのが最善です。
何回試してもこのコマンドが失敗する場合は、「データベースの再作成によるノードの追加」を参照してください。
次に例を示します。
hadbm refragment
新規ノードを追加して、データデバイススペースの不足やその他の理由からオンラインでの再断片化が何度も失敗する場合は、新規ノードを持つデータベースを再作成します。これは、既存のユーザーデータとスキーマデータの喪失を招きます。
次の手順により、プロセス全体の HADB 可用性を維持することができます。
各 Application Server インスタンスに対して、次のようにします。
ロードバランサの Application Server インスタンスを無効にします。
セッション持続性を無効にします。
Application Server インスタンスを再起動します。
ロードバランサの Application Server インスタンスを再度有効にします。
可用性を維持する必要がない場合は、ロードバランサのすべてのサーバーインスタンスを無効にしてすぐに再度有効にできます。こうすることで、時間を節約するとともに、古いセッションデータのフェイルオーバーを防ぎます。
「データベースの停止」で説明されている手順に従って、データベースを停止します。
「データベースの削除」で説明されている手順に従って、データベースを削除します。
「データベースの作成」で説明されている手順に従って、追加のノードでデータベースを再作成します。
「JDBC 接続プールの設定」で説明されている手順に従って、JDBC 接続プールを再設定します。
セッション持続性ストアを再ロードします。
各 Application Server インスタンスに対して、次のようにします。
ロードバランサの Application Server インスタンスを無効にします。
セッション持続性を有効にします。
Application Server インスタンスを再起動します。
ロードバランサの Application Server インスタンスを再度有効にします。
可用性を維持する必要がない場合は、ロードバランサのすべてのサーバーインスタンスを無効にしてすぐに再度有効にできます。こうすることで、時間を節約するとともに、古いセッションデータのフェイルオーバーを防ぎます。