SQL Server Mirroring - Visión General

Imagen de kenneth

Votar: 

Average: 5 (29 votes)

SLQ Server Database MirroringIntroducción a SQL Server Mirroring

En esta sección se va a mostrar la funcionalidad de SQL Server Database Mirroring, si entrar en detalles de configuración y sintaxis, estos temas van a ser abordados en futuras publicaciones en las cuales se va a asumir el entendimiento de métodos de sincronización de datos y de operación para cambios de roles..

SQL Server mirroring es una tecnología que entra en la categoría de alta disponibilidad, siendo este el foco principal y no recuperación de desastres. Este hecho es importante ya que nos ayuda a identificar mejor los escenarios en la cual esta tecnología nos puede servir de la mejor manera sin estar entrando en el error de forzar la misma.

Siguiendo la filosofía de alta disponibilidad, la tecnología lo que busca es que, en caso de falla de un servidor algún otro servidor tome la carga que están generando los consumidores de la base de datos, esta transición puede ser de forma manual o automática.

La principal ventaja que provee SQL Server Mirroring es la capacidad de brindar un escenario en el cual la base de datos deja de estar en single point of failure,  a diferencia de cluster, ya que cluster comparte el almacenamiento. En cambio en SQL Server mirroring sincroniza las transacciones del servidor primario al secundario, tal y como lo muestra la siguiente figura:

Sincronizacion de datos con SQL Server Mirroring

Dicho lo anterior, la propuesta de Microsoft en mirroring es proveer dos puertos de comunicación, uno que se presente como el principal y otro como el secundario, lo cual hizo necesario que a nivel de configuración de conexión se hiciera necesario agregar un parámetro adicional que indicara cual es el puerto de comunicación para el mirror, en el caso de conection string ese parámetro se llama Failover Partner. En la siguiente dirección puede encontrar Ejemplos de Conection Strings

Ejemplo:

  1. Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;
  2. Initial Catalog=myDataBase;Integrated Security=True;

Es importante aclarar que dentro de la infraestructura de SQL Server mirroring el server que esta como secundatio puede cambiar su role a primario en cualquier momento sin necesidad de realizar ningún cambio en los conecction string de las aplicaciones que se conectan a la base de datos, bueno a fin de cuentas esta es la idea con tecnología como esta. La siguiente figura puede brindar una mejor idea de lo mencionado anteriormente:

Comunicación con SQL Server Mirroring

 

A este punto ya tenemos claro en que nos puede ayudar SQL Server Mirroring y las caractreristicas generales de la tecnología, ahora vamos a abordar las formas en la cual los datos son sincronizados entre los servidores de bases de datos.

Modos de sincronización de datos en SQL Server Mirroring 

Asincrónico o Alto Desempeño(High Performance)
En el proceso de sincronizacion de datos asincrónico, cuando la aplicacion envia una instrucción de escritura de datos, esta llega al servidor primario del mirror, es procesada y apenas se termina el procesamiento en la base de datos principal, entonces se  escribe en una cola de sincronización de datos para de forma asincrónica enviar esa información al servidor mirror.  De ahi el nombre de Alto desempeño ya que la respuesta a la aplicación es enviada apenas la transaaccion termina de ser procesada en el servidor principal. El siguiente diagrama muestra el proceso de sincronización de datos de forma Asincronica.

SQL Server Mirroring - Sincronización de datos de forma Asincrónica

Sincrónico o Alta Seguridad(High Safety)
En el proceso de sincronizacion de datos sincrónico, cuando la aplicacion envia una instrucción de escritura de datos, esta llega al servidor primario del mirror, es procesada e inmediatamente enviada al servidor que este sirviendo como mirror o secundario, una vez que el servidor mirror mete la transacción en la cola re aplicación de datos, el servidor mirror le responde al servidor primario que la transaccion fue procesada, entonces una vez que el servidor primario recibe esta respuesta, este se encarga de responderle al iniciador de la transacción que ya esta fue procesada; tal y como lo muestra la siguiente figura.

Sincronización de datos de sincrónicamente
 
Modos de operación para Intercambio de Roles(FailOver) 
El intercambio de roles es el proceso mediante el cual la base de datos mirror asume el rol de principal haciendo que la principal tome el rol de mirror o sencundaria. Este proceso puede pasar de forma automática o de forma manual.
 
Intercambio de Roles Automática(Automatic FailOver)
Este es el modo de operación mediante el cual SQL Server detecta que la base de datos primaria esta inaccesible y decide de forma automáticamente el transferir el control a la base de datos mirror, promoviendo esta a primaria. Este método de operación solo es posible mediante el método de sincronización de datos de alta Seguridad o sincrónica(High Safety) y un servidor adicional que funge como testigo (witness).
El servidor testigo es quien inclina la balanza hacia donde hacer la transferenci de rol en caso de fallo, por ejemplo el servidor secundario no puede comunicarse con el primario, y el servidor testigo tampoco puede comunicarse con el primario, entonces deciden ascender al secundario como primario, y cuando el servidor primario restablezca la comunicación, este va a preguntar cual rol tiene, haciendolo caer al rol de mirror o secundario. tal y como la muestra la siguiente secuencia de figuras:
Alta seguridad con intercambio de roles automático
 
Intercambio de Roles Manual(Manual FailOver)
Este es el modo de operación mediante el cual cuando hay un fallo o por desición del propia, se hace un intercambio manual de roles de los servidores por inducción de un manual de un operador. En otras palabras, yo como DBA decidí cambiar roles y los aplique. Este modo de operación funciona tanto en sincrionización de datos sincrónico como asincrónico, ademas tambien se puede realizar cuando el intercambio esta configurado para ser automático. Tal y como la muestra la siguiente secuencia de figuras:

Intercambio de roles manual

Pasos Generales ara configurar SQL Server Mirroring

Los detalles de la implementacion va a cambiar dependiendo de el modo de operación que se busque configurar SQL Server Mirroring. Pero en general los siguientes son los pasos a seguir para configurar SQL Server Mirroring.

  1. Crear EndPoints en cada servidor involucrado.
  2.  El modo de recuperación de la base de datos tiene que estar en FULL (Recovery Model)
  3. Realizar la sincronización inicial de datos entre los servidores
  4. Definir relación de compañeros (Pathern Relationship)
  5. Definir el modo de operación del mirror de las base de datos

Conclusiones

SQL Server mirroring es de las estratégias de Alta disponibilidad en la cual el tiempo de caida por falla de servidor es el más bajo, ya que el servidor de bases de datos esta arriba, la base de datos prácticamente operacional, a diferencia de una tecnología como clustering, que el servicio de SQL server se encuentra abajo y los LUN's tienen que remapearse en el nuevo servidor. 

Algo importante a destacar es que Mirroring esta en depecrated process,osea, para unas 2 versiones después de SQL Server 2012, lo van a sacar del sistema, entonces se preguntaran porque aprender esta tecnología, pues muy sencillo,parte de  Always ON usa mirroring, y el aprender como funciona te va a dar la capacidad de entender la configuracion de Nodos Secundarios de Lectura (Sencondary Readable Nodes). 

Ventajas de SQL Server Database Mirroring

  • Reparación automatica de páginas corruptas: Si en el principal se detecta un página corrupta, este le pide al secundario la copia de la página y la repara automáticamente. Pero solo funciona en sincronización de datos sincrónica.
  • Cámbio de Roles es el más rápido comparado con las otras tecnologías de Alta disponibilidad que propone microsoft.
  • No hay un único lugar de falla (No single point of failure)
  • Facil Monitoreo y notificación.
  • No Afecta esquema de respaldos.
  • El Testigo(witness) puede ser un SQL Express.
  • Licensamiento se paga solo por el nodo activo.
  • La sincronización de datos puede ir por puertos diferente al que se esta usando para el SQL Server.

Desventajas de SQL Server Database Mirroring

  • Hay que duplicar la cantidad de almacenamiento para ambos servidores.
  • En ciertos escenarios los usuarios y permisos tiene que ser replicados de forma manual.

Espero les haya agradado el artículo y les sirva para incrementar el conocimiento general de SQL Server, especialmente Database Mirroring. Proximamente estare posteando el código para configurar cada uno de los escenarios, Esto en otro artículo.

Muchas gracias

Kenneth Ureña
twitter @sqlcr
LinkedinKenneth

Tags: