Configurar disponibilidade em um único farm usando espelhamento de banco de dados do SQL Server
Atualizado em: 2008-12-18
Este artigo descreve como usar o espelhamento do banco de dados de alta disponibilidade para configurar a disponibilidade em um farm para o Microsoft Office SharePoint Server 2007. O artigo pressupõe que você tenha familiaridade com os conceitos e termos apresentados no artigo sobre Planejar-se para a disponibilidade (Office SharePoint Server).
O espelhamento de banco de dados do Microsoft SQL Server 2005 fornece suporte de disponibilidade enviando as transações diretamente de um banco de dados e servidor principais para um banco de dados e servidor espelhados sempre que o buffer do log da transação do banco de dados principal for gravado em um disco. Recomendamos que, para a disponibilidade em um farm do Office SharePoint Server 2007, você use o espelhamento de banco de dados de alta disponibilidade, também denominado modo de alta segurança com failover automático. O espelhamento de banco de dados de alta disponibilidade envolve três instâncias de servidor: um principal, um espelhado e uma testemunha. O servidor testemunha permite failover automático do SQL Server do servidor principal para o servidor espelhado. O failover do banco de dados principal para o banco de dados espelhado normalmente leva vários segundos.
Em um farm do SharePoint, o espelhamento pode proporcionar redundância para todos os bancos de dados — quando ocorre failover nos bancos de dados, pressupõe-se que os servidores Web front-end continuem disponíveis. A figura a seguir mostra como o espelhamento é configurado para oferecer alta disponibilidade em um farm.
O Office SharePoint Server 2007 não oferece reconhecimento de espelhamento. Para usar o espelhamento como uma solução de disponibilidade, recomendamos que você configure os bancos de dados para usar aliases de cliente do SQL Server e execute scripts para alterar o alias de cliente do SQL Server no failover.
Requisitos do espelhamento de banco de dados
Verifique se os bancos de dados e o sistema atendem aos seguintes requisitos para configurar o espelhamento do banco de dados:
Recomendamos que o sistema tenha latência não superior a 1 milissegundo.
De preferência, a largura de banda do sistema deve ser de 1 gigabyte por segundo.
Os logs são copiados em tempo real entre os servidores principal e espelhado, e a cópia pode prejudicar o desempenho. Verifique se há memória e largura de banda suficientes tanto no servidor principal quanto no espelhado.
Os servidores principal e espelhado precisam executar a mesma edição do Microsoft SQL Server 2005 com Service Pack 1 (SP1). O espelhamento do banco de dados está disponível somente nas edições Standard, Developer e Enterprise. O servidor testemunha pode executar qualquer versão do SQL Server 2005, incluindo a SQL Server 2005 Express Edition.
O espelhamento funciona somente com bancos de dados que usam o modelo de recuperação completa.
Por padrão, os bancos de dados de SSP do Office SharePoint Server 2007 são configurados para usar o modelo de recuperação Simples. Para configurar o espelhamento do banco de dados, o modelo de recuperação do banco de dados precisa estar definido como Completo. Para obter informações sobre como definir o modelo de recuperação para um banco de dados, consulte o artigo sobre exibição ou alteração do modelo de recuperação de um banco de dados (SQL Server Management Studio) (https://go.microsoft.com/fwlink/?linkid=132075\&clcid=0x416).
Se você pretende espelhar bancos de dados de SSP, leve em consideração que o tamanho do log de transações desses bancos de dados pode ficar muito grande. Para contornar esse problema, pense na possibilidade de ter um plano de recuperação para truncar os logs de transações conforme necessário. Para obter mais informações, consulte a Base de Dados de Conhecimento Microsoft, artigo sobre: interrupção do log de transações de um banco de dados do SQL Server para não crescer inesperadamente (https://go.microsoft.com/fwlink/?linkid=111458\&clcid=0x416).
Cada sessão de espelhamento do banco de dados cria pelo menos dois threads para cada banco de dados. Verifique se o servidor de banco de dados tem threads suficientes para serem alocados para espelhar todos os bancos de dados que têm suporte. Se não houver threads suficientes, à medida que mais bancos de dados forem adicionados a uma sessão, o desempenho poderá piorar progressivamente.
No ambiente de hospedagem da Microsoft, constatamos que a quantidade máxima prática para espelhar bancos de dados de uma única instância do SQL Server que está hospedando os Produtos e Tecnologias do SharePoint é de 50 bancos de dados. Esse máximo se baseia no grau de intensidade de recursos do espelhamento (cada instância principal e instância espelhada exige threads dedicados) e em testes. Os resultados podem variar com base nos seguintes fatores:
Memória das instâncias principal e espelhada
Capacidade de processamento das instâncias principal e espelhada
Largura de banda dos subsistemas de E/S nas instâncias principal e espelhada
Quantidade de logs de transações gerada pela carga de trabalho em cada banco de dados
Largura de banda de rede entre as instâncias principal e espelhada
Para obter mais informações sobre desempenho e escala para espelhamento do banco de dados, consulte o artigo sobre espelhamento de banco de dados no SQL Server 2005 (em inglês) (https://go.microsoft.com/fwlink/?linkid=83566\&clcid=0x416) (em inglês).
Segurança associada ao espelhamento do banco de dados
O espelhamento do banco de dados usa sessões de TCP para transportar o log de transações entre um servidor e outro e para monitorar a integridade atual do sistema para saber se há failovers automáticos. A autenticação é executada no nível da sessão quando uma porta é aberta para conexão.
Autenticação do Windows (NTLM ou Kerberos)
Certificados
Este documento descreve como usar o espelhamento de banco de dados com certificados. Para obter informações sobre como usar a autenticação do Windows com espelhamento de banco de dados, consulte o artigo de exemplo de configuração de um espelhamento de banco de dados usando a autenticação do Windows (Transact-SQL) (https://go.microsoft.com/fwlink/?linkid=83567\&clcid=0x416).
A menos que a rede esteja protegida, os dados transmitidos durante a sessão devem ser criptografados. Este documento descreve como configurar a criptografia nos dados transmitidos com cabeamento usando RC4, mas o espelhamento de banco de dados oferece suporte aos algoritmos de criptografia AS e RC4. Para obter mais informações sobre a segurança associada ao espelhamento de banco de dados, consulte o artigo sobre segurança do transporte no espelhamento de banco de dados (https://go.microsoft.com/fwlink/?linkid=83569\&clcid=0x416).
Segurança e servidores espelhados do SharePoint
Quando você configura um banco de dados espelhado, os lajens e as permissões do SQL Server referentes ao banco de dados que será usado com um farm do SharePoint não são configurados automaticamente nos bancos de dados mestre e MSDN do espelho. Em vez disso, é necessário configurar as permissões para os logons necessários. Elas incluem, dentre outras:
A conta de pool de aplicativos da Administração Central deve ser membro das funções de servidor fixas dbcreator e securityadmin.
Todas as contas de pool de aplicativos, além dos serviços de pesquisa e das contas de acesso ao conteúdo padrão, devem ter logons do SQL Server, embora não sejam atribuídas a funções de servidor ou de banco de dados fixas do SQL Server.
Os membros do grupo Administradores de Farm do SharePoint também devem ter logons do SQL Server e ser membros das mesmas funções da conta de pool de aplicativos da Administração Central.
Recomendamos que você transfira os logons e as permissões do servidor principal para o servidor espelhado executando um script. Um exemplo de script está disponível na Base de Dados de Conhecimento, artigo 918992 sobre transferência de logons e senhas entre instâncias do SQL Server 2005 (https://go.microsoft.com/fwlink/?linkid=122053\&clcid=0x416). Para obter informações mais genéricas sobre como transferir metadados do SQL Server entre instâncias, consulte nos Manuais Online do SQL Server o artigo sobre gerenciamento de metadados ao disponibilizar um banco de dados em outra instância de servidor (https://go.microsoft.com/fwlink/?linkid=122055\&clcid=0x416).
Topologias recomendadas
Recomendamos manter um mapeamento comparativo entre os servidores principal e espelhado para garantir a compatibilidade com os Produtos e Tecnologias do SharePoint.
As topologias que têm suporte incluem o espelhamento de todos os bancos de dados de conteúdo, o banco de dados de configuração e o banco de dados de conteúdo da Administração Central. Além disso, para o Office SharePoint Server é possível espelhar o banco de dados de SSP, o banco de dados de pesquisa de SSP e os bancos de dados de conteúdo de SSP.
As ilustrações a seguir demonstram algumas topologias que têm suporte.
Evite topologias que não tenham servidores principal e espelhado correspondentes. Além disso, mantenha o banco de dados de configuração e o banco de dados de conteúdo da administração no mesmo servidor. O diagrama a seguir ilustra uma topologia não tem suporte.
Configurar aliases de conexão do SQL Server
Um alias de conexão do SQL Server é um nome alternativo definido que pode ser usado para se conectar a uma instância do SQL Server. No caso dos Produtos e Tecnologias do SharePoint, é possível criar um alias do SQL Server que é usado por todos os servidores (incluindo os servidores Web front-end) para se conectar à instância do SQL Server. Quando ocorre failover em um servidor de banco de dados espelhado, você ajusta o alias no servidor Web front-end para que aponte para o servidor espelhado, em vez do servidor principal. Recomendamos definir os aliases de conexão do SQL Server antes de implementar o espelhamento.
Dica
Se você estiver configurando aliases para um farm existente, use um alias com o mesmo nome do servidor principal para que nenhuma alteração seja necessária nos servidores Web front-end para começar a usar o alias.
Execute as etapas a seguir em cada servidor Web front-end e em cada servidor que se conecta ao SQL Server.
Inicie o Utilitário de Rede SQL Server Native Client (%SYSTEM%\cliconfg.exe).
Clique na guia Alias e em Adicionar.
Será exibida a caixa de diálogo Adicionar Configuração de Biblioteca de Rede.
Selecione TCP/IP, digite um alias, digite o nome do servidor a ser associado ao alias e clique em OK.
Repita para todos os servidores que se conectam ao SQL Server.
Configurar o espelhamento de banco de dados
Esta seção descreve como usar o Transact-SQL para configurar o espelhamento de banco de dados em modo de alta disponibilidade para um banco de dados do SQL Server.
Para configurar o espelhamento de banco de dados com os Produtos e Tecnologias do SharePoint, é necessário trabalhar individualmente com cada banco de dados que deseja espelhar.
As etapas da seção a seguir pertencem a esta topologia de farm de servidores:
Um ou mais servidores Web front-end
Três servidores que estão executando o SQL Server 2005: principal, espelhado e testemunha
Um banco de dados de configuração
Vários bancos de dados de conteúdo
Um ou mais bancos de dados de SSP
Configurar o espelhamento de banco de dados com certificados e recuperação completa
Cada etapa lista o servidor em que ela deve ser executada. Use Transact-SQL para enviar esses comandos para o SQL Server. As informações de espaço reservado são indicadas por parênteses angulares (<>) e devem ser substituídas por informações específicas à sua implantação.
Configurar o servidor principal para conexões de saída
No servidor principal, crie um certificado e abra uma porta para espelhamento.
--On master database, create the database Master Key, if needed CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<test1234->'; GO -- Make a certificate for this server instance. USE master; CREATE CERTIFICATE <MASTER_HostA_cert> WITH SUBJECT = '<Master_HostA certificate>'; GO --Create mirroring endpoint for server instance using the certificate CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=5024 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE <MASTER_HostA_cert> , ENCRYPTION = REQUIRED ALGORITHM RC4 , ROLE = ALL ); GO
No servidor principal, faça backup do certificado.
--Back up HOST_A certificate. BACKUP CERTIFICATE MASTER_HostA_cert TO FILE = '<c:\MASTER_HostA_cert.cer>'; GO
No servidor principal, faça backup do banco de dados. Esse exemplo usa o banco de dados de configuração. Repita para todos os bancos de dados.
USE master; --Ensure that SharePoint_Config uses the full recovery model. ALTER DATABASE SharePoint_Config SET RECOVERY FULL; GO USE SharePoint_Config BACKUP DATABASE SharePoint_Config TO DISK = '<c:\SharePoint_Config.bak>' WITH FORMAT GO BACKUP Log SharePoint_Config TO DISK = '<c:\SharePoint_Config_log.bak>' WITH FORMAT GO
Copie o arquivo de backup no servidor espelhado. Repita para todos os bancos de dados.
Usando qualquer método de cópia seguro, copie o arquivo de certificado de backup (C:\HOST_HostA_cert.cer, por exemplo) no servidor espelhado.
No servidor principal, crie um logon e usuário para o servidor espelhado, associe o certificado ao usuário e conceda ao logon as permissões de conexão para a parceria.
--Create a login on HOST_A for HOST_B USE master; CREATE LOGIN <HOST_HostB_login> WITH PASSWORD = '<1234-test>'; GO --Create a user for that login. CREATE USER <HOST_HostB_user> FOR LOGIN <HOST_HostB_login>; GO --Associate the certificate with the user CREATE CERTIFICATE <HOST_HostB_cert> AUTHORIZATION <HOST_HostB_user> FROM FILE = '<c:\HOST_HostB_cert.cer>' --do not try to use a network path, SQL Server will give an error about the key not being valid GO --Grant CONNECT permission on the login for the remote mirroring endpoint. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [<HOST_HostB_login>]; GO
Configurar o servidor espelhado para conexões de saída
No servidor espelhado, crie um certificado e abra uma porta para espelhamento.
--On master database, create the database Master Key, if needed. USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1234-test>'; GO -- Make a certificate on the HOST_B server instance. CREATE CERTIFICATE <HOST_HostB> WITH SUBJECT = '<HOST_HostB certificate for database mirroring>'; GO --Create a mirroring endpoint for the server instance on HOST_B. CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=5024 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE <HOST_HostB> , ENCRYPTION = REQUIRED ALGORITHM RC4 , ROLE = ALL ); GO
No servidor espelhado, faça backup do certificado.
--Back up HOST_B certificate. BACKUP CERTIFICATE <HOST_HostB> TO FILE = '<C:\HOST_HostB_cert.cer>'; GO
Usando qualquer método de cópia seguro, copie o arquivo de certificado de backup (C:\HOST_HostB_cert.cer, por exemplo) no servidor principal.
No servidor espelhado, restaure o banco de dados dos arquivos de backup. Esse exemplo usa o banco de dados de configuração. Repita para todos os bancos de dados.
RESTORE DATABASE SharePoint_Config FROM DISK = '<c:\SharePoint_Config.bak>' WITH NORECOVERY GO RESTORE log SharePoint_Config FROM DISK = '<c:\SharePoint_Config_log.bak>' WITH NORECOVERY GO
Configurar o servidor espelhado para conexões de entrada
No servidor espelhado, crie um logon e usuário para o servidor espelhado, associe o certificado ao usuário e conceda ao logon as permissões de conexão para a parceria.
--Create a login on HOST_B for HOST_A USE master; CREATE LOGIN <MASTER_HostA_login> WITH PASSWORD = '<test1234->'; GO --Create a user for that login. CREATE USER <MASTER_HostA_user> FOR LOGIN <MASTER_HostA_login>; GO --Associate the certificate with the user CREATE CERTIFICATE <MASTER_HostA_cert> AUTHORIZATION <MASTER_HostA_user> FROM FILE = '<c:\MASTER_HostA_cert.cer>' --do not try to use a network path, SQL Server will give an error about the key not being valid GO --Grant CONNECT permission on the login for the remote mirroring endpoint. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [<MASTER_HostA_login>]; GO
Configurar o servidor principal para conexões de entrada
No servidor principal, crie um logon e usuário para o servidor espelhado, associe o certificado ao usuário e conceda ao logon as permissões de conexão para a parceria.
--Create a login on HOST_A for HOST_B USE master; CREATE LOGIN <HOST_HostB_login> WITH PASSWORD = '<1234-test>'; GO --Create a user for that login. CREATE USER <HOST_HostB_user> FOR LOGIN <HOST_HostB_login>; GO --Associate the certificate with the user CREATE CERTIFICATE <HOST_HostB_cert> AUTHORIZATION <HOST_HostB_user> FROM FILE = '<c:\HOST_HostB_cert.cer>' --do not try to use a network path, SQL Server will give an error about the key not being valid GO --Grant CONNECT permission on the login for the remote mirroring endpoint. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [<HOST_HostB_login>]; GO
Configurar os parceiros de espelhamento
No servidor principal, configure a parceria de espelhamento. Esse exemplo usa o banco de dados de configuração. Repita para todos os bancos de dados.
--At HOST_A, set server instance on HOST_B as partner (mirror server). ALTER DATABASE SharePoint_Config SET PARTNER = '<TCP://databasemirror.adatum.com:5024>'; GO
No servidor espelhado, configure a parceria de espelhamento. Esse exemplo usa o banco de dados de configuração. Repita para todos os bancos de dados.
--At HOST_B, set server instance on HOST_A as partner (principal server): ALTER DATABASE SharePoint_Config SET PARTNER = '<TCP://databasemaster.adatum.com:5024>'; GO
Configurar um servidor testemunha
Cada etapa lista o servidor em que ela deve ser executada. Use Transact-SQL para enviar esses comandos para o SQL Server. As informações de espaço reservado são indicadas por parênteses angulares (<>) e devem ser substituídas por informações específicas à sua implantação.
No servidor testemunha, configure o certificado e abra a porta.
--On master database, create the database Master Key, if needed CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1234test->'; GO -- Make a certificate for this server instance. USE master; CREATE CERTIFICATE <WITNESS_HostC_cert> WITH SUBJECT = '<Witness_HostC certificate>'; GO --Create mirroring endpoint for server instance using the certificate CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=5024 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE <WITNESS_HostC_cert , ENCRYPTION = REQUIRED ALGORITHM RC4 , ROLE = ALL ); GO
No servidor principal, faça backup do certificado.
--Back up HOST_C certificate BACKUP CERTIFICATE <WITNESS_HostC_cert> TO FILE = '<c:\ WITNESS_HostC_cert.cer>'; GO
Usando qualquer método seguro de cópia, copie o arquivo de certificado de backup (C:\WITNESS_HOSTC_cert.cer, por exemplo) para o servidor principal e para o servidor espelho.
Usando qualquer método seguro de cópia, copie o arquivo de certificado de backup (C:\WITNESS_HOSTC_cert.cer, por exemplo) para o servidor principal e para o servidor espelhado.
--Create a login on Witness HOST_C for Principal HOST_A USE master; CREATE LOGIN <MASTER_HostA_login> WITH PASSWORD = '<test1234->'; GO --Create a user for that login. CREATE USER <MASTER_HostA_user> FOR LOGIN <MASTER_HostA_login>; GO --Associate the certificate with the user CREATE CERTIFICATE <MASTER_HostA_cert> AUTHORIZATION <MASTER_HostA_user> FROM FILE = '<c:\MASTER_HostA_cert.cer>' --do not try to use a network path, SQL Server will give an error about the key not being valid GO --Grant CONNECT permission on the login for the remote mirroring endpoint. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [<MASTER_HostA_login>]; GO --Create Login for Mirror Host B CREATE LOGIN <HOST_HostB_login> WITH PASSWORD = '<1234-test>'; GO --Create a user for that login. CREATE USER <HOST_HostB_user> FOR LOGIN <HOST_HostB_login>; GO --Associate the certificate with the user CREATE CERTIFICATE <HOST_HostB_cert> AUTHORIZATION <HOST_HostB_user> FROM FILE = '<c:\HOST_HostB_cert.cer>' --do not try to use a network path, SQL Server will give an error about the key not being valid GO --Grant CONNECT permission on the login for the remote mirroring endpoint. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [<HOST_HostB_login>]; GO
No servidor principal, crie um logon e usuário para o servidor testemunha, associe o certificado ao usuário e conceda ao logon as permissões de conexão para a parceria. Repita para o servidor espelhado.
--Create a login on Master HostA for Witness HostC USE master; CREATE LOGIN <WITNESS_HostC_login> WITH PASSWORD = '<1234test->'; GO --Create a user for that login. CREATE USER <WITNESS_HostC_user> FOR LOGIN <WITNESS_HostC_login>; GO --Associate the certificate with the user CREATE CERTIFICATE <WITNESS_HostC_cert> AUTHORIZATION <WITNESS_HostC_user> FROM FILE = '<c:\WITNESS_HostC_cert.cer>' --do not try to use a network path, SQL Server will give an error about the key not being valid GO --Grant CONNECT permission on the login for the remote mirroring endpoint. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [<WITNESS_HostC_login>]; GO
No servidor principal, anexe o servidor testemunha. Esse exemplo usa o banco de dados de configuração. Repita para todos os bancos de dados.
--Setup the Witness Server ALTER DATABASE SharePoint_Config SET WITNESS = '<TCP://databasewitness.adatum.com:5024>' GO
Transferir permissões para o servidor espelhado
Quando você configura um banco de dados espelhado, os logons e as permissões do SQL Server referentes ao banco de dados que será usado com um farm do SharePoint não são configurados automaticamente nos bancos de dados mestre e msdb do espelho. Em vez disso, é necessário configurar as permissões para os logons necessários.
Recomendamos que você transfira os logons e as permissões do servidor principal para o servidor espelhado executando um script. O script que recomendamos está disponível na Base de Dados de Conhecimento, artigo 918992 sobre transferência de logons e senhas entre instâncias do SQL Server 2005 (https://go.microsoft.com/fwlink/?linkid=122053\&clcid=0x416).
Monitorar o estado de espelhamento
No servidor testemunha, você pode usar a seguinte instrução de Transact-SQL para monitorar o estado de espelhamento atual.
SELECT mirroring_role FROM sys.database_mirroring WHERE mirroring_role is not null --If returns a 1, principal, if 2: mirror
Talvez você queira criar uma série de trabalhos e alertas do SQL Server para determinar qual é o servidor principal ou criar um serviço do Windows que execute esse comando para determinar qual é o servidor principal.
Próximas etapas
Depois de configurar o espelhamento, você precisa criar os scripts que permitem executar failover nos bancos de dados do farm. Para obter mais informações, consulte Failover e recuperação de bancos de dados espelhados em um único farm.
SELECT mirroring_role FROM sys.database_mirroring WHERE mirroring_role is not null --If returns a 1, principal, if 2: mirror
Talvez você queira criar uma série de trabalhos e alertas do SQL Server para determinar qual é o servidor principal ou criar um serviço do Windows que execute esse comando para determinar qual é o servidor principal.
Consulte também
Outros recursos
Espelhamento de banco de dados no SQL Server 2005 (em inglês)