Hola,
Tenemos la siguiente configuración para replicar entre los servidores de datos srv_a y srv_b (usando los servidores de replicación rep_a y rep_b):
-) replicación: srv_a <---> rep_a <---> rep_b <----> srv_b
-) replicación bidireccional utilizando msa: con definiciones de replicación de base de datos y suscripciones de base de datos en ambos sitios (es decir, en ambas direcciones)
-) utilizado como sistema activo/pasivo con srv_b siendo el servidor activo.
srv_a es ASE 12.5.4 (solaris sparc/2K páginas), srv_b es ASE 15.7 (solaris intel/4K páginas).
Quiero actualizar srv_a a ASE 15.7.
Esto es lo que hice:
-) crear un nuevo servidor 15.7, definir las bases de datos, cargar un volcado de srv_b en él, deshabilitar los agentes de replicación.
-) eliminar las suscripciones de base de datos en ambas direcciones.
-) detener srv_a, renombrar y reiniciar el nuevo servidor con nombre srv_a.
para cada base de datos:
-) crear una suscripción de base de datos de b a a usando un marcador de volcado
-) volcar la base de datos en srv_b y cargar en srv_a.
el volcado contiene la configuración de replicación de srv_b, por lo que esto debe cambiarse en la configuración de srv_a:
-) sp_config_rep_agent $db, 'connect dataserver', 'srv_a'
-) sp_config_rep_agent $db, 'rs servername', 'rep_a'
-) dbcc settrunc('ltm', 'ignore')
-) dbcc settrunc('ltm', 'valid')
-) dbcc settrunc('ltm', 'end')
y en rssd_db de rep_a:
-) rs_zeroltm srv_a, $db
-) luego iniciar el repagent y reanudar la conexión.
-) finalmente, crear una suscripción de base de datos de a a b.
El resultado es que la replicación de b a a funciona bien (lo cual es bueno porque es de activo a pasivo),
pero la replicación de a a b no lo hace.
Usé sysadmin dump_queue para ver qué hay en la cola estable, y parece que las transacciones en srv_a no llegan a la cola estable.
Al leer la documentación, me encontré con la descripción de los números de generación.
Normalmente se incrementan para evitar que después de restaurar una base de datos principal, las transacciones se consideren duplicadas.
La columna Duplicados en la salida de admin who, sqm está aumentando.
Como no pude encontrar qué estaba causando el problema, pensé en probar configurar el número de generación, y agregué:
-) dbcc settrunc('ltm', 'gen_id', 1)
después del comando settrunc('ltm', 'ignore') en la descripción anterior.
Cuando hice eso, la replicación de srv_a a srv_b comenzó a funcionar.
No entiendo por qué está sucediendo esto y por qué las transacciones se consideran duplicadas.
También quiero evitar aumentar el número de generación, ¿hay alguna solución sin hacer esto?
Gracias,
Luc.