Ivan Stankovic

¿Qué es el reflejo de bases de datos SQL Server?

December 18, 2015 by

¿Qué es el reflejo de bases de datos SQL Server?

El reflejo de bases de datos SQL Server es una técnica de recuperación de desastres y alta disponibilidad que involucra dos instancias SQL Server en la misma o en diferentes máquinas. Una instancia SQL Server actúa como una instancia primaria llamada la principal, mientras que la otra es una instancia reflejada llamada reflejo. En casos especiales, puede haber una tercera instancia SQL Server que actúa como testigo.

Ejemplos de implementación

Una de las configuraciones comunes de reflejo es el ambiente con dos SQL Servers (SQLServer-1 y SQLServer-2), dos instancias (SQLIntance-1 y SQlInstance-2) y una base de datos reflejada llamada SQLDB-1.

Illustration of one of the common SQL Server database mirroring configuration

La segunda configuración común es el ambiente con una máquina SQL Server, dos instancias SQL Server y una base de datos reflejada llamada SQLDB-1. Esta solución tiene una falla mayor porque si SQLServer-1 deja de funcionar, ambas instancias estarán no disponibles.

Illustration of mirroring configuration with one SQL Server machine, two SQL Server instances, and one mirrored database

Modos de operación

El reflejo de bases de datos SQL Server puede ser establecido para proveer alta disponibilidad o recuperación de desastres. Dependiendo de las necesidades, un DBA puede elegir entre tres modos disponibles:

  • Alta seguridad – Los datos son escritos y enviados en las bases de datos principal y reflejada de manera síncrona. Sólo después de enviar los datos a ambas bases de datos, la aplicación de la base de datos puede continuar con actividad.
    • Puede producir retraso y operaciones más lentas porque las transacciones deben ser enviadas en ambas bases de datos
    • Si la base de datos principal deja de funcionar, hay dos opciones disponibles:
      • No hacer nada – esperar a que la base de datos principal vuelva a estar disponible. Durante este tiempo, la instancia SQL Server no está disponible. El reflejo continuará donde paró.
      • Forzar a la instancia SQL Server en la base de datos reflejada – la base de datos reflejo se convierte en la principal. Es posible que haya pérdida de datos debido a las transacciones enviadas en la base de datos original que no han sido enviados todavía al reflejo actualmente actuando como la base de datos principal.
  • Alta seguridad con conmutación automática por error – Estos servidores son necesarios. Los datos son escritos y deben ser enviados de manera síncrona a las bases de datos principal y reflejo. Sólo después de enviar los datos a ambas bases de datos, la aplicación puede continuar corriendo.
    • Puede producir retraso y operaciones más lentas debido a que las transacciones deben ser enviadas a ambas bases de datos.
    • Si la base de datos principal deja de funcionar, sólo una opción está disponible:
      • Dejar que el proceso de la conmutación automática por error se complete, la base de datos reflejo se convierte en la principal
  • Alto desempeño – la comunicación asíncrona, los datos son escritos y enviados al servidor principal y luego enviados al servidor reflejo. La conmutación automática por error no es posible y el servidor testigo no puede ser usado
    • El modo de alto desempeño está disponible sólo en la edición Enterprise de SQL Server
    • SI la base de datos principal deja de funcionar, tres opciones están disponibles:
      • No hacer nada – esperar a que la base de datos principal esté disponible de nuevo. El SQL Server no está disponible. El proceso de reflejo continuará donde paró
      • Forzar la instancia SQL Server en la base de datos reflejo – la base de datos reflejo se vuelve la principal. Gran posibilidad de pérdida de datos debido a la comunicación asíncrona entre las bases de datos
      • Actualización manual – para reducir la pérdida de datos, tome la cola de la copia de seguridad del registro si el server fallado lo permite, remueva el reflejo y restaure la cola del registro en la base de datos previamente reflejada

Ventajas y desventajas de usar el reflejo de bases de datos SQL Server

Usar el reflejo de bases de datos SQL Server tiene múltiples beneficios: una característica SQL Server incorporada, relativamente fácil de configurar, puede proveer conmutación automática por error en el modo de alta seguridad, etc. EL reflejo de bases de datos puede ser combinado con otras opciones de recuperación de desastres como agrupamiento, transvase de registro y replicación.

El reflejo de bases de datos será removido desde SQL Server en versiones futuras en favor de AlwaysOn Availability Groups. También, el reflejo de bases de datos es una solución sólo por cada base de datos, lo cual significa que los inicios de sesión y tareas desde el principal SQL Server deben ser manualmente recreados en el reflejo. También hay posibilidad para retraso, lo cual sólo puede ser reducido con mejor hardware.

Configurando el ambiente de reflejo de bases de datos

La característica de reflejo de bases de datos está disponible la versión 2005 de SQL Server y posteriores. La disponibilidad de los modos de operación depende de la edición de SQL Server. Diferentes versiones de SQL Server pueden ser combinadas, pero no es recomendado.

La base de datos que necesita ser reflejada debe estar en modo de recuperación completo. Las bases de datos del Sistema no pueden ser reflejadas.

Unas copias de seguridad completas del registro de transacciones y la base de datos que será reflejada deben ser creadas y restauradas en la instancia SQL Server, la cual actuará como el reflejo. El proceso de restauración debe ser ejecutado usando la opción WITH NORECOVERY.

La configuración del reflejo de la base de datos necesita ser iniciado desde el servidor principal usando el asistente de SQL Server Management Studio o código T-SQL. Al principio del proceso de configuración, hay una opción para elegir una instancia testigo de SQL Server que sólo es requerida si el modo de alta seguridad con conmutación automática por error es deseado. Las instancias SQL Server deben ser capaces de comunicar lo que requiere creación de puntos finales con el puerto y nombre especificados. Estos ajustes son requeridos tanto en la instancia SQL Server principal como en el reflejo.

SQL Server Database Mirroring Security configuration wizard

Después de que los puntos finales son creados y la conexión verificada, seleccione el modo de operación, ya sea de alta seguridad o alto desempeño. Si el servidor testigo es especificado eligiendo el modo de alta seguridad resultará en alta seguridad con conmutación automática por error.

SQL Server database mirroring - specifying server network address and operating mode

Recursos
Database Mirroring (SQL Server)
Setting Up Database Mirroring (SQL Server)
Mirror Mirror on the Server, Who is the Principal of Us All?
Mirror Mirror, On the Server
Mirroring a SQL Server Database is not as hard as you think
Database Mirroring FAQ
Prerequisites, Restrictions, and Recommendations for Database Mirroring

Ivan Stankovic

Ivan Stankovic

Ivan is a SQL Server professional and computer geek with years of IT and SQL Server experience. He has startedwith playing computer games, continued with computer programming and system administration. His areas of expertise are SQL Server disaster recovery, auditing, and compliance

View all posts by Ivan Stankovic
Ivan Stankovic
1,718 Views