Mirroring con SQL Server 2014 – Configuración

Hola! Comunidad;

Hacia mucho que no escribía una nueva entrada en el Blog, pero aprovechando este fin de semana voy a hacer una guía de como configurar el Mirroring en SQL Server 2014, así que espero que les pueda ser de utilidad para que ustedes puedan implementar ya sea en su empresa o en algún proyecto que estén trabajando, así que vamos a empezar.

NOTA: Microsoft en el futuro va a quitar esta característica de SQL Server por lo que se recomienda utilizar AlwaysOn Availability Group.

Esta característica se introdujo con Microsoft SQL Server 2005, esta tecnología nos permite diseñar una solución de alta disponibilidad con redundancia de nuestra base de datos. Esta es una característica que nos permite mantener dos copias de una sola base de datos en diferentes servidores. En este caso si el servidor principal falla el servidor de contingencia entra en funcionamiento tomando toda la carga que se está generando nuestros consumidores sin pérdida alguna. Esta transición puede ser de forma manual o automática.

Actores:

  • Servidor Principal: Este es el servidor que envía el registro de transacciones al servidor que se encuentra en espera.
  • Servidor Mirroring (Secundario): Este es el servidor que espera el registro de transacciones desde el servidor principal. la base de datos que está en Mirroring no estará disponible para nuestros usuarios a menos que el servidor principal esté caído y se haya ejecutado el cambio de roles.
  • Testigo (Witness): La función de este servidor es permitir reconocer que el servidor principal está abajo para que el Mirroring entre en funcionamiento, es como una especie de Ping y si no hay respuesta ejecuta el cambio de roles Automáticamente (Se recomienda tener el servidor testigo en un servidor físico).

NOTA:
Para poder configurar el Mirroring debemos tener en cuenta que tanto el servidor principal como el secundario debe estar instalada la misma versión del SQL Server (Standard o Enterprise) también es recomendable que se apliquen el último Service Pack así como los parches acumulativos. En el caso del servidor testigo puede ser la versión de SQL Server Express, este servidor será como el Ping entre los dos servidores (principal y secundario) y solo es algo opcional. Así mismo la base de datos debe usar el modelo de recuperación completa (FULL RECOVERY MODEL)

Modos de Operación:

  • High performance (Asynchronous): El servidor principal envía el registro de transacciones al servidor mirroring, el servidor principal envía una confirmación al usuario sin esperar la confirmación desde el servidor mirroring. Las transacción se terminan y se visualizan al cliente sin esperar que el servidor mirroring termine de escribir los Logs en el Disco, esto es recomendable cuando los servidores se encuentran en una gran distancia y la Latencia es un poco alta, también se puede usar una alternativa que es Log-Shipping.
  • High safety without automatic failover (Synchronous): El servidor principal envía la transacción y espera hasta que la transacción se haya enviado al servidor mirroring. a continuación este le devuelve un mensaje de confirmación y el servidor principal lo confirma. Esta característica es bueno usarla cuando la latencia entre los servidores es baja y se tenga al menos una conexión dedicada para el enlace del Mirroring.
  • High safety with automatic failover (Synchronous): El FailOver es automático cuando el servidor principal está caído, para usar esta característica se necesita un servidor de Testigo o Witness y el modo de funcionamiento es el mismo descrito anteriormente.

Configurando Mirroring SIN SERVIDOR TESTIGO – SINCRONICO.

Luego de una breve introducción a las partes teóricas, vamos a configurar nuestro servidor Mirroring, para ello vamos a emular un caso muy típico y es que tenemos dos servidores ubicados en diferentes lugares (como debería ser) ambos servidores cuentan con la versión de SQL Server 2014 Enterprise Core Edition.

2015-10-19_00-21-10

NOTA:
La instancia principal es: CL00TI55\MSSQLSERVER2014 y el Mirroring es CL00TI55\MSSQLSERVER20141

En nuestra instancia Principal tenemos una base de datos DBMirroring con una tabla Persona, por lo cual realizaremos un Backup Full.

Hacemos clic secundario en la Base de Datos DBMirroring/Task/Back Up…

2015-10-19_00-28-26

Luego Seleccionamos Backup Type: Full y escogemos una ruta donde se guardará nuestro con la extensión .bak, en mi caso se grabará en C:\Dcto_CEGU\DBMirroring.bak y luego presionamos OK.

2015-10-19_00-39-32

Esperamos hasta que complete la operación

2015-10-19_00-32-31

Luego realizamos el Backup del Transaction Log, realizamos algunos pasos que se describieron anteriormente:

Hacemos clic secundario en la Base de Datos DBMirroring/Task/Back Up…

2015-10-19_12-44-19

Luego seleccionamos Backup Type: Transaction Log y agregamos la ruta donde se guardará el backup, en este caso es C:\Dcto_CEGU\TransactionLog.trn:

2015-10-19_12-46-40

Y luego esperamos a que nos confirme que el Backup se ha realizado satisfactoriamente:

2015-10-19_13-06-00

Luego de haber realizado todo el trabajo de Backup Full con el Transaction Log, vamos a realizar la restauración de ambos para la creación del Mirroring, para ello hacemos clic secundario en Databases de nuestro servidor de contingencia y seleccionamos Restore Database…

2015-10-19_00-42-15

Luego seleccionamos Device y clic en el botón que dice «…» :

2015-10-19_13-08-25

Luego clic en Add

2015-10-19_13-09-51

Luego seleccionamos nuestro Backup Full que hemos realizado:

2015-10-19_13-10-40

Luego clic en Ok

2015-10-19_13-12-17

Luego seleccionamos el Backup Full como muestra la imagen procedente, una vez seleccionado nos dirigimos a Files

2015-10-19_13-12-57

En Files especificamos la ruta donde se guardará el MDF y LDF y luego clic en Options

2015-10-19_13-20-44

Aquí seleccionamos Overwrite the existing database (WITH REPLACE) y en Recovery State seleccionamos RESTORE WITH NORECOVERY y clic en OK

2015-10-19_13-15-02

Esperamos a que termine de restaurar hasta que nos envíe el mensaje de conformidad:

2015-10-19_13-41-22

Luego verificamos…

2015-10-19_13-42-22

Ahora procedemos a restaurar el Transaction Log, clic secundario en DBMirroring/Tasks/Restore/Transaction Log…

2015-10-19_13-44-32

Ahora seleccionamos From device y clic en el botón «…»2015-10-19_13-46-40

Clic en Add

2015-10-19_13-47-41

Seleccionamos el backup del Transaction Log y clic en OK

2015-10-19_13-48-28

Luego clic nuevamente en OK

2015-10-19_13-53-56

Seleccionamos el Transaction Log que vamos a restaurar, en este caso sólo aparecerá uno. Luego clic en Options.

2015-10-19_14-12-07

Luego seleccionamos RESTORE WITH NORECOVERY y clic en OK.

2015-10-19_13-59-18

Esperamos que se visualice la conformidad de la restauración y clic en OK

2015-10-19_14-13-06

Luego volvemos a la instancia principal de nuestro servidor y hacemos clic secundario en la base de datos DBMirroring/Tasks/Mirror…2015-10-19_14-15-16

Luego clic en Configure Security…:

2015-10-19_14-16-25

Luego clic en Next >

2015-10-19_00-53-57

Como se va a configurar el Mirroring sin testigo (Witness Server) haremos clic en NO y Next >

2015-10-19_00-54-41

Luego el puerto es el 5022 (Por defecto) y el nombre del EndPoint es Mirroring (Por defecto) clic en Next >

2015-10-19_00-55-15

Luego seleccionamos la instancia de nuestro servidor alterno, en este caso hacemos clic en Browse for more…

2015-10-19_15-28-13

Escribimos el nombre del Servidor y la instancia en Server name, escogemos el modo de autenticación que en este caso estoy usando el SQL Server Authentication y es porque no estoy usando un controlador de dominio, luego que estén los datos llenados correctamente clic en Connect.

2015-10-19_15-29-48

Luego que hacemos clic en Connect se validan las credenciales, luego clic en Finish >>|

2015-10-19_15-32-34

Luego aparecerá un resumen de lo que ejecutara el Wizard del Mirror.

2015-10-19_15-34-19

Luego clic en Finish y esperamos a que termine de configurar los Endpoints, cuando aparezca que todo está Correcto dirá Success y podemos hacer clic en Close.

2015-10-19_15-34-43

Luego nos aparecerá un mensaje donde nos indica si iniciamos el Mirroring o no, en este caso le daremos clic en Start Mirroring.

2015-10-19_15-35-19

Luego esperamos a que sincronice nuestra base de datos con el servidor alterno, hasta que aparezca Fully Synchronized

2015-10-19_15-35-41

Luego verificamos las dos instancias, tanto de nuestro servidor principal como la de Centro Alterno

2015-10-19_15-46-30

Ahora para verificar el estado de nuestro Mirroring, hacemos clic secundario en la base de datos DBMirroring/Task/Launch Database Mirroring Monitor…

2015-10-19_15-55-34

Y tendríamos que ver una pantalla similar a esta donde el State debe ser Synchronized:

2015-10-19_15-56-36

Bueno comunidad esto seria todo en cuanto a la configuración del Mirroring en SQL Server 2014, en la próxima entrega se seguirá hablando del Mirroring pero esta vez se tocará el tema de como cambiar los roles desde la forma gráfica y no gráfica (usando T-SQL). Si han tenido problemas al momento de configurar el Mirroring deja un comentario para poder ayudarte.

Muchas gracias!!!!

4 comentarios en “Mirroring con SQL Server 2014 – Configuración

  1. Extraordinario articulo y como manejas el tema de Licenciamiento en mirroring para SQL?? tienes alguna idea que tipo de licenciamiento debes de comprar para realizar esto..

    Gracias de antemano

    Me gusta

  2. Estimado una consulta , los dos servidores deben estar licenciados con sql server independiente que uno este activo y el otro no.

    Gracias por tu respuesta.

    Me gusta

Deja un comentario