O servidor de failover possui status (Espelho, Desconectado, Em recuperação) e o servidor principal possui status (Principal, Desconectado).
Qual é o processo para reconectar esses servidores?
O servidor de failover possui status (Espelho, Desconectado, Em recuperação) e o servidor principal possui status (Principal, Desconectado).
Qual é o processo para reconectar esses servidores?
Respostas:
Às vezes, reiniciar o terminal de espelhamento no servidor principal resolverá isso.
Para fazer isso, use o seguinte T-SQL.
ALTER ENDPOINT Endpoint_Name STATE = STOPPED
ALTER ENDPOINT Endpoint_Name STATE = STARTED
Para obter o nome do terminal.
SELECT * FROM sys.endpoints
WHERE type = 4
Consulte o KB 2490051 para obter mais detalhes.
Primeiro, tente fazer com que eles se reconectem com este comando T-SQL no principal:
ALTER DATABASE AdventureWorks2012 SET PARTNER RESUME;
Se isso falhar, você terá um problema de comunicação entre o diretor e o espelho, e é aí que a diversão começa. Pode ser qualquer coisa, desde conectividade IP até segurança nos pontos finais de espelhamento e diferentes métodos de criptografia. Eu recomendaria o livro Pro SQL Server 2008 Mirroring de Robert Davis, se você precisar entrar em uma profunda solução de problemas.
No nosso caso, estamos usando autenticação de certificado para conectar pontos de extremidade de espelhamento, e o problema ocorreu porque um dos certificados que os pontos de extremidade de espelhamento estavam usando havia expirado.
Você pode verificar a data de validade do certificado envolvido na autenticação do terminal, executando
SELECT * FROM sys.certificates
Se for esse o caso, você precisará criar novos certificados para o ALTER ENDPOINT
que tiver expirado e depois fazer a importação.
Corrigi esse problema nas próximas etapas, reiniciar o endpoint apenas no PRIMARY não ajudou
Em PRIMÁRIO:
SELECT * FROM sys.endpoints WHERE type = 4
ALTER ENDPOINT Mirroring STATE = STOPPED
ALTER ENDPOINT Mirroring STATE = STARTED
No MIRROR:
SELECT * FROM sys.endpoints WHERE type = 4
ALTER ENDPOINT Mirroring STATE = STOPPED
ALTER ENDPOINT Mirroring STATE = STARTED
De volta ao PRIMARY:
ALTER DATABASE PACXDSite SET PARTNER RESUME;
Caso:
Quando você executa o comando abaixo no servidor Principal:
alter database 'Database_Name' set partner off
Após executar o comando acima, seu banco de dados entra em [mirror, disconnected]
estado no servidor espelho.
Resolução:
Etapa 1: execute a consulta abaixo no espelho
exec sp_resetstatus 'Database_Name'
Etapa 2: Após executar o comando abaixo, seu banco de dados estará disponível.
restore database 'Database_Name' with recovery
Nota: A etapa 2 levará algum tempo para se recuperar.
Se "RESUME PARTNER" não funcionar
ALTER DATABASE AdventureWorks2016 SET PARTNER RESUME;
Eu quebraria o espelho para esse banco de dados e o reconfiguraria.
- PASSO 1 EM PRINCIPAL, quebre o espelho para um banco de dados
ALTER DATABASE AdventureWorks2016 SET PARTNER OFF;
- PASSO 2 NO ESPELHO, quebre o espelho para um banco de dados
ALTER DATABASE AdventureWorks2016 SET PARTNER OFF;
- PASSO 3 NO ESPELHO
RESTORE LAST FULL BACKUP DATABASE WITH NO RECOVERY
RESTORE TRAN BACKUP DATABASE WITH NO RECOVERY
- PASSO 4 NO ESPELHO
ALTER DATABASE AdventureWorks2016 SET PARTNER = 'TCP://PRINCIPAL.MyDomain.COM:5022';
- PASSO 5 EM PRINCIPAL
ALTER DATABASE AdventureWorks2016 SET PARTNER = 'TCP://MIRROR.MyDomain.COM:5022';
- PASSO 6 EM PRINCIPAL, se uma TESTEMUNHA já estiver configurada
ALTER DATABASE AdventureWorks2016 SET WITNESS = 'TCP://WITNESS.MyDomain.COM:5022';
Vale ressaltar que tudo isso pode ser feito durante o horário de trabalho, pois o banco de dados principal estará sempre online e disponível.