Database Mirroring – Operation Mode High Safety with Automatic Failover
Fala Pessoal,
A ideia desse teste é verificar o tempo que o Database Mirroring leva para fazer um failover automático 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 with Automatic Failover conforme pode ser visto abaixo:
Foram executadas cinco queries com loops infinitos de Inserts.
Em seguida foi parado o serviço do SQL Server do servidor A simulando um possível problema.
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.
Dessa forma, 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 assim podemos 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 automático foi de 6.4 segundos.
Tentando fazer esse tempo aumentar, foram executados 10 loops com inserts infinitos ao invés de 5.
Segue o resultado encontrado:
Comparando as duas colunas do tipo datetime, temos que o tempo do failover automático foi de 2.9 segundos.
Conclusão: Acredito que a primeira execução demorou mais, pois meu notebook devia estar mais sobrecarregado com outros processos. Com isso, não consegui aumentar o tempo de failover aumentando a carga nesse servidor.
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
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