Database Mirroring – Tempo Failover – HS Without Automatic Failover
Olá Pessoal,
A ideia desse teste é verificar o tempo que o Database Mirroring leva para fazer um failover manual de um servidor para o outro utilizando esse Operation mode.
Instâncias participantes dos testes:
1 – Instancia5 – Servidor Principal, referenciado no texto por Servidor A
2 – Instancia5\INST1 – Servidor Mirror, referenciado no texto por Servidor B
Nome da database espelhada: Mirror1
Script de criação da tabela Teste:
CREATE TABLE [dbo].[Teste](
[Cod] [int] IDENTITY(1,1) NOT NULL,
[Data] [datetime] NULL,
[Texto] [varchar](4000) NULL)
Loop de insert do teste:
while 1=1
begin
if exists (select null
from sys.databases
where name = ‘MIRROR1’ and state_desc = ‘ONLINE’)
insert into mirror1..Teste(texto)
select @@servername
end
Com um database mirroring configurado com o modo High Safety without Automatic Failover conforme pode ser visto abaixo:
Foram executadas cinco queries com loops infinitos de Inserts.
Em seguida foi feito o failover manual do servidor A para o Servidor B com o comando abaixo:
ALTER DATABASE mirror1 set partner failover
Como a query do loop possui uma verificação que só realiza o insert quando a database está ONLINE, esse loop também ficou sendo executado no servidor B para que assim que a database ficasse online, um insert fosse feito nessa tabela.
Assim, como a coluna Texto possui o nome do servidor onde o insert foi executado, é possível medir o tempo de failover entre as duas instancias. Para isso, foi verificado quando a coluna Texto troca o nome do servidor e com isso é possível saber a última inserção em um ambiente e a primeira inserção em outro ambiente.
Segue o resultado encontrado:
Comparando as duas colunas do tipo datetime, temos que o tempo do failover manual foi de 4.1 segundos.
Conclusão: Essa opção de realizar um FAILOVER MANUAL é bem interessante para a instalação de Hotfix e Services Packs nos servidores, pois pode diminuir o tempo de indisponibilidade dos sistemas enquanto um Service Pack está sendo instalado.
Ex.: Da ultima vez que fui instalar o SP3 do SQL Server 2005 em um servidor de produção eu demorei 30 minutos incluindo o boot.
Até o próximo Post.
Artigos relacionados:
Série de Posts sobre Database Mirroring
Database Mirroring – Como alterar o Operation Mode
Database Mirroring – Operation Mode High Performance – Parte 1
Database Mirroring – Operation Mode High Performance – Parte 2
Database Mirroring – Operation Mode High Performance – Parte 3
Database Mirroring – Operation Mode High Safety Without Failover – Parte 1
Database Mirroring – Operation Mode High Safety Without Failover – Parte 2
Database Mirroring – Operation Mode High Safety with Automatic Failover
Gostou desse Post?
Cadastre seu e-mail para receber novos Posts e curta minha Página no Facebook para receber Dicas de Leituras e Eventos sobre SQL Server.
Abraços,
Fabrício Lima
MCITP – Database Administrator
Consultor e Instrutor SQL Server
Trabalha com SQL Server desde 2006
Grande Fabrício, excelente post. Mas me diga, quando você trabalha em um ambiente onde o app é desktop, ou seja, tem sempre um arquivo de configuração que aponta qual o instância/banco que deve se conectar pra o sistema ficar operacional. Tenho um ambiente onde são 120 hots e em cada host tem um arquivo que é configurado a instância de conexão do aplicativo mais o banco de dados que deve ser usado. Tenho um Mirror nesse ambiente, porém sempre configuro ele manual, pois em caso de falha tenho que rodar um script .bat pra alterar o caminho do novo servidor principal. Como faz em seu ambiente???
Abraços!
Boa Tarde Jeferson,
Obrigado.
No meu caso a estratégia é alterar no DNS para o servidor secundário receber as conexões que iriam para o servidor primário em caso de desastre.
No ALWAYSON do SQL 2012 isso é resolvido com o Listener que é um nome virtual que faz essa virada transparente para a aplicação.
Abraços.
Show meu caro. Uma ótima e perfeita solução. Irei adotar como estratégia, pois rodo um .bat que por muitas vezes não altera o caminho em todos os hots.
Obrigado.
Sucesso!
Show Jeferson.
Obrigado.