Almacenamiento de registros de transacciones en una base de datos relacional

Puede elegir almacenar los registros de transacciones de Liberty en una base de datos relacional, en lugar de como archivos de sistema operativo. Esta característica proporciona soporte de alta disponibilidad (HA) sin tener que utilizar un sistema de archivos compartidos. Para uso de producción, se soporta el almacenamiento de registros de servicio de transacciones en una base de datos relacional.

Acerca de esta tarea

El servicio de transacciones WebSphere Application Server escribe información en un registro de transacciones para cada transacción global que implica dos o más recursos o que se distribuye entre varios servidores. Estas transacciones se inician o se detienen por medio de aplicaciones o mediante el contenedor en el que se despliegan. El servicio de transacciones mantiene registros de transacciones para garantizar la integridad de las transacciones. La información se escribe en los registros de transacciones en la fase de preparación de una transacción distribuida, de modo que si un servidor con transacciones activas se reinicia después de una anomalía, el servicio de transacciones puede utilizar los registros para volver a reproducir las transacciones dudosas. Esto permite que el sistema global pueda recuperar un estado coherente.

La configuración predeterminada es almacenar los registros de transacciones como archivos de sistema operativo. Este soporte de transacciones de alta disponibilidad requiere el uso de un sistema de archivos compartidoss para alojar los registros de transacciones, como, por ejemplo, un almacenamiento conectado a la red (NAS) montado en NFSv4 o una red de área de almacenamiento (SAN).

Pero puede elegir almacenar los registros de transacciones en un sistema de gestión de base de datos relacional (RDBMS). Esta opción de configuración está destinada a los clientes que trabajan en un entorno de alta disponibilidad. Esta característica permite a los clientes, particularmente a aquellos con una inversión en tecnología de bases de datos de alta disponibilidad, utilizar su base de datos de alta disponibilidad como un repositorio compartido para los registros de transacciones, como alternativa al uso de un sistema de archivos compartidos. Puede utilizar cualquier tipo de base de datos que Liberty soporte.

Puede configurar un servidor de aplicaciones para recuperar los registros de un servidor de aplicaciones distinto. El servidor de aplicaciones propietario original no debe estar en ejecución cuando se utiliza este procedimiento. Normalmente se emplea para realizar cualquier recuperación transaccional pendiente cuando los registros de servicio de transacciones están disponibles pero no se puede iniciar el servidor de aplicaciones propietario original.

El principal de recuperación para Liberty es el mismo que para WebSphere Application Server tradicional. Consulte los recursos siguientes para obtener más información sobre la recuperación:

Recuerde: No configure servidores de aplicaciones para utilizar las mismas tablas. Si lo hace, se pueden producir problemas de integridad de datos y corrupción de registro. Si se especifica un sufijo, el sufijo se añade directamente al nombre de la tabla y el índice.

Procedimiento

Para configurar los registros de transacciones de Liberty que se van a almacenar en un RDBMS, complete los pasos siguientes:

  1. Configure un origen de datos no transaccional dedicado en el archivo de Liberty server.xml.
    El siguiente fragmento de ejemplo del archivo server.xml muestra cómo configurar Liberty para almacenar los registros de transacciones en una base de datos DB2:
    <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. Opcional: Cree las tablas de base de datos.

    Liberty intenta crear las tablas de base de datos necesarias cuando se inicia el servidor por primera vez. Si la creación de estas bases de datos no es posible, por ejemplo, debido a permisos insuficientes, el servidor no se inicia. En un caso así, debe crear manualmente las dos tablas de base de datos.

    Para almacenar registros de transacciones en un RDBMS para un servidor de aplicaciones, cada servidor debe tener sus propias tablas. Para una configuración de WebSphere Application Server tradicional, especifique un sufijo de tabla en el URL personalizado que sea exclusivo para cada servidor de aplicaciones. WebSphere Application Server: Almacenamiento de registros de transacciones y compensación en una base de datos relacional para alta disponibilidad se aplica al producto tradicional, pero muestra la creación de los nombres de tabla y sufijo. En Liberty, el sufijo se especifica utilizando el atributo transactionLogDBTableSuffix del elemento de transacción. Consulte Transaction Manager (transacción) para obtener información sobre transactionLogDBTableSuffix.

    Las siguientes estructuras de DDL muestran cómo crear las tablas en 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) 
    Las siguientes estructuras de DDL muestran cómo crear las tablas en la versión de DB2 anterior:
    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) 
    Las siguientes estructuras de DDL muestran cómo crear índices para estas tablas:
    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)
    Las siguientes estructuras de DDL muestran cómo crear la tabla de base de datos en 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)

Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_store_logs_in_rdb.html