リレーショナル・データベースへのトランザクション・ログの保管

Liberty のトランザクション・ログをオペレーティング・システム・ファイルとして保管する代わりに、リレーショナル・データベースに保管することを選択できます。このフィーチャーによって、 共有ファイル・システムを使用しなくとも高可用性 (HA) サポートが提供されます。リレーショナル・データベース でのトランザクション・サービス・ログの保管は、実動用にサポートされます。

このタスクについて

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

デフォルト構成では、トランザクション・ログをオペレーティング・システム・ファイルとして保管します。この HA トランザクションのサポートのために、 トランザクション・ログをホストするための共有ファイル・システム (例えば、NFSv4 がマウントされた Network Attached Storage (NAS) または Storage Area Network (SAN)) を使用することが必要です。

しかし、リレーショナル・データベース管理システム (RDBMS) 内にトラ ンザクション・ログを保管するよう選択することができます。この構成オプションは、HA 環境で作業するお 客様を対象としています。このフィーチャーにより、特に HA データベース・テクノロジーに投資されているお客様が、 共有ファイル・システムを使用する代わりに、HA データベースをトランザクション・ログ用の共有リポジトリーとして 使用できるようになります。Liberty がサポートする任意のデータベース・タイプを使用できます。

アプリケーション・サーバーを構成して、別のアプリケーション・サーバーのログをリカバリーできます。 この手順を実行している場合は、元の所有アプリケーション・サーバーは実行してはなりません。これは通常は、 トランザクション・サービス・ログは使用可能でも元の所有アプリケーション・サーバーを開 始できない場合に、未完了のトランザクション・リカバリーの実行に使用されます。

Liberty のリカ バリーの基本は、WebSphere Application Server traditional の場合と同様です。リカバリーについて詳しくは、以下の資料を参照してください。

要確認: 同じ表を使うようにアプリケーション・サーバーを構成しないでください。そうすると、 データ保全性の問題とログの破損を引き起こす可能性があります。サフィックスが指定されている場合は、サフ ィックスが表の名前と索引の両方に直接付加されます。

手順

RDBMS 内に Liberty のトランザクション・ログを保管するように構成するには、以下のステップを実行します。

  1. Libertyserver.xml ファイル内に、専用の非トランザクション・データ・ソースを構成します。
    server.xml ファイルから抜き出した以下の例は、トランザクション・ログを DB2® データベースに保管する Liberty を構成する方法を示しています。
    <transaction> 
      <dataSource transactional="false">
        <jdbcDriver libraryRef="DB2JCC4LIB"/>
        <properties.db2.jcc currentSchema="CBIVP"
          databaseName="SAMPLE" driverType="4"
          portNumber="50000" serverName="localhost" 
          user="db2admin" password="{xor}Oz1tPjsyNjE=" />
      </dataSource> 
    </transaction> 
    
    <library id="DB2JCC4LIB">
      <fileset dir="C:/SQLLIB/java" includes="db2jcc4.jar db2jcc_license_cu.jar"/>
    </library>
  2. オプション: データベース表を作成します。

    Liberty は、サーバーが最初に始動されたときに、必要なデータベース表を作成しようとします。例えば権限が不十分であるなどの理由でこれらのデータベースの作成が不可能な場合、サーバーは始動できません。このような状況では、これら 2 つのデータベース表は手動で作成する必要があります。

    アプリケーション・サーバーの RDBMS にトランザクション・ログを保管 するために、各サーバーに独自の表が必要です。 WebSphere Application Server traditional 構成では、 各アプリケーション・サーバーに固有のカスタム URL で表のサフィックスを指定します。WebSphere Application Server: 高可用性に対応したリレーショナル・データ ベースへのトランザクション・ログと補正ログの保管は、 Traditional 製品に適用されますが、サフィックスと表の名前の作成を示しています。 Liberty では、 サフィックスはトランザクション・エレメント transactionLogDBTableSuffix 属性を使用して指定されます。 transactionLogDBTableSuffix について詳しくは、トランザクション・マネージャー (トランザクション) (Transaction Manager (transaction)) を参照してください。

    以下の DDL 構造は、DB2 で表を作成する方法を示しています。
    CREATE TABLE WAS_TRAN_LOG(
      SERVER_NAME VARCHAR(128),
      SERVICE_ID SMALLINT,
      RU_ID BIGINT,
      RUSECTION_ID BIGINT,
      RUSECTION_DATA_INDEX SMALLINT,
      DATA BLOB)
    CREATE TABLE WAS_PARTNER_LOG(
      SERVER_NAME VARCHAR(128),
      SERVICE_ID SMALLINT,
      RU_ID BIGINT,
      RUSECTION_ID BIGINT,
      RUSECTION_DATA_INDEX SMALLINT,
      DATA BLOB)
    以下の DDL 構成は、旧 DB2 バージョンで表を作成する方法を示しています。
    CREATE TABLE WAS_TRAN_LOG(
      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_LOG(
      SERVER_NAME VARCHAR(128),
      SERVICE_ID SMALLINT,
      RU_ID BIGINT,
      RUSECTION_ID BIGINT,
      RUSECTION_DATA_INDEX SMALLINT,
      DATA LONG VARCHAR FOR BIT DATA) 
    以下の DDL 構造は、これらの表で索引を作成する方法を示しています。
    CREATE INDEX IXWSTRAN_LOG ON WAS_TRAN_LOG (RU_ID ASC, SERVICE_ID ASC, SERVER_NAME ASC)
    CREATE INDEX IXWSPARTNER_LOG ON WAS_PARTNER_LOG (RU_ID ASC, SERVICE_ID ASC, SERVER_NAME ASC)
    以下の DDL 構造は、Oracle でのデータベース表の作成方法を示しています。
    CREATE TABLE WAS_TRAN_LOG(
      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_LOG(
      SERVER_NAME VARCHAR(128),
      SERVICE_ID SMALLINT,
      RU_ID NUMBER(19),
      RUSECTION_ID NUMBER(19),
      RUSECTION_DATA_INDEX SMALLINT,
      DATA BLOB)

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

ファイル名: twlp_store_logs_in_rdb.html