sábado, 27 de junio de 2009

Database Mirroring

Database mirroring es una solución de alta disponibilidad implementada en hardware comunes.

En una solución de Database mirroring pueden actuar tres participantes con diferentes roles.

Principal Server: Es el servidor que mantiene la copia activa de la BD que están utilizando los clientes. Cada transacción es realizada al tiempo en el servidor y en el espejo
Mirror Server : Mantiene la copia de la Bd principal sincronizada
Witness Server: Es un componente adicional (Instancia o equipo) que monitoriza el estado del los servidores y en caso de presentarse una falla en el principal, habilita al Mirror como Principal

Existen tres tipos de modos de configuración de Database Mirroring

Alta Disponibilidad: Garantiza la consistencia transaccional entre el servidor principal y el espejo y ofrece Automatic Failover por medio de un Testigo
Alta Protección: Garantiza la consistencia transaccional entre el servidor principal y el espejo
Alto Rendimiento: Aplica la transacciones en el Servidor Espejo de manera asíncrona ocasionando mejoras significativas en el rendimiento del servidor principal pero no garantiza que dichas transacciones se hallan realizado de manera exitosa en el espejo.

Para configurar un el Data base Mirroring tu debes realizar los siguientes pasos

*Crear los mirroring Endpoints y logins.
*Configurar el modo de recuperación FULL
*Realizar un Backup de la BD principal y restaurarla en el espejo
*Copiar cualquier recurso adicional en el servidor espejo

La comunicación entre los servidores se hace por medio de Endpoints

Un ejemplo de un EndPoints seria:

CREATE ENDPOINT endpoint_mirroring
STATE = STARTED
AS TCP ( LISTENER_PORT = 4099 )
FOR DATABASE_MIRRORING
(
AUTHENTICATION = WINDOWS KERBEROS,
ENCRYPTION = SUPPORTED,
ROLE=ALL);


Estos Endpoint deberían ser creados en cada uno de los componentes de la solución especificando su respectivo role

Los roles pueden ser ALL, PARTNER o WITNESS

Para que los participantes sepan quienes son los otros componentes es necesario configurar la base de datos para que los conozca

En el servidor Principal debemos ejecutar esta instrucción para que el conozca quien es su compañero

ALTER DATABASE PRUEBA SET PARTNER ='TCP://MIRROR.DOMINIO.com:5022'

En el Servidor espejo debemos ejecutar esta instrucción

ALTER DATABASE PRUEBA SET PARTNER = 'TCP://PRINCIPAL.DOMINIO.com:5022'

Y si tenemos un testigo debemos ejecutar la siguiente instrucción en ambos servidores

ALTER DATABASE PRUEBA SET PARTNER = 'TCP://TESTIGO.DOMINIO.com:5023'

Existen otras configuraciones que se pueden realizar con ALTER DATABASE como son:

Safety: Esta opción puede tomar dos valores FULL o OFF. Cuando esta configurada como FULL las transacciones se realizan sincrónicamente y se garantiza el Fails over automático. Cuando esta en OFF las transacciones se realizan asíncronamente

ALTER DATABASE Prueba SET PARTNER SAFETY FULL

Failover: Realiza manualmente un fail over del principal al espejo. Esto se ejecuta en el Principal


ALTER DATABASE Prueba SET PARTNER FAILOVER

Force_Service_Allow_Data_Loss: Forza al espejo a tomar el rol de principal. Esta se utiliza cuando el principal no esta disponible y el testigo esta Off

ALTER DATABASE Prueba SET PARTNER
FORCE_SERVICE_ALLOW_DATA_LOSS

No hay comentarios:

Publicar un comentario