[IBM i][AIX Solaris HP-UX Linux Windows]

高可用性のための、リレーショナル・データベースでのトランザクション・ログおよび補正ログの保管

オプションで、オペレーティング・システム・ファイルとしてではなく、リレーショナル・データベース内の WebSphere® Application Server トランザクションおよび補正ログを保管するよう選択できます。この機能により、ファイル共有システムを使用することなく、高可用性 (HA) サポートが提供されます。

このタスクについて

WebSphere Application Server トランザクション・サービスは、複数のリソースを含む、または複数のサーバー間で分散される、各グローバル・トランザクションのトランザクション・ログに情報を書き込みます。これらのトランザクションは、アプリケーションによって、もしくはそのトランザクションがデプロイされているコンテナーによって、開始または停止されます。トランザクション・サービスは、トランザクションの保全性を確保するため、トランザクション・ログを保持します。トランザクション・ログには、分散トランザクションの準備フェーズで情報が書き込まれます。 アクティブなトランザクションがある WebSphere Application Server が障害の後に再始動された場合、トランザクション・サービスはログを使用して未確定のトランザクションをすべて再生できます。 この水準の完全性により、システム全体を整合した状態に戻すことが可能になります。

WebSphere Application Server の以前のリリースでは、トランザクション・ログは、オペレーティング・システム・ファイルとして保管されています。 WebSphere Application Server バージョン 8.5.5 以降では、このセットアップがデフォルト構成のままです。リレーショナル・データベースへのトランザクション・ログの保管を選択することもできます。この構成オプションは、主に高可用性 (HA) 環境に使用されます。また、前のリリースの WebSphere Application Server では、HA トランザクションのサポートのために、トランザクション・ログをホストするために共有ファイル・システム (NFSv4 でマウントされた Network Attached Storage (NAS) やストレージ・エリア・ネットワーク (SAN) など) を使用する必要がありました。この新機能により、特に HA データベース・テクノロジーに投資しているユーザーは、共有ファイル・システムを使用する代わりに、 HA データベースをトランザクション・ログ用の共有リポジトリーとして使用できるようになります。

注: トランザクション・ログおよび補正ログをリレーショナル・データベースに保管するという現行の実装は、DB2® および Oracle の 高可用性機能をサポートします。例えば、 DB2 HADR または Oracle RAC DataGuard など、障害が発生した場合に別のデータベース・インスタンスへの再接続を可能にするクライアント固有フィーチャーがサポートされます。他のベンダーによるリレーショナル・データベースでの高可用性機能は現在はサポートされていません。

現行の実装では、コア・リカバリー・ログ機能で予期しない JDBC 例外が発生した場合はトランザクション・ログの記録は使用不可にされ、 未完了トランザクションを復旧できるようにサーバーのシャットダウンが必要です。サーバーが再始動されるまでは再接続は試行されず、 現行の実装では、状態が一過性かどうかを判別するための試行は行われません。

WebSphere Application Server バージョン 8.5.5 以降では、同じく HA 環境で作業するお客様向けに用意された同様の機能を使用して、リレーショナル・データベースに補正リカバリー・ログを保管できます。WebSphere Application Server 補正サービスにより、まったく異なるシステムにあるアプリケーションが、アトミック・トランザクションではなくもっと疎結合のアクティビティーを調整できます。このサービスは、 システム障害の後で補正を実行するために必要な情報を専用リカバリー・ログに保管します。

トラブルの回避 (Avoid trouble) トラブルの回避 (Avoid trouble): SQL リカバリー・ログのデータ・ソースには、次の最大プール・サイズが必要です。
(2 * the number of potential servers being peer recovered) + 2
この最大プール・サイズは、すべての関連トランザクション・ログをクローズするのに十分な数のデータベース接続に対応できます。最大プール・サイズがこの値に設定されていないと、 使用可能な接続が十分でないため、エラー・メッセージ J2CA0045E が出されることがあります。gotcha

手順

クラスター内の各サーバーに対して TransactionLogDirectory 属性および CompensationLogDirectory 属性を設定して高可用性を使用可能にするには、 その前に、サーバーごとにトランザクション・ログ・ロケーションおよび補正ログ・ロケーションを構成する必要があります。複数のサーバーがリレーショナル・データベース管理システム (RDBMS) リソースについて競合しないようにするため、 クラスター内の各サーバーで別々に tablesuffix プロパティーを指定することによって、 サーバーがそれぞれ固有のトランザクション・ログ・ロケーションおよび補正ログ・ロケーションを参照する必要があります。例えば、 AppCluster という名前のクラスターに以下の 4 つのメンバー・サーバーがあるとします。
  • AppClusterMember1
  • AppClusterMember2
  • AppClusterMember3
  • AppClusterMember4
この場合、AppCluster に以下の表サフィックスを定義できます。
  • App1 (AppClusterMember1 用)
  • App2 (AppClusterMember2 用)
  • App3 (AppClusterMember3 用)
  • App4 (AppClusterMember4 用)

以下のステップを実行します。

  1. トランザクション・ログおよび補正リカバリー・ログの保管のために、非トランザクション・データ・ソースを以下のとおり構成してください。
    1. ご使用の RDBMS 実装用の JDBC プロバイダーを作成します。 非 XA の実装タイプを指定してください。
    2. JAAS J2C 認証データ別名を作成します。このデータ別名は、RDBMS への接続に使用されるセキュリティー資格情報を定義します。RDBMS で定義されたクレデンシャルは、データベース内に表を作成するための十分な権限を持っている必要があります。
    3. ステップ a で作成した JDBC プロバイダーを使用して、データ・ソースを作成します。そのコンポーネント管理の認証別名は、ステップ b で作成した JAAS 別名に設定する必要があります。RDBMS への接続を指定するために、データ・ソースの URL を定義してください。
    4. 以下のステップを実行して、新規データ・ソースが非トランザクションとなるよう構成してください。
      1. 新規作成したデータ・ソースを開きます。
      2. 「追加プロパティー」の下の「WebSphere Application Server データ・ソース・プロパティー」をクリックします。
      3. 「非トランザクション・データ・ソース」チェック・ボックスを選択します。
      4. 変更を保存します。
  2. リレーショナル・データベースにトランザクションを保管するようトランザクション・サービスを構成します。
    1. WebSphere Application Server 管理コンソールで、「サーバー」 > 「サーバー・タイプ」 > 「WebSphere Application Server」 > server_name とクリックします。 指定したアプリケーション・サーバーのプロパティーが表示されます。
    2. 「コンテナー設定」セクションで、「コンテナー・サービス」 > 「トランザクション・サービス」をクリックします。 「トランザクション・サービス設定」ページが表示されます。
    3. 「構成」タブがまだ表示されていなければ選択します。
    4. 「トランザクション・ログ・ディレクトリー」フィールドにカスタム・ストリングを入力し、データベースにログを保管するよう指示します。 このストリングは以下の形式でなければなりません。
      custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=data_source_jndi_name,tablesuffix=suffix
      ここで、 data_source_jndi_name は、前に作成された非トランザクション・データ・ソースの JNDI 名であり、 suffix は、HA クラスターの各メンバーに対して一意的にラベルを付けるために設定する必要のあるストリングです。
      制約事項: Oracle データベースを使用している場合、suffix ストリングの長さが 15 文字を超えてはなりません。
  3. (オプション) WebSphere Application Server で補正サービスまたはアクティビティー・サービスを使用することを計画している場合は、リレーショナル・データベースにトランザクションを保管するよう補正サービスを構成します。
    1. WebSphere Application Server 管理コンソールで、「サーバー」 > 「サーバー・タイプ」 > 「WebSphere Application Server」 > server_name とクリックします。 指定したアプリケーション・サーバーのプロパティーが表示されます。
    2. 「コンテナー設定」セクションで、「コンテナー・サービス」 > 「補正サービス」をクリックします。 「補正サービス設定」ページが表示されます。
    3. 「構成」タブがまだ表示されていなければ選択します。
    4. 「リカバリー・ログ・ディレクトリー」フィールドにカスタム・ストリングを入力し、データベースにログを保管するよう指示します。 このストリングは以下の形式でなければなりません。
      custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=data_source_jndi_name,tablesuffix=suffix
      ここで、 data_source_jndi_name は、前に作成された非トランザクション・データ・ソースの JNDI 名であり、 suffix は、HA クラスターの各メンバーに対して一意的にラベルを付けるために設定する必要のあるストリングです。
      制約事項: Oracle データベースを使用している場合、suffix ストリングの長さが 15 文字を超えてはなりません。
  4. (オプション) データベース表を作成します。

    WebSphere Application Server は、最初に開始するときに、必要なデータベース表を作成しようとします。 例えば十分なアクセス権がないなどの理由でこの作成が可能でない場合、サーバーは始動できません。そのような場合、3 つのデータベース表を手動で作成する必要があります。

    以下の DDL は、スタンドアロン・サーバー環境に適した典型的なものです。 スタンドアロン環境では、トランザクション・サービスをサポートするために、2 つのデータベース表 (トランザクション・ログ表とパートナー・ログ表) が必要です。 補正サービスまたはアクティビティー・サービスの使用を計画している場合、3 つ目の補正ログ表も必要です。

    表名は環境に合わせて調整できます。例えば、 AppCluster という名前のクラスターに以下の 4 つのメンバー・サーバーがある場合は、4 つのトランザクション・ログ表、4 つのパートナー・ログ表、および、オプションで 4 つの補正ログ表を作成する必要があります。
    • AppClusterMember1
    • AppClusterMember2
    • AppClusterMember3
    • AppClusterMember4
    この場合、AppCluster 用に以下の表を定義できます。
    クラスター名 サーバー名 トランザクション・ログ表 パートナー・ログ表 補正ログ表
    AppCluster AppClusterMember1 WAS_TRAN_LOGApp1 WAS_PARTNER_LOGApp1 WAS_COMP_LOGApp1
      AppClusterMember2 WAS_TRAN_LOGApp2 WAS_PARTNER_LOGApp2 WAS_COMP_LOGApp2
      AppClusterMember3 WAS_TRAN_LOGApp3 WAS_PARTNER_LOGApp3 WAS_COMP_LOGApp3
      AppClusterMember4 WAS_TRAN_LOGApp4 WAS_PARTNER_LOGApp4 WAS_COMP_LOGApp4
    以下の DDL は、App1 という表サフィックスを持つデータベース表を DB2 で作成する方法を示しています。
    CREATE TABLE WAS_TRAN_LOGApp1(
      SERVER_NAME VARCHAR(128),
      SERVICE_ID SMALLINT,
      RU_ID BIGINT,
      RUSECTION_ID BIGINT,
      RUSECTION_DATA_INDEX SMALLINT,
      DATA LONG VARCHAR FOR BIT DATA) 
    CREATE TABLE WAS_PARTNER_LOGApp1(
      SERVER_NAME VARCHAR(128),
      SERVICE_ID SMALLINT,
      RU_ID BIGINT,
      RUSECTION_ID BIGINT,
      RUSECTION_DATA_INDEX SMALLINT,
      DATA LONG VARCHAR FOR BIT DATA) 
    CREATE TABLE WAS_COMP_LOGApp1(
      SERVER_NAME VARCHAR(128),
      SERVICE_ID SMALLINT,
      RU_ID BIGINT,
      RUSECTION_ID BIGINT,
      RUSECTION_DATA_INDEX SMALLINT,
      DATA LONG VARCHAR FOR BIT DATA) 
    以下の DDL 構造は、Oracle でデータベース表を作成する方法を示しています。
    CREATE TABLE WAS_TRAN_LOGApp1(
      SERVER_NAME VARCHAR(128),
      SERVICE_ID SMALLINT,
      RU_ID NUMBER(19),
      RUSECTION_ID NUMBER(19),
      RUSECTION_DATA_INDEX SMALLINT,
      DATA BLOB)
    CREATE TABLE WAS_PARTNER_LOGApp1(
      SERVER_NAME VARCHAR(128),
      SERVICE_ID SMALLINT,
      RU_ID NUMBER(19),
      RUSECTION_ID NUMBER(19),
      RUSECTION_DATA_INDEX SMALLINT,
      DATA BLOB)
    CREATE TABLE WAS_COMP_LOGApp1(
      SERVER_NAME VARCHAR(128),
      SERVICE_ID SMALLINT,
      RU_ID NUMBER(19),
      RUSECTION_ID NUMBER(19),
      RUSECTION_DATA_INDEX SMALLINT,
      DATA BLOB)

AppCluster という名前のクラスターに 4 つのメンバー・サーバー (AppClusterMember1、AppClusterMember2、AppClusterMember3、および AppClusterMember4) がある場合、次のようにログ・ロケーションを構成します。
クラスター名 サーバー名 トランザクション・ログ表 補正ログ表
AppCluster AppClusterMember1 custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=jdbc/tranlog,tablesuffix=App1 custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=jdbc/tranlog,tablesuffix=App1
AppClusterMember2 custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=jdbc/tranlog,tablesuffix=App2 custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=jdbc/tranlog,tablesuffix=App2
AppClusterMember3 custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=jdbc/tranlog,tablesuffix=App3 custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=jdbc/tranlog,tablesuffix=App3
AppClusterMember4 custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=jdbc/tranlog,tablesuffix=App4 custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=jdbc/tranlog,tablesuffix=App4
この例では、表サフィックスは次のように設定されます。
  • AppClusterMember1
  • AppClusterMember2
  • AppClusterMember3
  • AppClusterMember4
以下の名前のデータベース表が作成されます。
  • WAS_TRAN_LOGApp1
  • WAS_TRAN_LOGApp2
  • WAS_TRAN_LOGApp3
  • WAS_TRAN_LOGApp4
  • WAS_PARTNER_LOGApp1
  • WAS_PARTNER_LOGApp2
  • WAS_PARTNER_LOGApp3
  • WAS_PARTNER_LOGApp4
  • WAS_COMP_LOGApp1
  • WAS_COMP_LOGApp2
  • WAS_COMP_LOGApp3
  • WAS_COMP_LOGApp4

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjta_store_logs_in_rdb
ファイル名:tjta_store_logs_in_rdb.html