Professional Documents
Culture Documents
NILTON PINHEIRO
(niltonpinheiro@msn.com)
formado em Anlise de Sistemas
e
ps-graduado
em
Redes
Corporativas. Possui 7 anos de
experincia com SQL Server, dos
quais a 5 trabalha como DBA
em uma conceituada instituio
financeira em So Paulo. Como um Beta Tester
Microsoft, participou ativamente da fase Beta do SQL
Server 2005 e trabalha com o SQL Server 2005 desde
seu Beta1. Possui as certificaes MCDBA e MCSE,
MVP (Microsoft Most Valuable Professionals) em SQL
Server e fundador do site www.mcdbabrasil.com.br.
11.12.06 14:12:33
S QL S ERV ER 2005
A diferena mais importante entre database mirroring e failover clustering est no nvel de proteo oferecido pelas duas
tecnologias. Enquanto o database mirroring oferece proteo
no nvel de banco de dados, o failover clustering oferece proteo no nvel de servidor. Por outro lado, no database mirroring, o servidor principal e o servidor espelho (servidor que
mantm uma cpia do banco de dados configurado para o
mirroring) so servidores ou instncias SQL Server separadas
e com nomes distintos, enquanto que no failover clustering a
instncia do SQL Server recebe um nome e endereo IP virtual
que se mantm o mesmo, independente do servidor ou n que
hospeda a instncia.
Dada essa distino, se o objetivo manter a disponibilidade
banco a banco, o database mirroring a escolha mais adequada. Por outro lado, se o objetivo manter a disponibilidade
de todo o servidor, o failover clustering a opo ideal. Uma
comparao entre as principais features do failover clustering e
database mirroring pode ser vista na Tabela 1.
sejam aplicadas no banco de dados de um outro servidor. Embora o processo possa parecer semelhante, a grande diferena
que enquanto o log shipping realiza as atualizaes em bloco
de transaes, atravs de um backup/restore do log de transao do banco de dados, no database mirroring as transaes
so atualizadas de modo instantneo, sem necessitar de um backup/restore do log de transao do banco de dados.
Utilizado por muitas empresas como uma soluo de alta
disponibilidade, no log shipping, se o servidor principal falhar,
um backup de log do banco de dados dever ser executado e
recuperado no banco de dados do outro servidor, conhecido
como standby server. Este processo manual, o que pode gerar uma indisponibilidade de vrios minutos. Com o database
mirroring, uma vez que as transaes so aplicadas no outro
servidor de forma instantnea, se o servidor principal falhar,
nenhum backup de log precisar ser executado, garantindo
uma disponibilidade quase que imediata.
Uma comparao entre as principais features do log shipping
e database mirroring pode ser vista na Tabela 2.
O database mirroring tambm est bem prximo do log shipping (ver Nota 2), uma vez que ambos utilizam um processo
de transferncia de log de transao para garantir que as transaes efetuadas no banco de dados de um servidor principal
Feature disponvel
O database mirroring envolve duas cpias de um mesmo banco de dados que reside em diferentes servidores ou instncias do
SQL Server 2005. Um ponto importante a ser observado que
Database Mirroring
Failover Clustering
Deteco de falha
Sim
Sim
Failover automtico
Sim
Sim
Sim, automtico
Sim
Sim
Percepo do downtime
No
Ilimitado
160 quilmetros
Complexidade de configurao
Baixa
Alta
Nvel de proteo
Banco de dados
Servidor
Database Mirroring
Log Shipping
Deteco de falha
Sim
Sim
Failover automtico
Sim
No
Sim, automtico
No
Sim
No
Percepo do downtime
Minutos
No
No
Ilimitado
Ilimitado
Complexidade de configurao
Baixa
Baixa
No possvel
Nvel de proteo
Banco de dados
Banco de dados
11.12.06 14:12:34
O principal e o mirror database devem residir em diferentes servidores ou instncias, e trabalham como parceiros em uma sesso conhecida como database mirroring
session. O parceiro que armazena o principal database
conhecido como principal server, e o parceiro que armazenada o mirror database conhecido como mirror server.
A configurao mais simples de database mirroring envolve apenas duas instncias do SQL Server o principal
e o mirror server. No entanto, caso voc deseje configurar
o database mirroring para suportar failover automtico,
ento uma terceira instncia ser necessria. Essa instncia conhecida como witness server. O witness server
responsvel por monitorar o principal server e o mirror
server, e fornecer o failover automtico nos casos de problemas com principal database.
A Figura 1 apresenta como ficaria uma sesso de database mirroring com dois servidores e um witness server.
Na Figura 1 podemos destacar:
Principal Database: como o prprio nome diz, este o
banco de dados principal. O banco de dados que est configurado para database mirroring.
Mirror Database: este banco de dados a cpia do principal database. O banco de dados espelho.
Principal Server: o principal server o servidor que armazena o principal database. ele quem aceita as conexes dos
clientes e permite atualizaes para o principal database.
Mirror Server: o mirror server o servidor standby ou servidor espelho. ele quem armazena a cpia do principal database. Os clientes no podem acess-lo diretamente.
Witness Server: o propsito do witness server monitorar
o principal e o mirror server para garantir que em um dado
momento apenas um dos servidores seja o principal server, e
fornecer o suporte ao failover automtico nos casos de problemas com o principal server ou principal database. O failover
automtico o recurso que permitir que se o principal server
cair por qualquer motivo, o mirror server assumir o trabalho
executado pelo principal server, deixando de ser o mirror server e assumindo o novo papel de principal server. Se voc no
pretender utilizar o recurso de failover automtico, o witness
server no necessrio.
Apesar das documentaes relacionadas ao database mirroring utilizarem a nomenclatura acima, para facilitar o entendimento pelo leitor, a partir deste ponto estarei me referindo
ao principal server com servidor principal e ao mirror server
como servidor espelho. Da mesma forma, estarei me referindo
ao principal database como DB principal e ao mirror database
como DB espelho.
Modos de operao
Uma sesso de database mirroring pode ser configurada para
operar em trs diferentes modos de operao: High Availability, High Protection ou High Performance. Ao longo desta seo
iremos conhecer um pouco sobre cada modo de operao.
O modo de operao deve ser selecionado de acordo com o nvel de segurana desejado para as transaes (transaction safety) e
pode trabalhar em modo de transferncia sncrono ou assncrono.
O modo exato depender da configurao do transaction safety e
se a sesso possuir ou no um witness server. A Tabela 3 resume
as possveis configuraes para o modo de operao.
Modo operao
Transaction Safety
Modo Transferncia
Requer Witness
Failover
High Availability
Full
Sncrono
Sim
Automtico ou Manual
High Protection
Full
Sncrono
No
Manual
High Performance
Off
Assncrono
No
Forado
11.12.06 14:12:35
S QL S ERV ER 2005
High Availability
Como podemos observar na Tabela 3, o modo de operao
high availability (alta disponibilidade) requer que o transaction
safety seja definido como FULL. Este tambm o nico modo
que oferece failover automtico e conseqentemente requer a
presena de um witness server.
High Protection
O modo de operao high protection tambm requer que o
transaction safety seja definido como FULL. Ele garante que
no haver perda de dados, mas como no exige a presena de
11
11.12.06 14:12:36
High Performance
Este o mais rpido dos modos de operao, pois trabalha
em modo assncrono. Ou seja, a transao efetivada no servidor principal e um retorno dado ao cliente mesmo sem esperar por uma resposta do servidor espelho informando se a
transao foi efetivada com sucesso no DB espelho ou no. Ele
no requer a presena de um witness server e o nico tipo de
failover permitido o forado. O failover forado requer a
execuo manual do comando:
ALTER DATABASE <banco> SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS
Requisitos necessrios
Antes de iniciar a configurao do database mirroring, alguns pontos importantes devem ser observados:
1. Certifique-se que o servidor principal e o servidor espelho estejam com
a mesma edio do SQL Server
2005. As edies suportadas para
database mirroring so as edies
Standard ou Enterprise Edition;
2. As instncias do SQL Server 2005 devem estar com
o Service Pack 1 (SP1) ou
superior;
3. Se o failover automtico um requisito necessrio para sua soluo de
mirroring, voc dever
configurar uma terceira mquina ou instncia do SQL Server 2005
SP1 como um witness
server. O witness pode
ser configurado em
qualquer estao de trabalho com Windows XP
11.12.06 14:12:37
S QL S ERV ER 2005
Passo 1
13
11.12.06 14:12:38
Passo 6
Na janela Configure Database Mirroring Security Wizard, clique em Next, informe se voc quer configurar a
segurana de forma a incluir um witness server e clique
em Next. Lembre-se que para utilizar o failover automtico, a configurao de um witness server obrigatria.
Para nosso exemplo selecione Yes.
Passo 7
Na janela Principal Server Instance, especifique as informaes para o endpoint do servidor principal, como o exemplo
apresentado na Figura 9 e clique em Next.
Um endpoint um objeto SQL Server que permite ao SQL
Server se comunicar atravs da rede. Quando configurando o
database mirroring, uma instncia requer seu prprio e dedicado
database mirroring endpoint. Ele usado exclusivamente para receber comunicao de database mirroring dos demais parceiros
11.12.06 14:12:39
S QL S ERV ER 2005
Se o servidor principal, o espelho e o witness so instncias SQL Server em um mesmo servidor fsico, os endpoints para cada uma das instncias devem utilizar nmero de portas diferentes (exemplo 5022, 5023 e 5024). Se
estiver utilizando diferentes servidores para cada uma das
instncias, a recomendao utilizar a porta default 5022.
Especifique tambm se os dados enviados atravs do endpoint devero ou no ser criptografados (ver Figura 9).
Passo 9
Passo 11
Na janela Service Accounts, informe as contas de usurios que iniciam o servio do SQL Server nas respectivas
instncias. Caso voc utilize a mesma conta de usurio de
domnio para iniciar o servio em ambas as mquinas,
simplesmente clique em Next para prosseguir.
Passo 12
Na janela Mirror Server Instance, selecione o servidor que ser o servidor espelho clicando sobre o boto
Connect. Ao selecionar o servidor, ser apresentada a janela Connect to Server, a qual permite configurar uma
conexo com o servidor. Se o servidor espelho e o servidor
principal estiverem no mesmo domnio do Windows, a
recomendao que se utilize a opo Windows Authentication. Se estiverem em domnios diferentes, utilize
SQL Authentication e entre com o login e senha de um
usurio que seja administrador do SQL Server. A Figura
10 apresenta a janela de configurao do endpoint para o
servidor espelho.
Passo 10
Na janela Witness Server Instance, selecione o servidor que ser o witness server clicando sobre o boto
Connect. Esta configurao somente ser necessria se
optarmos por configurar o failover automtico. A Figura
11 apresenta a janela de configurao do endpoint para
o witness server.
15
11.12.06 14:12:40
Passo 13
Da volta janela principal, temos uma tela semelhante Figura 12. Clique em Start Mirroring para iniciar a sesso de
database mirroring (ler Nota 1).
11.12.06 14:12:40
S QL S ERV ER 2005
espelho. No entanto, lembre-se que o DB espelho no fica disponvel para leitura. Para utilizar o DB espelho preciso quebrar a
sesso de mirroring ou ativar o failover manualmente.
Quebrar o mirroring
Para quebrar o mirroring, podemos utilizar a janela de propriedades do DB principal e na pgina Mirroring clicar sobre o
boto Stop Mirroring ou ainda executar o script da Listagem
1 no query editor de um dos parceiros da sesso. A Figura 14
apresenta a janela principal do database mirroring com o boto
que permite parar a sesso de mirroring (Stop Mirroing).
Listagem 1. Script Transact-SQL para quebrar uma sesso de mirroring.
--Executar no servidor principal ou servidor espelho
--Para desfazer o Mirror
ALTER DATABASE AdventureWorks SET PARTNER OFF
Aps quebrar o mirroring, o DB espelho se manter no status de Restoring. Para utiliz-lo, preciso antes deix-lo em seu
status normal de utilizao, realizando o recovering do banco
de dados. Para fazer o recovering do DB espelho, execute o
script da Listagem 2 no query editor do servidor espelho.
Listagem 2. Script Transact-SQL para executar o recover do DB espelho.
-- Rodar no Servidor espelho
RESTORE DATABASE AdventureWorks WITH RECOVERY
Ativar o Failover
O processo de failover o processo que far com que os servidores troquem de papis, ou seja, o servidor principal passe a
ser o servidor espelho e o servidor espelho passe a ser o novo servidor principal. Quando estamos utilizando um witness server
e ocorre algum problema no servidor principal, este processo
de troca de papis realizado de forma automtica e tudo
controlado pelo witness server. No entanto, tambm possvel
executar o failover de forma manual. Isso muito til quando
precisamos, por exemplo, realizar alguma manuteno no servidor que detm o papel de servidor principal.
Para forar o failover manual, no servidor principal, clique
com o boto direito do mouse sobre o DB principal, selecione
Tasks > Mirror... e clique sobre o boto Failover (ver boto
Failover na Figura 14).
Ao clicar sobre o boto Failover, ser apresentada a mensagem da Figura 15 informando da troca de papis entre os
servidores. Clique em Yes para confirmar a troca de papis dos
servidores.
Pronto! Com a troca de papis o servidor principal original
passa a ser o servidor espelho, bem como o DB espelho original
passa a ser o novo DB principal. Com isso, podemos consultar
o novo DB principal para verificar se as operaes realizadas no
antigo DB principal foram espelhadas com sucesso para o novo
DB principal (antigo DB espelho).
17
11.12.06 14:12:42
Concluses
Como vimos, o database mirroring na verdade bastante
simples de ser configurado, alm de ser uma excelente opo
para quem precisa manter a alta disponibilidade de um banco
de dados e no possui recursos financeiros para a implantao
de um ambiente mais robusto, como o Cluster Server.
Vale lembrar que por padro, uma sesso de database mirroring executada em modo sncrono, com a opo transaction
safety definida como FULL. Isso garante o funcionamento do
failover automtico. Para configurar uma sesso para executar
em modo assncrono (Modo de Operao High Performance
[Alta Performance]), defina o transaction safety como OFF.
Para mais informaes, consulte os tpicos Database Mirroring Sessions e How to: Change Transaction Safety in a Database Mirroring Session (Transact-SQL) no Books Online do
SQL Server 2005.
Figura 16. Substituindo o nome dos servidores por seus respectivos
endereos IP.
11.12.06 14:12:46
Uma das
es
maiores pont
a por
t
i
e
F
.
o
d
n
u
m
do
.
s
o
r
i
e
l
i
s
a
Br
encerrar
blicao decidimos
pu
de
os
an
s
tr
azine no Brasil.
Aps
marca MSDN Mag
da
o
us
o
35
o
i
Magazine,
na ed
ora se chama .NET
ag
ne
ira!
i
az
ag
M
N
D
A MS
ser 100% brasile
de
o
lh
gu
or
o
m
te
e
uma publicao qu
qualidade,
sta ganhou mais
vi
re
a
a
n
da
u
m
Com a
e.
ais nacionalidad
mais contedo, m
.NET Magazine
senvolvedor
A revista do de
iro.
o de ser brasile
que tem orgulh
19
J nas bancas!
11.12.06 14:13:01