Loading…

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

Deixe uma resposta