Información general sobre la creación de reflejos de la base de datos

La creación de reflejo de la base de datos es una solución de software usada principalmente para aumentar la disponibilidad de una base de datos. La creación de reflejo se implementa en cada una de las bases de datos y sólo funciona con las que utilizan el modelo de recuperación completa. Los modelos de recuperación simple y de recuperación optimizado para cargas masivas de registros no admiten la creación de reflejo de la base de datos. Por lo tanto, todas las operaciones masivas se registran siempre por completo. La creación de reflejo de una base de datos funciona con cualquier nivel de compatibilidad con bases de datos.

Nota

No puede reflejar las bases de datos master, msdb, tempdb o model.

La creación de reflejos de la base de datos mantiene dos copias de una sola base de datos que deben residir en diferentes instancias de SQL Server Database Engine (Motor de base de datos de SQL Server). Generalmente, estas instancias de servidor residen en equipos de diferentes ubicaciones. Una instancia de servidor sirve la base de datos a los clientes (el servidor principal). La otra instancia actúa como un servidor en estado de espera activa o semiactiva (el servidor reflejado), en función de la configuración y del estado de la sesión de creación de reflejo. Cuando una sesión de creación de reflejo de la base de datos está sincronizada, la creación de reflejo de la base de datos proporciona un servidor en espera activa que admite la conmutación por error rápida sin que se produzca ninguna pérdida de datos derivada de las transacciones confirmadas. Cuando la sesión no está sincronizada, el servidor reflejado suele estar disponible como servidor en espera activa (con posible pérdida de datos).

Ventajas de la creación de reflejo de la base de datos

La creación de reflejo de la base de datos es una estrategia sencilla que ofrece las siguientes ventajas:

  • Aumenta la protección de los datos.

    La creación de reflejo de la base de datos proporciona una redundancia completa o casi completa de los datos, en función de si el modo de funcionamiento es el de alta seguridad o el de alto rendimiento. Para obtener más información, vea "Modos de funcionamiento", más adelante en este tema.

    Un asociado de creación de reflejo de la base de datos que se ejecute en SQL Server 2008 Enterprise o en versiones posteriores intentará resolver automáticamente cierto tipo de errores que impiden la lectura de una página de datos. El socio que no puede leer una página, solicita una copia nueva al otro socio. Si la solicitud se realiza correctamente, la copia sustituirá a la página que no se puede leer, de forma que se resuelve el error en la mayoría de los casos. Para obtener más información, vea Reparación automática de la página durante una sesión de creación de reflejo de la base de datos.

  • Incrementa la disponibilidad de una base de datos.

    Si se produce un desastre en el modo de alta seguridad con conmutación automática por error, la conmutación por error pone en línea rápidamente la copia en espera de la base de datos, sin pérdida de datos. En los demás modos operativos, el administrador de bases de datos tiene la alternativa del servicio forzado (con una posible pérdida de datos) para la copia en espera de la base de datos. Para obtener más información, vea "Conmutación de roles", más adelante en este tema.

  • Mejora la disponibilidad de la base de datos de producción durante las actualizaciones.

    Para minimizar el tiempo de inactividad para una base de datos reflejada, puede actualizar secuencialmente las instancias de SQL Server que participan en una sesión de creación de reflejo de la base de datos. Esto incurrirá en el tiempo de inactividad de sólo una conmutación por error única. Este formulario de actualización se conoce como actualización gradual. Para obtener más información, vea Cómo instalar un Service Pack en un sistema con un tiempo de inactividad mínimo para bases de datos reflejadas.

Funcionamiento de la creación de reflejo de la base de datos

Los dos servidores, principal y reflejado, se comunican y colaboran como asociados en una sesión de creación de reflejo de la base de datos. Los dos asociados tienen roles complementarios en la sesión: el rol principal y el rol reflejado. En cada momento, un asociado realiza el rol principal y el otro realiza el rol reflejado. Cada asociado se describe como poseedor de su rol actual. El asociado que posee el rol principal se denomina servidor principal y su copia de la base de datos es la base de datos principal actual. El asociado que posee el rol reflejado se denomina servidor reflejado y su copia de la base de datos es la base de datos reflejada actual. Cuando se implementa la creación de reflejo de la base de datos en un entorno de producción, la base de datos principal es la base de datos de producción.

La creación de reflejo de la base de datos implica rehacer cada operación de inserción, actualización y eliminación que se produce desde la base de datos principal a la base de datos reflejada tan pronto como sea posible. Para rehacer estas operaciones, se envía cada secuencia de entradas del registro de transacciones activo al servidor reflejado, que las aplica a la base de datos reflejada, en secuencia, lo más rápido posible. A diferencia de la replicación, que trabaja en el nivel lógico, la creación de reflejo de la base de datos trabaja en el nivel de registro físico. A partir de SQL Server 2008, el servidor principal comprime la secuencia de entradas del registro de transacciones antes de enviarla al servidor reflejado. Esta compresión del registro se produce en todas las sesiones de creación de reflejo.

Modos de funcionamiento

Una sesión de creación de reflejo de la base de datos se ejecuta en modo sincrónico o asincrónico. Con el funcionamiento asincrónico, las transacciones se confirman sin esperar a que el servidor reflejado escriba el registro en el disco, lo que maximiza el rendimiento. Con el funcionamiento sincrónico, una transacción se confirma en ambos asociados, pero a costa de aumentar la latencia de las transacciones.

Existen dos modos de funcionamiento de la creación de reflejo. Uno de ellos, el modo de alta seguridad, admite el funcionamiento sincrónico. En el modo de alta seguridad, cuando se inicia una sesión, el servidor reflejado sincroniza la base de datos reflejada con la base de datos principal lo más rápido posible. Una vez sincronizadas las bases de datos, una transacción se confirma en ambos asociados, pero a costa de aumentar la latencia de las transacciones.

El segundo modo de funcionamiento, el modo de alto rendimiento, se ejecuta de manera asincrónica. El servidor reflejado intenta hacer frente a las entradas de registro enviadas por el servidor principal. La base de datos reflejada podría retrasarse ligeramente en relación con la base de datos principal. No obstante, lo habitual es que dicha diferencia sea pequeña. Sin embargo, la diferencia puede ser considerable si el servidor principal soporta una gran carga de trabajo o el sistema del servidor reflejado se encuentra sobrecargado.

En el modo de alto rendimiento, en cuanto el servidor principal envía una entrada de registro al servidor reflejado, el servidor principal envía una confirmación al cliente. No espera a una confirmación del servidor reflejado. Esto significa que las transacciones se confirman sin esperar a que el servidor reflejado escriba el registro en el disco. Este funcionamiento asincrónico permite que el servidor principal se ejecute con la mínima latencia de transacciones, pero a riesgo de una pérdida potencial de datos.

Todas las sesiones de creación de reflejo de la base de datos sólo admiten un servidor principal y un servidor reflejado. Esta configuración se muestra en la ilustración siguiente.

Asociados en una sesión de creación de reflejo de la base de datos

El modo de alta seguridad con conmutación automática por error requiere una tercera instancia de servidor denominada testigo. A diferencia de los dos asociados, el testigo no sirve a la base de datos. El testigo admite la conmutación automática por error al comprobar que el servidor principal se encuentre activo y en funcionamiento. El servidor reflejado inicia la conmutación automática por error sólo si éste y el testigo permanecen mutuamente conectados después de haberse desconectado del servidor principal.

En la siguiente ilustración se muestra una configuración que incluye un testigo.

Sesión de creación de reflejo que incluye un testigo

Para obtener más información, vea "Conmutación de roles", más adelante en este tema.

Nota

El establecimiento de una nueva sesión de creación de reflejo o la incorporación de un testigo a una configuración de creación de reflejo existente requiere que en todas las instancias del servidor involucradas se ejecute la misma versión de SQL Server. Sin embargo, al actualizar a SQL Server 2008 o a una versión posterior, pueden existir variaciones en las versiones de las instancias involucradas. Para obtener más información, vea Cómo minimizar el tiempo de inactividad de las bases de datos reflejadas al actualizar instancias de servidor.

Seguridad de las transacciones y modos de funcionamiento

Que el modo operativo sea asincrónico o sincrónico depende de la configuración de seguridad de las transacciones. Si utiliza exclusivamente SQL Server Management Studio para configurar la creación de reflejo de la base de datos, la configuración de seguridad de las transacciones se realiza automáticamente cuando selecciona el modo operativo.

Si utiliza Transact-SQL para configurar la creación de reflejo de la base de datos, deberá comprender cómo establecer la seguridad de las transacciones. El control de la seguridad de las transacciones está a cargo de la propiedad SAFETY de la instrucción ALTER DATABASE. En la base de datos que se va a reflejar, la opción SAFETY se establece en FULL o en OFF.

  • Si la opción SAFETY se establece en FULL, la operación de creación de reflejo de la base de datos es sincrónica, tras la fase inicial de sincronización. Si un testigo se establece en el modo de alta seguridad, la sesión admite la conmutación automática por error.

  • Si la opción SAFETY se establece en OFF, la operación de creación de reflejo de la base de datos es asincrónica. La sesión se ejecuta en modo de alto rendimiento y la opción WITNESS también debe establecerse en OFF.

Para obtener más información, vea Configuración de Transact-SQL y modos de funcionamiento de la creación de reflejo de la base de datos.

Conmutación de roles

En el contexto de una sesión de creación de reflejo de la base de datos, los roles principal y reflejado suelen ser intercambiables en un proceso conocido como conmutación de roles. La conmutación de roles implica la transferencia del rol principal al servidor reflejado. En la conmutación de roles, el servidor reflejado actúa como el asociado de conmutación por error del servidor principal. Cuando se produce una conmutación de roles, el servidor reflejado asume el rol de servidor principal y pone en línea su copia de la base de datos como la nueva base de datos principal. El servidor principal anterior, si está disponible, asume el rol reflejado y su base de datos se convierte en la nueva base de datos reflejada. Los roles pueden conmutarse repetidamente.

Hay tres formas de intercambiar roles.

  • Conmutación automática por error

    Esta función requiere el modo de alta seguridad y la presencia del servidor reflejado y de un testigo. La base de datos ya debe estar sincronizada y el testigo debe estar conectado al servidor reflejado.

    El rol del testigo es comprobar si un determinado servidor asociado está activo y en funcionamiento. Si el servidor reflejado pierde su conexión con el servidor principal, pero el testigo aún está conectado al servidor principal, el servidor reflejado no inicia una conmutación por error. Para obtener más información, vea Testigo de creación de reflejo de la base de datos.

  • Conmutación por error manual

    Esta función requiere el modo de alta seguridad. Los asociados deben estar conectados entre sí y la base de datos ya debe estar sincronizada.

  • Servicio forzado (con posible pérdida de datos)

    En los modos de alto rendimiento y alta seguridad sin conmutación automática por error, se puede forzar el servicio si el servidor principal no ha funcionado y el servidor reflejado está disponible.

    Nota importanteImportante

    El modo de alto rendimiento se ha diseñado para que se ejecute sin un testigo. No obstante, si existe un testigo, el servicio forzado requiere que el testigo esté conectado al servidor reflejado.

En cualquier escenario de conmutación de roles, una vez que la nueva base de datos principal se pone en línea, las aplicaciones cliente se pueden recuperar rápidamente si vuelven a conectarse a la base de datos.

Interoperabilidad y coexistencia con otras características del motor de base de datos

La creación de reflejo de la base de datos se puede utilizar con las siguientes características o componentes de SQL Server.

Compatibilidad de la creación de reflejo de la base de datos

A partir de SQL Server 2005 Service Pack 1 (SP1), Standard y Enterprise Edition han admitido los testigos y asociados de creación de reflejo de la base de datos. Pero los asociados deben usar la misma edición y solamente Enterprise Edition admite la creación de reflejo de la base de datos asincrónica (modo de alto rendimiento). Workgroup Edition y Express Edition admiten también los testigos.