SAP HANA System Replication (HSR): Guia completa
SAP HANA System Replication (HSR) es la solucion nativa de alta disponibilidad y recuperacion ante desastres para bases de datos SAP HANA. Permite mantener una copia sincronizada de la base de datos en un sistema secundario que puede asumir el rol de primario en caso de fallo.
Que es System Replication
System Replication replica continuamente los datos desde un sistema HANA primario a uno o mas sistemas secundarios. Cuando el primario falla, el secundario puede tomar el control (takeover) con minima o ninguna perdida de datos.
| Componente | Sistema Primario | Sistema Secundario |
|---|---|---|
| Estado | Activo (lectura/escritura) | Standby (solo recibe datos) |
| Conexiones | Acepta clientes | No acepta clientes |
| Datos | Origen | Replica del primario |
| Logs | Genera redo logs | Aplica redo logs |
Modos de replicacion
HSR ofrece tres modos de replicacion segun los requisitos de consistencia y rendimiento:
| Modo | Comportamiento | Perdida datos | Rendimiento |
|---|---|---|---|
| SYNC | El primario espera confirmacion del secundario antes de commit | Cero | Impacto alto |
| SYNCMEM | El primario espera que el log llegue a memoria del secundario | Minima | Impacto medio |
| ASYNC | El primario no espera al secundario | Posible | Sin impacto |
SYNC (Sincrono)
Garantiza cero perdida de datos (RPO=0). El primario no confirma la transaccion hasta que el secundario ha persistido el log en disco. Recomendado para entornos donde la perdida de datos es inaceptable.
# Timeout de replicacion sincrona
global.ini -> [system_replication] -> logshipping_timeout = 30SYNCMEM (Sincrono en memoria)
Balance entre proteccion y rendimiento. El primario espera que el log llegue a la memoria del secundario pero no a disco. Perdida maxima: transacciones en memoria del secundario durante un fallo.
ASYNC (Asincrono)
Maximo rendimiento, sin impacto en el primario. Los logs se envian en segundo plano. Adecuado para disaster recovery a larga distancia donde la latencia haria inviable el modo sincrono.
Modos de operacion
| Modo | Secundario | Uso |
|---|---|---|
| delta_datashipping | Precargado en memoria | Takeover rapido |
| logreplay | Aplica logs continuamente | Estandar (recomendado) |
| logreplay_readaccess | Permite lectura en secundario | Active/Active (lectura) |
Comandos HSR esenciales
Configurar primario
# Habilitar system replication en el primario
hdbnsutil -sr_enable --name=PRIMARY_SITE
# Verificar estado
hdbnsutil -sr_stateRegistrar secundario
# Parar HANA en secundario
HDB stop
# Registrar como secundario
hdbnsutil -sr_register --name=SECONDARY_SITE \
--remoteHost=primary_host \
--remoteInstance=00 \
--replicationMode=sync \
--operationMode=logreplay
# Iniciar HANA en secundario
HDB startTakeover (failover manual)
# En el secundario (sera el nuevo primario)
hdbnsutil -sr_takeover
# Verificar nuevo estado
hdbnsutil -sr_stateMonitorizar estado
# Estado detallado de replicacion
hdbnsutil -sr_state --sapcontrol=1
# Estado desde SQL
SELECT * FROM M_SERVICE_REPLICATION;
SELECT * FROM M_SYSTEM_REPLICATION;Vistas de monitorizacion
| Vista | Informacion |
|---|---|
M_SYSTEM_REPLICATION | Estado general de HSR |
M_SERVICE_REPLICATION | Estado por servicio |
M_SYSTEM_REPLICATION_TAKEOVER_HISTORY | Historico de takeovers |
M_HA_DR_PROVIDERS | Proveedores HA/DR configurados |
-- Verificar estado y retraso de replicacion
SELECT
SITE_NAME,
REPLICATION_STATUS,
REPLICATION_MODE,
SECONDS_REPLAYING_LOG AS LAG_SECONDS
FROM M_SERVICE_REPLICATION;Arquitecturas HSR
Tier 1: Alta disponibilidad local
Primario y secundario en el mismo datacenter. Modo SYNC para cero perdida de datos. Protege contra fallos de servidor.
Tier 2: Disaster Recovery
Secundario en datacenter remoto. Modo ASYNC por la latencia. Protege contra desastres del datacenter completo.
Tier 3: Multitarget (cadena)
Primario replica a secundario local (SYNC) que a su vez replica a terciario remoto (ASYNC). Combina HA local + DR remoto.
Troubleshooting comun
| Problema | Causa | Solucion |
|---|---|---|
| Replicacion detenida | Red, espacio, configuracion | Verificar logs, conectividad |
| Alto lag de replicacion | Carga en primario, red lenta | Revisar metricas, ancho banda |
| Takeover fallido | Secundario no sincronizado | Verificar estado antes de takeover |
| Registro secundario falla | Primario no habilitado | Ejecutar sr_enable primero |
Preguntas frecuentes
Cual es la diferencia entre SYNC y SYNCMEM?
En modo SYNC, el primario espera que el secundario persista el log en disco antes de confirmar. En SYNCMEM, solo espera que llegue a memoria del secundario. SYNC garantiza cero perdida de datos pero con mayor impacto en rendimiento.
Puedo leer datos del sistema secundario?
Si, usando el modo de operacion logreplay_readaccess. Esto permite consultas de solo lectura en el secundario mientras recibe la replicacion, util para reportes o consultas que no requieren datos en tiempo real.
Que pasa si el primario falla y no hago takeover?
El secundario permanece en standby esperando. No asume automaticamente el rol de primario. Para failover automatico necesitas integrarlo con un cluster manager como Pacemaker o usar SAP HANA System Replication con hook scripts.
Como se que el secundario esta sincronizado?
Consulta M_SERVICE_REPLICATION y verifica REPLICATION_STATUS = ACTIVE y SECONDS_REPLAYING_LOG cercano a cero. Tambien puedes usar hdbnsutil -sr_state para ver el estado detallado desde linea de comandos.
Cuanto espacio adicional necesito para HSR?
El secundario necesita el mismo espacio que el primario para datos y logs. Ademas, durante la sincronizacion inicial se requiere espacio temporal para el full data shipping. Planifica al menos el doble de tu base de datos actual.