Partilhar via


Como estabelecer uma sessão de espelhamento de banco de dados usando a Autenticação do Windows (Transact-SQL)

Depois que o banco de dados espelho estiver preparado (consulte Como preparar um banco de dados espelho para o espelhamento (Transact-SQL)), você pode estabelecer uma sessão de espelhamento de banco de dados. As instâncias do servidor principal, espelho e testemunha devem ser instâncias de servidor separadas que deveriam estar em sistemas host separados.

Observação importanteImportante

Recomendamos que você configure um espelhamento de banco de dados em períodos de pouca atividade porque a configuração de espelhamento pode comprometer o desempenho.

ObservaçãoObservação

Uma determinada instância do servidor pode participar de várias sessões de espelhamento de banco de dados simultâneas com os mesmos parceiros ou diferentes. Uma instância do servidor pode ser um parceiro em algumas sessões e uma testemunha em outras sessões. A instância do servidor espelho deve estar executando a mesma edição do SQL Server — Standard ou Enterprise — como a instância do servidor principal. Além disso, é altamente recomendável que eles sejam executados em sistemas similares que possam controlar cargas de trabalho idênticas.

Para estabelecer uma sessão de espelhamento de banco de dados

  1. Crie o banco de dados espelho. Para obter mais informações, consulte Como preparar um banco de dados espelho para o espelhamento (Transact-SQL).

  2. Defina a segurança em cada instância do servidor.

    Cada instância do servidor em uma sessão de espelhamento de banco de dados requer um ponto de extremidade de espelhamento de banco de dados. Se o ponto de extremidade não existir, você deve criá-lo.

    ObservaçãoObservação

    A forma de autenticação usada para o espelhamento de banco de dados por uma instância do servidor é uma propriedade do ponto de extremidade de espelhamento de banco de dados. Dois tipos de segurança de transporte estão disponíveis para o espelhamento de banco de dados: autenticação do Windows ou autenticação com certificado. Para obter mais informações, consulte Segurança de transporte de espelhamento de banco de dados.

    Em cada servidor parceiro, assegure que existe um ponto de extremidade de espelhamento de banco de dados. Independentemente do número de sessões de espelhamento a dar suporte, a instância do servidor só pode ter um ponto de extremidade de espelhamento de banco de dados. Se você pretende usar essa instância do servidor exclusivamente para parceiros em sessões de espelhamento de banco de dados, você poderá definir a função de parceiro ao ponto de extremidade (ROLE**=**PARTNER). Se você também pretende usar essa instância do servidor exclusivamente para testemunhas em sessões de espelhamento de banco de dados, você poderá definir o papel de parceiro ao ponto de extremidade como ALL.

    Para executar uma instrução SET PARTNER, o STATE dos pontos de extremidade de ambos os parceiros deve ser definido como STARTED.

    Para saber se uma instância do servidor tem um ponto de extremidade de espelhamento de banco de dados e saber sua função e estado, nessa instância, use a seguinte instrução Transact-SQL:

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints
    
    Observação importanteImportante

    Não reconfigure um ponto de extremidade de espelhamento de banco de dados em uso. Se houver um ponto de extremidade de espelhamento de banco de dados e já estiver em uso, recomendamos que você use esse ponto de extremidade para todas as sessões na instância do servidor. Cancelando um ponto de extremidade em uso pode fazer o ponto de extremidade reinicializar, interrompendo as conexões das sessões existentes, que podem aparecer como um erro às outras instâncias do servidor. Isso é particularmente importante em modo de segurança alta com failover automático no qual a reconfiguração de um ponto de extremidade em um parceiro poderá causar um failover. Além disso, se uma testemunha foi definida para uma sessão, cancelar o ponto de extremidade de espelhamento de banco de dados poderá fazer com que o servidor principal daquela sessão perca quorum; se isso acontecer, o banco de dados será colocado offline e seus usuários serão desconectados. Para obter mais informações, consulte Quorum: como uma testemunha afeta a disponibilidade do banco de dados.

    Se ambos os parceiros não tiverem um ponto de extremidade, consulte Como criar um ponto de extremidade de espelhamento para a Autenticação do Windows (Transact-SQL).

  3. Se as instâncias de servidor estiverem sendo executadas em contas do usuário de domínio diferentes, cada uma exigirá um logon no banco de dados mestre dos outros. Se o logon não existir, você deve criá-lo. Para obter mais informações, consulte Como permitir o acesso à rede de espelhamento de banco de dados usando a Autenticação do Windows (Transact-SQL).

  4. Para definir o servidor principal como parceiro no banco de dados espelho, conecte-se ao servidor espelho e emita a seguinte instrução:

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

    onde <database_name> é o nome do banco de dados a ser espelhado (esse nome é o mesmo em ambos os parceiros), e <server_network_address> é o endereço de rede de servidor do servidor principal.

    A sintaxe para um endereço de rede de servidor é a seguinte:

    TCP**://<system-address>:**<port>

    onde <system-address> é uma cadeia de caracteres que identifica inequivocamente o sistema de computador de destino, e <port> é o número da porta usado pelo ponto de extremidade de espelhamento da instância do servidor parceiro. Para obter mais informações, consulte Especificando um endereço de rede do servidor (Espelhamento de banco de dados).

    Por exemplo, na instância do servidor espelho, a seguinte instrução ALTER DATABASE define o parceiro como a instância do servidor principal original. O nome do banco de dados é AdventureWorks2008R2, o endereço do sistema é DBSERVER1 — o nome do sistema do parceiro — e a porta usada pelo ponto de extremidade de espelhamento de banco de dados do parceiro é 7022:

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

    Essa instrução prepara o servidor espelho para formar uma sessão quando é contatado pelo servidor principal.

  5. Para definir o servidor espelho como parceiro no banco de dados principal, conecte-se ao servidor principal e emita a seguinte instrução:

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

    Para obter mais informações, consulte a etapa 4.

    Por exemplo, na instância do servidor principal, a seguinte instrução ALTER DATABASE define o parceiro como a instância do servidor espelho original. O nome do banco de dados é AdventureWorks2008R2, o endereço do sistema é DBSERVER2 — o nome do sistema do parceiro — e a porta usada pelo ponto de extremidade de espelhamento de banco de dados do parceiro é 7025:

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

    Inserir essa instrução no servidor principal inicia a sessão de espelhamento de banco de dados.

  6. Por padrão, uma sessão é definida como segurança de transação completa (SAFETY é definido como FULL), o qual inicia a sessão no modo síncrono de segurança alta, sem failover automático. Você pode reconfigurar a sessão para ser executada em modo de segurança alta com failover automático ou em modo assíncrono de alto desempenho, como se segue:

Exemplo

ObservaçãoObservação

O exemplo seguinte estabelece uma sessão de espelhamento de banco de dados entre parceiros para um banco de dados espelho existente. Para obter informações sobre como criar um banco de dados espelho, consulte Como preparar um banco de dados espelho para o espelhamento (Transact-SQL).

O exemplo mostra as etapas básicas para criar uma sessão de espelhamento de banco de dados sem uma testemunha. Os dois parceiros são as instâncias de servidor padrão em dois sistemas de computador (PARTNERHOST1 e PARTNERHOST5). As duas instâncias do parceiro executam a mesma conta do usuário no domínio Windows (MYDOMAIN\dbousername).

ObservaçãoObservação

Para obter um exemplo completo mostrando a configuração de segurança, a preparação do banco de dados espelho, a configuração de parceiros e a inclusão de uma testemunha, consulte Configurando espelhamento de banco de dados.

  1. Na instância do servidor principal (instância padrão em PARTNERHOST1), crie um ponto de extremidade dê suporte a todas as funções que usam a porta 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.
    
    ObservaçãoObservação

    Para obter um exemplo de como configurar um logon, consulte Como permitir o acesso à rede de espelhamento de banco de dados usando a Autenticação do Windows (Transact-SQL).

  2. Na instância do servidor espelho (instância padrão em PARTNERHOST5), crie um ponto de extremidade que dê suporte a todas as funções que usam a porta 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. Na instância do servidor principal (em PARTNERHOST1), faça o backup do banco de dados:

    BACKUP DATABASE AdventureWorks2008R2 
        TO DISK = 'C:\AdvWorks_dbmirror.bak' 
        WITH FORMAT
    GO
    
  4. Na instância do servidor espelho (em PARTNERHOST5), restaure o banco de dados:

    RESTORE DATABASE AdventureWorks2008R2 
        FROM DISK = 'Z:\AdvWorks_dbmirror.bak' 
        WITH NORECOVERY
    GO
    
  5. Depois que você criar o backup de banco de dados completo, você deve criar um backup do log no banco de dados principal. Por exemplo, a seguinte instrução Transact-SQL faz o backup do log ao mesmo arquivo usado pelo backup de banco de dados precedente:

    BACKUP LOG AdventureWorks2008R2 
        TO DISK = 'C:\AdventureWorks2008R2.bak' 
    GO
    
  6. Antes de você poder iniciar o espelhamento, você deve aplicar o backup do log exigido (e qualquer backup de log subsequente).

    Por exemplo, a seguinte instrução Transact-SQL restaura o primeiro log de C:\AdventureWorks2008R2.bak:

    RESTORE LOG AdventureWorks2008R2 
        FROM DISK = 'C:\ AdventureWorks2008R2.bak' 
        WITH FILE=1, NORECOVERY
    GO
    
  7. Na instância do servidor espelho, defina a instância do servidor em PARTNERHOST1 como o parceiro (fazendo dele o servidor principal inicial):

    USE master;
    GO
    ALTER DATABASE AdventureWorks2008R2 
        SET PARTNER = 
        'TCP://PARTNERHOST1:7022'
    GO
    
    Observação importanteImportante

    Por padrão, uma sessão de espelhamento de banco de dados é executada modo síncrono, o que depende de ter uma transação de segurança completa (SAFETY é definido como FULL). Para fazer com que uma sessão seja executada em modo assíncrono, de alto desempenho, defina SAFETY como OFF. Para obter mais informações, consulte Sessões de espelhamento de banco de dados e Como alterar a segurança da transação em uma sessão de espelhamento de banco de dados (Transact-SQL).

  8. Na instância do servidor principal, defina a instância do servidor em PARTNERHOST5 como o parceiro (fazendo dele o servidor espelho inicial):

    USE master;
    GO
    ALTER DATABASE AdventureWorks2008R2 
        SET PARTNER = 'TCP://PARTNERHOST5:7022'
    GO
    
  9. Opcionalmente, se você pretender usar modo de segurança alta com failover automático, configure a instância do servidor testemunha. Para obter mais informações, consulte Como adicionar uma testemunha de espelhamento de banco de dados usando a Autenticação do Windows (Transact-SQL).

ObservaçãoObservação

Para obter um exemplo completo mostrando a configuração de segurança, a preparação do banco de dados espelho, a configuração de parceiros e a inclusão de uma testemunha, consulte Configurando espelhamento de banco de dados.