O DAC mode introduz um
protocolo chamado DACP (Database Activation Coordination Protocol), que
basicamente e um bit ( 0 e 1 sao os valores possiveis) em memoria do
Active Manager , cada vez que um servidor e iniciado o DACP e setado
para 0 o que significa que ele nao pode subir as databases
automaticamente, no entanto ele vai tentar se comunicar com todos os
outros membros do DAG, se os outros membros atravesdo Active Manager
enviarem o 1 (o que significa sim, ou seja, pode montar as bases que
estao marcadas para este novo servidor) entao as bases serao montadas.
Agora que ja sabemos o que
acontece por baixo dos panos, vamos usar um cenario simples: digamos que
a nossa empresa tem a matriz em Porto Alegre (sigla do site e POA) e uma
filial em Buenos Aires (BsAs), em Porto Alegre temos 4 servidores (2
HUB/CAS e 2 Mailbox Servers) e em Buenos Aires temos apenas 2 servidores
(1 HUB/CAS e 1 Mailbox Server), e Buenos Aires e o Disaster Recovery
site de Porto Alegre, a figura abaixo mostra o cenario.

Agora vamos imaginar
que o site de Porto Alegre caiu por algum motivo qualquer e o processo
de Disaster Recovery foi ativado em Buenos Aires e todos os usuarios
estao em Buenos Aires e durante este Disaster Recovery o link entre
Porto Alegre e Buenos Aires tambem caiu.

Agora vem a parte
interessante, digamos que o site de Porto Alegre esta voltando ao ar,
mas sem o link com Buenos Aires, sem o DAC habilitado os servidores de
Porto Alegre teriam 2 nos mais o quorum e subiriam as databases, mesmo
com Buenos Aires tendo as databases tambem no ar o que causaria o
split-brain, onde no final do dia teriamos databases inicialmente iguais
mas com conteudo totalmente diferente no final do dia. Ja com o DAC
habiitado Porto Alegre com todos os servidores reiniciados teriam DACP
com o valor 0, ou seja, nao tentariam montar as databases. A figura
abaixo mostra como ficaria a situação sem DAC habilitado.

Gerenciando o DAC mode…
O DAC mode nada mais e
que uma propriedade do DAG, e para habilitar o DAC mode dois pontos
devem ser vistos antes da parte tecnica:
-
DAC mode e desabilitado por padrao
-
Todos os DAG que usam continuous replication devem
habilitar tal opcao. Continuous Replication e todo o DAG que usa a
replicacao do Exchange, se a sua empresa comprou algum software para
otimizar a replicacao entao voce deve validar com o fabricante se e
suportado o DAC mode.
Para verificarmos se o
DAG não está usando replicação de terceiros podemos executar o seguinte
cmdlet:

Para habilitarmos o DAC
mode devemos rodar o seguinte cmdlet:
Set-DatabaseAvailabilityGroup
–Identity <DAG-Nome> -DatacenterActivationMode DagOnly

DAG para dois nos…
Tudo que vimos ate
agora e para 3 ou mais servidores em um DAG, no entanto o DAC para DAG
com apenas 2 membros tem que ter um cuidado especial para evitar o
split-brain sindrome.
Basicamente devido ao
numero de membros, a hora de inicio do servidor que possui o
compartilhamento do DAG (DAG witness server/share) e comparado com o
valor 1 do DACP foi configurado.
E baseado nisso, as
duas possiveis acoes podem ocorrer:
-
Se o tempo que DACP com valor 1 aconteceu antes do
restart do witness server, o algoritmo vai saber que ambos foram
reiniciados ao mesmo tempo e com isto as databases nao serao
montadas
-
Se o tempo que o DACP com valor 1 aconteceu for
mais recente que o reinicio do witness server, entao o membro tera
condicoes de subir as databases.
Baseado no algoritmo
acima, nao devemos reiniciar o witness server e o membro do DAG juntos
do contrario vamos ter mais trabalho para subir as databases.