Social Icons

twitter facebook google plus linkedin

lunes, 5 de noviembre de 2012

Configurar Mirroring en SQL Server

Database Mirroring aparece en la versión 2005 y  es la evolución de Log Shipping. Tal como su nombre lo indica,  sirve para tener una base de datos "espejada" en otro servidor.  Puede trabajar de 3 Formas:

[caption id="attachment_1459" align="alignnone" width="300"]modos de funcionamiento | Fuente: guillesql.es modos de funcionamiento | Fuente: guillesql.es[/caption]

De foma más simple, la principal diferencia entre la configuración síncrona o asíncrona es:

  • De modo síncrono, el servidor principal espera a que las transacciones hagan commit en el servidor espejo para poder continuar.

  • De modo asíncrono, el servidor principal trabaja sin esperar al secundario.


Algunas diferencias entre LogShipping y Mirroring (Hay muchas más, pero aquí están las que más me llaman la atención):

  • Database Mirroring es capaz de configurar una conexión segura entre ambos puntos.

  • Database Mirroring provee la capacidad de hacer failover automático.


Log Shipping no hace ninguna de las dos anteriores.

Para configurar Database Mirroring se puede hacer a través del asistente o se puede hacer a través de instrucciones en t-sql. En este caso, utilizaremos el asistente para ahorrar tiempo.

Antes de partir la configuración nos debemos asegurar que la base de datos esté en modo de recuperación Full y debemos crear un respaldo de la base de datos del servidor primario y restaurarla con la opción WITH NORECOVERY en el servidor que será espejo.

Esta configuración requiere algunas configuraciones en el firewall de ambos equipos. En el servidor principal y en el espejo se debe abrir el puerto TCP 5022. Ahora, si se decide usar otro puerto, hay que estar seguro que el puerto está disponible y se puede abrir para las conexiones.

Una vez que se tiene la configuración previa lista, se hace el asistente que permitirá configurar el mirroring

[caption id="attachment_1462" align="alignnone" width="256"]Abrir asistente Abrir asistente[/caption]

En la ventana principal se debe iniciar el asistente

[caption id="attachment_1463" align="alignnone" width="300"]Ventana Principal Ventana Principal[/caption]

Se inicia el asistente

[caption id="attachment_1464" align="alignnone" width="300"]Inicio del asistente Inicio del asistente[/caption]

Se puede o no configurar un testigo. El testigo servirá para poder tener un failover automático. En este artículo no configuraré un testigo.

[caption id="attachment_1465" align="alignnone" width="300"]Configuracion del testigo Configuracion del testigo[/caption]

Configuración del equipo principal. Se puede cambiar el puerto (pero recuerden que ya habíamos abierto el puerto 5022). Además, se puede seleccionar si se quiere cifrar o no la conexión.

[caption id="attachment_1466" align="alignnone" width="300"]Configuracion del primario Configuracion del primario[/caption]

Para la configuración del secundario es necesario conectarse antes (recordar abrir el puerto 1422 en el secundario). La ventana de configuración es exactamente igual al primario.

[caption id="attachment_1467" align="alignnone" width="300"]Configuracion del Secundario Configuracion del Secundario[/caption]

El servicio debe estar configurado con una cuenta de dominio. Se debe indicar la cuenta del servicio del servidor primario y del espejo.

[caption id="attachment_1468" align="alignnone" width="300"]Cuentas de servicio Cuentas de servicio[/caption]

Para Finalizar:

[caption id="attachment_1469" align="alignnone" width="300"]Finalizar Finalizar[/caption]

Al momento de finalizar, se inicia el proceso de configuración del mirroring. Si aparece este mensaje, es porque está todo bien

[caption id="attachment_1470" align="alignnone" width="300"]Progreso de Configuracion Progreso de Configuracion[/caption]

Al terminar el asistente, aparecerá una ventana así en la cual nos preguntará si queremos iniciar Mirroring al tiro o no. En mi caso, no  configuré el testigo, por lo que no activaré el mirroring para hacer una configuración antes de partir.

[caption id="attachment_1472" align="alignnone" width="300"]Iniciar mirroring Iniciar mirroring[/caption]

Antes de comenzar el mirroring, lo configuré como asíncrono y luego inicié el mirroring

[caption id="attachment_1474" align="alignnone" width="300"]Mirroring Funcionando Mirroring Funcionando[/caption]

 

Si por algún motivo, te aparece el error 1478 cuando echas a andar el mirroring, es porque debes respaldar el transaction log del servidor primario y luego tienes que hacer un restore with norecovery en el servidor espejo. Luego de eso, ya puedes echar a andar el mirroring.

Chau!