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

Se aplica a:SQL Server

Nota:

Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. En su lugar, use Grupos de disponibilidad AlwaysOn.

Una vez preparada la base de datos reflejada (vea Preparar una base de datos reflejada para la creación de reflejo —SQL Server), puede establecer una sesión de creación de reflejo de la base de datos. Las instancias de servidor principal, reflejado y testigo deben ser instancias de servidor independientes y se deben encontrar en sistemas host distintos.

Importante

Es recomendable que configure la creación de reflejo de la base de datos durante las horas de menor actividad, ya que puede afectar al rendimiento.

Nota

Una determinada instancia de servidor puede participar en varias sesiones simultáneas de creación de reflejo de la base de datos con el mismo asociado o con asociados distintos. Una instancia de servidor puede ser asociado en algunas sesiones y testigo en otras. La instancia del servidor reflejado debe ejecutar la misma edición de SQL Server que la instancia del servidor principal. La creación de reflejo de la base de datos no está disponible en todas las ediciones de Microsoft SQL Server. Para obtener una lista de las características admitidas por las ediciones de SQL Server, vea Características compatibles con las ediciones de SQL Server 2016. Asimismo, se recomienda encarecidamente que se ejecuten en sistemas comparables que puedan administrar cargas de trabajo idénticas.

Para establecer una sesión de creación de reflejo de la base de datos

  1. Cree la base de datos reflejada. Para obtener más información, vea Preparar una base de datos reflejada para la creación de reflejo - SQL Server.

  2. Configure la seguridad en cada instancia de servidor.

    Cada instancia de servidor de una sesión de creación de reflejo de la base de datos requiere un extremo de creación de reflejo de la base de datos. Si el extremo no existe, deberá crearlo.

    Nota

    El tipo de autenticación que utilice la instancia de servidor para la creación de reflejo de la base de datos es una propiedad del extremo de reflejo de la base de datos. Existen dos tipos de seguridad de transporte para la creación de reflejo de la base de datos: autenticación de Windows o autenticación basada en certificados. Para obtener más información, vea Seguridad de transporte para la creación de reflejo de la base de datos y grupos de disponibilidad AlwaysOn (SQL Server).

    Asegúrese de que exista un extremo para el reflejo de bases de datos en cada servidor asociado. La instancia de servidor solo puede tener un extremo de reflejo de la base de datos, independientemente del número de sesiones de creación de reflejo que se admitirán. Si tiene pensado utilizar esta instancia de servidor exclusivamente para los asociados en las sesiones de creación de reflejo de la base de datos, puede asignar el rol de asociado al punto de conexión (ROLE**=**PARTNER). Si también tiene pensado usar este servidor para el testigo en otras sesiones de creación de reflejo de la base de datos, asigne el rol del extremo como ALL.

    Para ejecutar una instrucción SET PARTNER, el valor de STATE de los extremos de ambos asociados debe ser STARTED.

    Para saber si una instancia de servidor tiene un punto de conexión de creación de reflejo de la base de datos y cuáles son su rol y su estado en esa instancia, use la siguiente instrucción Transact-SQL:

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints  
    

    Importante

    No reconfigure un extremo de creación de reflejo de la base de datos en uso. Si existe un extremo para la creación de reflejo de la base de datos y ya se está utilizando, se recomienda utilizar ese extremo para cada sesión en la instancia de servidor. Quitar un extremo en uso puede dar lugar a que el extremo se reinicie y conllevar la interrupción de las conexiones de las sesiones existentes, que pueden aparecer como un error en las otras instancias de servidor. Esto es especialmente importante en el modo de alta seguridad con conmutación automática por error, en el que reconfigurar el extremo en un asociado podría dar lugar a una conmutación automática por error. Asimismo, si se ha establecido un testigo para una sesión, la eliminación del extremo de creación de reflejo de la base de datos puede hacer que el servidor principal de esa sesión pierda quórum; si sucede esto, la base de datos se queda sin conexión y se desconecta a sus usuarios. Para más información, vea Quorum: cómo un testigo afecta a la disponibilidad de la base de datos (Creación de reflejo de la base de datos).

    Si alguno de los asociados no tiene un punto de conexión, consulte Crear un punto de conexión de creación de reflejo de la base de datos para la autenticación de Windows (Transact-SQL).

  3. Si las instancias de servidor se ejecutan con distintas cuentas de usuario de dominio, cada una requiere un inicio de sesión en la base de datos master de las demás. Si el inicio de sesión no existe, deberá crearlo. Para obtener más información, vea Permitir el acceso de red a un punto de conexión de creación de reflejo de la base de datos mediante la autenticación de Windows (SQL Server).

  4. Para establecer el servidor principal como asociado en la base de datos reflejada, conéctese al servidor reflejado y emita la instrucción siguiente:

    ALTER DATABASE <nombre_basededatos> SET PARTNER =<dirección_red_servidor>

    donde <nombre_basededatos> es el nombre de la base de datos de la que se va a crear el reflejo (este nombre es el mismo para ambos asociados) y <dirección_red_servidor> es la dirección de red del servidor principal.

    La sintaxis para una dirección de red de servidor es la siguiente:

    TCP://<dirección-sistema>:<puerto>

    donde <dirección-sistema> es una cadena que identifica de forma inequívoca el sistema del equipo de destino y <puerto>, el número de puerto que usa el punto de conexión de la creación de reflejo de la instancia de servidor asociado. Para obtener más información, vea Especificar una dirección de red de servidor (Creación de reflejo de la base de datos).

    Por ejemplo, en la instancia del servidor reflejado, el siguiente parámetro ALTER DATABASE establece el asociado como la instancia de servidor principal original. El nombre de la base de datos es AdventureWorks, la dirección del sistema es DBSERVER1 (el nombre del sistema del asociado) y el puerto usado por el punto de conexión de reflejo de la base de datos del asociado es 7022:

    ALTER DATABASE AdventureWorks   
       SET PARTNER = 'TCP://DBSERVER1:7022'  
    

    Esta instrucción prepara el servidor reflejado para que cree una sesión cuando el servidor principal se ponga en contacto con él.

  5. Para establecer el servidor reflejado como asociado en la base de datos principal, conéctese al servidor principal y emita la instrucción siguiente:

    ALTER DATABASE <nombre_basededatos> SET PARTNER =<dirección_red_servidor>

    Para obtener más información, vea el paso 4.

    Por ejemplo, en la instancia de servidor principal, la siguiente instrucción ALTER DATABASE establece el asociado como la instancia del servidor reflejado original. El nombre de la base de datos es AdventureWorks, la dirección del sistema es DBSERVER2 (el nombre del sistema del asociado) y el puerto usado por el punto de conexión de reflejo de la base de datos del asociado es 7025:

    ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://DBSERVER2:7022'  
    

    Si escribe esta instrucción en el servidor principal, comenzará la sesión de creación de reflejo de la base de datos.

  6. De forma predeterminada, una sesión se configura con la seguridad de las transacciones completa (SAFETY se establece en FULL), lo que inicia la sesión en modo sincrónico de alta seguridad sin conmutación automática por error. Puede volver a configurar la sesión para ejecutarla en modo de alta seguridad con conmutación automática por error o en modo asincrónico de alto rendimiento, como se indica a continuación:

Ejemplo

Nota

En el siguiente ejemplo se establece una sesión de creación de reflejo de la base de datos entre asociados de una base de datos reflejada existente. Para obtener información sobre la creación de reflejo de la base de datos, consulte Preparar una base de datos reflejada para la creación de reflejo (SQL Server).

En el ejemplo se muestran los pasos básicos para crear una sesión de creación de reflejo de la base de datos sin un testigo. Los dos asociados son las instancias de servidor predeterminadas en dos equipos (PARTNERHOST1 y PARTNERHOST5). Las dos instancias de asociado se ejecutan con la misma cuenta de usuario de dominio de Windows (MYDOMAIN\dbousername).

  1. En la instancia de servidor principal (instancia predeterminada en PARTNERHOST1), cree un extremo que admita todos los roles y que utilice el puerto 7022:

    --create an endpoint for this instance  
    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=ALL)  
    GO  
    --Partners under same domain user; login already exists in master.  
    
  2. En la instancia del servidor reflejado (instancia predeterminada en PARTNERHOST5), cree un extremo que admita todos los roles y que utilice el puerto 7022:

    --create an endpoint for this instance  
    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=ALL)  
    GO  
    --Partners under same domain user; login already exists in master.  
    
  3. En la instancia de servidor principal (en PARTNERHOST1), cree una copia de seguridad de la base de datos:

    BACKUP DATABASE AdventureWorks   
        TO DISK = 'C:\AdvWorks_dbmirror.bak'   
        WITH FORMAT  
    GO  
    
  4. En la instancia del servidor reflejado (en PARTNERHOST5), restaure la base de datos:

    RESTORE DATABASE AdventureWorks   
        FROM DISK = 'Z:\AdvWorks_dbmirror.bak'   
        WITH NORECOVERY  
    GO  
    
  5. Tras crear la copia de seguridad completa de base de datos, debe crear una copia de seguridad de registros en la base de datos principal. Por ejemplo, la siguiente instrucción Transact-SQL realiza una copia de seguridad del registro en el mismo archivo que se ha utilizado en la copia de seguridad completa anterior:

    BACKUP LOG AdventureWorks   
        TO DISK = 'C:\AdventureWorks.bak'   
    GO  
    
  6. Para poder iniciar la creación de reflejo, se debe aplicar la copia de seguridad de registros obligatoria (y las copias de seguridad de registros subsiguientes).

    Por ejemplo, la siguiente instrucción Transact-SQL restaura el primer registro desde C:\AdventureWorks.bak:

    RESTORE LOG AdventureWorks   
        FROM DISK = 'C:\ AdventureWorks.bak'   
        WITH FILE=1, NORECOVERY  
    GO  
    
  7. En la instancia del servidor reflejado, establezca la instancia de servidor en PARTNERHOST1 como asociado (para convertirla en el servidor principal inicial):

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks   
        SET PARTNER =   
        'TCP://PARTNERHOST1:7022'  
    GO  
    

    Importante

    De forma predeterminada, una sesión de creación de reflejo de la base de datos se ejecuta en modo sincrónico. Esto exige tener la seguridad de las transacciones completa (SAFETY establecido en FULL). Para que una sesión se ejecute en modo asincrónico de alto rendimiento, establezca SAFETY en OFF. Para más información, consulte Database Mirroring Operating Modes.

  8. En la instancia de servidor principal, establezca la instancia de servidor en PARTNERHOST5 como asociado (para convertirla en el servidor reflejado inicial):

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://PARTNERHOST5:7022'  
    GO  
    
  9. Opcionalmente, si va a usar el modo de alta seguridad con conmutación automática por error, configure la instancia de servidor testigo. Para obtener más información, consulte Agregar un testigo de creación de reflejo de la base de datos mediante la autenticación de Windows (Transact-SQL).

Nota

Para ver un ejemplo completo en el que se muestra la configuración de seguridad, se prepara la base de datos reflejada, se configuran los asociados y se agrega un testigo, vea Configurar la creación de reflejo de la base de datos (SQL Server).

Consulte también

Configurar la creación de reflejo de la base de datos (SQL Server)
ALTER DATABASE (Transact-SQL)
Permitir el acceso de red a un extremo de creación de reflejo de la base de datos mediante la autenticación de Windows (SQL Server)
Preparar una base de datos reflejada para la creación de reflejo (SQL Server)
Crear un extremo de reflejo de la base de datos para la autenticación de Windows (Transact-SQL)
Crear reflejo de la base de datos y trasvase de registros (SQL Server)
Creación de reflejo de la base de datos (SQL Server)
Replicación y creación de reflejo de la base de datos (SQL Server)
Configurar la creación de reflejo de la base de datos (SQL Server)
Especificar una dirección de red de servidor (creación de reflejo de la base de datos)
Database Mirroring Operating Modes