Transaktionsprotokolle in einer relationalen Datenbank speichern

Sie können Ihre Liberty-Transaktionsprotokolle in einer relationalen Datenbank anstatt als Betriebssystemdateien speichern. Dieses Feature bietet Unterstützung der Hochverfügbarkeit ohne Verwendung eines gemeinsam genutzten Dateisystems. Das Speichern von Transaktionsserviceprotokollen in einer relationalen Datenbank wird für den Produktionseinsatz unterstützt.

Informationen zu diesem Vorgang

Der Transaktionsservice von WebSphere Application Server schreibt für jede globale Transaktion, an der zwei oder mehr Ressourcen beteiligt sind oder die auf mehrere Server verteilt ist, Informationen in ein Transaktionsprotokoll. Diese Transaktionen werden entweder von Anwendungen oder von dem Container, in dem sie implementiert sind, gestartet oder gestoppt. Der Transaktionsservice verwendet Transaktionsprotokolle, um die Integrität von Transaktionen sicherzustellen. Die Informationen werden in der Vorbereitungsphase einer verteilten Transaktion in die Transaktionsprotokolle geschrieben. Wenn ein Server mit aktiven Transaktionen nach einem Ausfall erneut gestartet wird, kann der Transaktionsservice die Protokolle verwenden, um alle unbestätigten Transaktionen zu wiederholen. Dadurch kann das Gesamtsystem wieder in einen konsistenten Zustand versetzt werden.

Die Standardkonfiguration besteht darin, Transaktionsprotokolle als Betriebssystemdateien zu speichern. Diese Unterstützung von HA-Transaktionen erfordert die Verwendund eines gemeinsam genutzten Dateisystem, um die Transaktionsprotokolle, wie z. B. ein an NFSv4 angehängter NAS (Network-attached Storage) oder ein SAN (Storage Area Network), zu hosten.

Sie können jedoch auswählen, dass die Transaktionsprotokolle in einem Managementsystem für relationale Datenbanken (RDBMS) gespeichert werden sollen. Diese Konfigurationsoption zielt auf Kunden ab, die in einer HA-Umgebung (High Availability, hohe Verfügbarkeit) arbeiten. Als Alternative zur Verwendung eines gemeinsam genutzten Dateisystems können Kunden, insbesondere diejenigen, die über eine HA-Datenbanktechnologie verfügen, mit diesem Feature ihre HA-Datenbank als gemeinsames Repository für die Transaktionsprotokolle verwenden. Sie können jeden Datenbanktyp verwenden, der von Liberty unterstützt wird.

Sie können einen Anwendungsserver für die Wiederherstellung der Protokolle eines anderen Anwendungsservers konfigurieren. Der ursprüngliche Anwendungsserver darf nicht aktiv sein, wenn Sie diese Prozedur verwenden. Sie wird normalerweise verwendet, um eine ausstehende transaktionsorientierte Wiederherstellung auszuführen, wenn die Protokolle des Transaktionsservice verfügbar sind, aber der ursprüngliche Anwendungsserver nicht gestartet werden kann.

Der Principal der Wiederherstellung für Liberty ist derselbe wie für WebSphere Application Server Traditional. Weitere Informationen zur Wiederherstellung finden Sie in den folgenden Ressourcen:

Hinweis: Konfigurieren Sie keine Anwendungsserver für die Verwendung derselben Tabellen. Dies kann zu Datenintegritätsproblemen und fehlerhaften Protokollen führen. Wenn ein Suffix angegeben wird, wird das Suffix direkt an den Namen der Tabelle und an den Index angehängt.

Vorgehensweise

Führen Sie die folgenden Schritte aus, um die Liberty-Transaktionsprotokolle so zu konfigurieren, dass sie in einem Managementsystem für relationale Datenbanken (RDBMS) gespeichert werden:

  1. Konfigurieren Sie eine dedizierte, nicht transaktionsorientierte Datenquelle in der Liberty-Datei server.xml.
    Der folgende Beispielauszug aus der Datei server.xml zeigt, wie Sie Liberty konfigurieren müssen, damit die zugehörigen Transaktionsprotokolle in einer DB2-Datenbank gespeichert werden:
    <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. Optional: Erstellen Sie die Datenbanktabellen.

    Liberty versucht, beim ersten Serverstart die erforderlichen Datenbanktabellen zu erstellen. Wenn diese Datenbanken nicht erstellt werden können, weil beispielsweise eine Berechtigung unzureichend ist, kann der Server nicht gestartet werden. Unter diesen Bedingungen müssen Sie die zwei Datenbanktabellen manuell erstellen.

    Damit Transaktionsprotokolle in einem RDBMS für einen Anwendungsserver gespeichert werden können, muss jeder Server eigene Tabellen haben. Für eine WebSphere Application Server Traditional-Konfiguration geben Sie ein Tabellensuffix in der angepassten URL an, das für die einzelnen Anwendungsserver eindeutig ist. Die Informationen unter WebSphere Application Server: Storing transaction and compensation logs in a relational database for high availability gelten für das Produkt WebSphere Application Server Traditional, veranschaulicht jedoch die Erstellung von Suffix- und Tabellennamen. In Liberty wird das Suffix über das Transaktionselementattribut transactionLogDBTableSuffix angegeben. Weitere Informationen zu transactionLogDBTableSuffix finden Sie unter Transaktionsmanager (transaction).

    Die folgenden DDL-Strukturen zeigen, wie die Tabellen in DB2 erstellt werden müssen:
    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)
    Die folgenden DDL-Strukturen zeigen, wie die Tabellen in der bisherigen DB2-Version erstellt wurden:
    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) 
    Die folgenden DDL-Strukturen zeigen, wie Indizes für diese Tabellen erstellt werden:
    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)
    Die folgenden DDL-Strukturen zeigen, wie die Datenbanktabelle unter Oracle erstellt werden:
    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)

Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_store_logs_in_rdb.html