
Votar:
Introducció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:
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:
-
Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;
-
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:
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.
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.


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.
- Crear EndPoints en cada servidor involucrado.
- El modo de recuperación de la base de datos tiene que estar en FULL (Recovery Model)
- Realizar la sincronización inicial de datos entre los servidores
- Definir relación de compañeros (Pathern Relationship)
- 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