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

Almacenamiento de registros de transacciones y compensación en una base de datos relacional para alta disponibilidad

Opcionalmente, puede elegir almacenar los registros de transacciones y compensación de WebSphere Application Server en una base de datos relacional en lugar de hacerlo como archivos del sistema operativo. Esta característica proporciona soporte de alta disponibilidad (HA) sin tener que utilizar un sistema de archivos compartidos.

Acerca de esta tarea

El servicio de transacciones de WebSphere Application Server escribe información en un registro de transacciones para cada transacción global en la que intervienen dos o más recursos o que se distribuye entre varios servidores. Estas transacciones se inician o detienen mediante aplicaciones o mediante el contenedor en el que se despliegan. El servicio de transacciones mantiene registros de transacciones para asegurar la integridad de las transacciones. Se escribe información en los registros de transacciones durante la fase de preparación de una transacción distribuida. Si un WebSphere Application Server con transacciones activas rearranca después de un error, el servicio de transacciones puede utilizar los registros para reproducir las transacciones dudosas. Este nivel de integridad permite devolver el sistema completo a un estado coherente.

En releases anteriores de WebSphere Application Server, los registros de transacciones se almacenaban como archivos del sistema operativo. En WebSphere Application Server Versión 8.5.5 y posterior, esta configuración sigue siendo la configuración predeterminada. Puede también elegir almacenar los registros de transacciones en una base de datos relacional. Esta opción de configuración se utiliza principalmente para un entorno de alta disponibilidad. Además, en releases anteriores de WebSphere Application Server, el soporte para transacciones de alta disponibilidad requería utilizar un sistema de archivos compartidos para contener los registros de transacciones, tal como NAS (network-attached storage) montado con NFSv4, o SAN (storage area network). Esta nueva característica le permite, especialmente si ha hecho una inversión en tecnología de base de datos de alta disponibilidad, utilizar su base de datos como repositorio compartido para los registros de transacciones, en lugar de utilizar un sistema de archivos compartidos.

Nota: La implementación actual para almacenar registros de transacciones y de compensación en una base de datos relacional soporta funciones de alta disponibilidad en DB2 y Oracle. Por ejemplo, se pueden utilizar funciones específicas del cliente, tales como DB2 HADR u Oracle RAC DataGuard, que permiten la reconexión a otra instancia de base de datos si se produce un error. Actualmente no es posible utilizar funciones de alta disponibilidad en bases de datos relacionales de otros proveedores.

En la implementación actual, si la función de registro de recuperación detecta excepciones de JDBC inesperadas, se inhabilita el registro cronológico de transacciones y el servidor se debe concluir para poder recuperar las transacciones en proceso. No se realiza ningún intento para reconectar hasta que se reinicie el servidor, y la implementación actual no realiza ningún intento para determinar si la condición es transitoria.

En WebSphere Application Server Versión 8.5.5 y posterior, puede utilizar un recurso similar, también dirigido a los usuarios que trabajan en un entorno de alta disponibilidad, para almacenar los registros de recuperación de compensación en una base de datos relacional. El servicio de compensación de WebSphere Application Server permite que aplicaciones situadas en sistemas diferentes coordinen actividades que están estrechamente acopladas que las transacciones atómicas. Este servicio almacena en sus propios registros de recuperación dedicados la información que es necesaria para completar la compensación después de un error del sistema.

Avoid trouble Avoid trouble: El origen de datos del registro de recuperación de SQL necesita un tamaño máximo de agrupación de:
(2 x número de posibles servidores recuperados)+2
Este tamaño máximo de agrupación permite establecer conexiones suficientes con la base de datos para cerrar todos los registros de transacciones relacionados. Si el tamaño máximo de agrupación se establece en un valor diferente, se puede obtener el mensaje de error J2CA0045E, pues no hay conexiones suficientes disponibles.gotcha

Procedimiento

Debe configurar la ubicación del registro de transacciones y del registro de compensación para cada servidor del clúster para poder habilitar la alta disponibilidad. Para ello establezca los atributos TransactionLogDirectory y CompensationLogDirectory para cada servidor. Cada servidor de un clúster debe estar referido a una ubicación exclusiva del registro de transacciones y del registro de compensación mediante un propiedad tablesuffix diferente, de forma que varios servidores no compitan por recursos del sistema de gestión de bases de datos relacionales (RDBMS). Por ejemplo, si tiene un clúster denominado AppCluster formado por los cuatro servidores siguientes:
  • AppClusterMember1
  • AppClusterMember2
  • AppClusterMember3
  • AppClusterMember4
Puede definir los sufijos de tabla siguientes para AppCluster:
  • App1 para AppClusterMember1
  • App2 para AppClusterMember2
  • App3 para AppClusterMember3
  • App4 para AppClusterMember4

Realice los pasos siguientes:

  1. Configure un origen de datos no transaccional para el almacenamiento de registros de recuperación de transacciones y compensación:
    1. Cree un proveedor de JDBC para su implementación específica de RDBMS. Especifique un tipo de implementación de no XA.
    2. Cree un alias de datos de autenticación J2C JAAS. Este alias de datos define credenciales de seguridad que se utilizan para conectar con el sistema de gestión de bases de datos relacionales. Las credenciales que están definidas en el sistema de gestión de bases de datos relacionales deben tener autorización suficiente para crear tablas en la base de datos.
    3. Cree un origen de datos mediante el proveedor JDBC creado en el paso a. Su alias de autenticación gestionado de componente debe ser el alias de JAAS creado en el paso b. Defina el URL del origen de datos para especificar una conexión con el sistema de gestión de bases de datos relacionales.
    4. Configure el origen de datos nuevo para que no sea transaccional realizando los pasos siguientes:
      1. Abra el origen de datos recién creado.
      2. En Propiedades adicionales, pulse Propiedades del origen de datos de WebSphere Application Server.
      3. Seleccione la casilla Origen de datos no transaccional.
      4. Guarde los cambios.
  2. Configure el servicio de transacciones para almacenar las transacciones en una base de datos relacional:
    1. En la consola administrativa de WebSphere Application Server, pulse Servidores > Tipos de servidor > Servidores de aplicaciones WebSphere > nombre_servidor. Se muestran las propiedades del servidor de aplicaciones especificado.
    2. En la sección Valores del contenedor, pulse Servicios del contenedor > Servicio de transacciones. Se muestra la página Valores del servicio de transacciones.
    3. Seleccione la pestaña Configuración si no se está visualizando.
    4. En el campo Directorio de archivo de registros cronológicos de transacciones, especifique una serie personalizada para indicar que desea que los registros se almacenen en una base de datos. La cadena de caracteres debe tener el formato siguiente:
      custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=nombre_jndi_origen_datos,tablesuffix=sufijo
      donde nombre_jndi_origen_datos es el nombre JNDI del origen de datos no transaccional que se creó previamente, y sufijo es una cadena de caracteres que debe definir para identificar de forma exclusiva a cada miembro del clúster de alta disponibilidad.
      Restricción: Si está utilizando una base de datos Oracle, la longitud de la cadena de caracteres sufijo no debe ser mayor que 15 caracteres.
  3. (Opcional) Configure el servicio de compensación para almacenar transacciones en una base de datos relacional si piensa utilizar servicios de compensación o actividad en WebSphere Application Server:
    1. En la consola administrativa de WebSphere Application Server, pulse Servidores > Tipos de servidor > Servidores de aplicaciones WebSphere > nombre_servidor. Se muestran las propiedades del servidor de aplicaciones especificado.
    2. En la sección Valores del contenedor, pulse Servicios del contenedor > Servicio de compensación. Se muestra la página Valores del servicio de compensación.
    3. Seleccione la pestaña Configuración si no se está visualizando.
    4. En el campo Directorio de registro de recuperación, especifique una cadena de caracteres personalizada para indicar que desea que los registros se almacenen en una base de datos. La cadena de caracteres debe tener el formato siguiente:
      custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=nombre_jndi_origen_datos,tablesuffix=sufijo
      donde nombre_jndi_origen_datos es el nombre JNDI del origen de datos no transaccional que se creó previamente, y sufijo es una cadena de caracteres que debe definir para identificar de forma exclusiva a cada miembro del clúster de alta disponibilidad.
      Restricción: Si está utilizando una base de datos Oracle, la longitud de la cadena de caracteres sufijo no debe ser mayor que 15 caracteres.
  4. (opcional) Cree las tablas de base de datos.

    WebSphere Application Server intenta crear las tablas de base de datos necesarias cuando se inicia por primera vez. Cuando esta creación no es posible, por ejemplo, debido a un permiso insuficiente, el servidor no se puede iniciar. En este caso, debe crear manualmente las tres tablas de base de datos.

    El siguiente DDL (lenguaje de definición de datos) es representativo y apropiado para un entorno de servidor autónomo. En un entorno autónomo, es necesario crear dos tablas de base de datos, un registro de transacciones y una tabla de registro asociada para soportar el servicio de transacciones. Si piensa utilizar servicios de compensación o actividad, también es necesaria una tercera tabla de registro de compensación.

    Los nombres de tabla se pueden personalizar de acuerdo con el entorno utilizado. Por ejemplo, debe crear cuatro tablas de registro de transacciones, cuatro tablas de registro asociadas y, opcionalmente, cuatro tablas de registro de compensación si tiene un clúster denominado AppCluster formado por los servidores siguientes:
    • AppClusterMember1
    • AppClusterMember2
    • AppClusterMember3
    • AppClusterMember4
    Por lo tanto puede definir las tablas siguientes para AppCluster:
    Nombre de clúster Nombre de servidor Tabla de registro de transacciones Tabla de registro asociada Tabla de registro de compensación
    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
    El DDL siguiente muestra cómo crear las tablas de base de datos en DB2 con el sufijo de tabla App1:
    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) 
    Las estructuras de DDL siguientes muestran cómo crear la tabla de base de datos en 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)

Ejemplo

Si tiene un clúster denominado AppCluster, formado por los servidores AppClusterMember1, AppClusterMember2, AppClusterMember3 y AppClusterMember4, configure las ubicaciones de los registros de esta manera:
Nombre de clúster Nombre de servidor Tabla de registro de transacciones Tabla de registro de compensación
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
En este ejemplo, el sufijo de tabla se define de esta manera:
  • AppClusterMember1
  • AppClusterMember2
  • AppClusterMember3
  • AppClusterMember4
Se crean las tablas de base de datos con los nombres siguientes:
  • 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

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjta_store_logs_in_rdb
File name: tjta_store_logs_in_rdb.html