Partilhar via


Configurar espelhamento de banco de dados

Aplica-se a:SQL Server

Observação

Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso. Em vez disso, use os grupos de disponibilidade Always On.

Depois que o banco de dados espelho for preparado (consulte Preparar um banco de dados espelho para espelhamento (SQL Server)), você poderá 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 devem estar em sistemas anfitriões separados.

Importante

Recomendamos que você configure o espelhamento de banco de dados fora do horário de pico, pois a configuração do espelhamento pode afetar o desempenho.

Observação

Uma determinada instância de servidor pode participar de várias sessões simultâneas de espelhamento de banco de dados com parceiros iguais ou diferentes. Uma instância de 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 que a instância do servidor principal. O espelhamento de banco de dados não está disponível em todas as edições do Microsoft SQL Server. Para obter uma lista de recursos suportados pelas edições do SQL Server, consulte Recursos com suporte nas edições do SQL Server 2016. Além disso, é altamente recomendável que eles sejam executados em sistemas comparáveis que possam lidar com 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 Preparar um banco de dados espelho para espelhamento (SQL Server).

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

    Cada instância de servidor numa sessão de espelhamento de base de dados requer um endpoint de espelhamento de base de dados. Se o ponto de extremidade não existir, você deverá criá-lo.

    Observação

    A forma de autenticação usada para o espelhamento de base de dados por uma instância de servidor é uma propriedade do seu ponto de extremidade de espelhamento de base de dados. Dois tipos de segurança de transporte estão disponíveis para espelhamento de banco de dados: Autenticação do Windows ou autenticação baseada em certificado. Para mais informações, consulte a Segurança de Transporte no espelhamento de bases de dados e nos Grupos de Disponibilidade Always On (SQL Server) .

    Em cada servidor parceiro, verifique se existe um endpoint para espelhamento de banco de dados. Independentemente do número de sessões de espelhamento suportadas, a instância do servidor pode ter apenas um ponto de extremidade de espelhamento de banco de dados. Se pretendes usar esta instância de servidor exclusivamente para parceiros em sessões de espelhamento de base de dados, podes atribuir a função de parceiro à extremidade (ROLE**=**PARTNER). Se também pretenderes usar este servidor como testemunha noutras sessões de espelhamento de base de dados, atribui a função do endpoint 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 de servidor tem um ponto de extremidade de espelhamento de bases de dados e para obter informações sobre a 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  
    

    Importante

    Não reconfigure um ponto de extremidade de espelhamento de banco de dados que esteja em uso. Se existir um endpoint de espelhamento de base de dados e estiver em uso, recomendamos utilizar esse endpoint para cada sessão na instância do servidor. Descartar um endpoint em uso pode causar a reinicialização dele, interrompendo as conexões das sessões existentes, o qual pode ser interpretado como um erro por outras instâncias do servidor. Isso é particularmente importante no modo de alta segurança com falha automática, em que a reconfiguração do ponto de extremidade em um servidor parceiro pode causar uma falha automática. Além disso, se uma testemunha tiver sido definida para uma sessão, eliminar o endpoint de espelhamento do banco de dados pode fazer com que o servidor principal dessa sessão perca o quórum; caso isso aconteça, o banco de dados fica offline e os seus utilizadores são desconectados. Para obter mais informações, consulte Quórum: De que forma uma testemunha influencia a disponibilidade de um banco de dados (espelhamento de banco de dados).

    Se uma das entidades envolvidas não tiver um endpoint, consulte Criar um Endpoint de Espelhamento de Base de Dados para Autenticação do Windows (Transact-SQL).

  3. Se as instâncias do servidor estiverem em execução em contas de usuário de domínio diferentes, cada uma delas precisa de um logon no banco de dados mestre das outras. Se o login não existir, você deve criá-lo. Para obter mais informações, consulte Permitir acesso de rede a um ponto de extremidade de espelhamento de banco de dados usando a autenticação do Windows (SQL Server).

  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> DEFINIR PARCEIRO =<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 do servidor principal.

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

    TCP://<endereço do sistema>:<porta>

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

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

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

    Esta declaração prepara o servidor espelho para formar uma sessão quando for 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> DEFINIR =<server_network_address> PARCEIRO

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

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

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

    A inserção desta instrução no servidor principal inicia a sessão de espelhamento de base de dados.

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

Exemplo

Observação

O exemplo a seguir 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 Preparar um banco de dados espelho para espelhamento (SQL Server)=.

O exemplo mostra as etapas básicas para criar uma sessão de espelhamento de banco de dados sem 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 de parceiro executam a mesma conta de usuário de domínio do Windows (MYDOMAIN\dbousername).

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

    BACKUP DATABASE AdventureWorks   
        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 AdventureWorks   
        FROM DISK = 'Z:\AdvWorks_dbmirror.bak'   
        WITH NORECOVERY  
    GO  
    
  5. Depois de criar o backup completo do banco de dados, você deve criar um backup de log no banco de dados principal. Por exemplo, a instrução Transact-SQL a seguir faz backup do log no mesmo arquivo usado pelo backup de banco de dados anterior:

    BACKUP LOG AdventureWorks   
        TO DISK = 'C:\AdventureWorks.bak'   
    GO  
    
  6. Antes de iniciar a sincronização, deve aplicar os backups de log necessários (e quaisquer backups de log subsequentes).

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

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

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

    Importante

    Por padrão, uma sessão de espelhamento de banco de dados é executada no modo síncrono, o que depende da segurança total da transação (SAFETY está definido como FULL). Para fazer com que uma sessão seja executada no modo assíncrono e de alto desempenho, defina SAFETY como OFF. Para obter mais informações, consulte modos operacionais de espelhamento de banco de dados.

  8. Na instância do servidor principal, configure a instância do servidor em PARTNERHOST5 como parceiro (tornando-o o servidor de espelho inicial):

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://PARTNERHOST5:7022'  
    GO  
    
  9. Opcionalmente, se pretendes utilizar o modo de alta segurança com failover automático, configura a instância do servidor witness. Para obter mais informações, consulte Adicionar uma testemunha de espelhamento de banco de dados usando a autenticação do Windows (Transact-SQL).

Observação

Para obter um exemplo completo mostrando a configuração de segurança, preparando o banco de dados espelho, configurando os parceiros e adicionando uma testemunha, consulte Configurando o espelhamento de banco de dados (SQL Server).

Ver também

Configurando o espelhamento de banco de dados (SQL Server)
ALTERAR BASE DE DADOS (Transact-SQL)
Permitir acesso de rede a um ponto de extremidade de espelhamento de banco de dados usando a Autenticação do Windows (SQL Server)
Preparar um banco de dados espelho para espelhamento (SQL Server)
Criar um endpoint de espelhamento de base de dados para autenticação do Windows (Transact-SQL)
espelhamento de banco de dados e envio de logs (SQL Server)
Espelhamento de Banco de Dados (SQL Server)
espelhamento e replicação de banco de dados (SQL Server)
Configurando o espelhamento de banco de dados (SQL Server)
Especificar um endereço de rede do servidor (espelhamento de banco de dados)
Modos de Operação de Espelhamento de Banco de Dados