• Nenhum resultado encontrado

Precisamos então realizar um backup full do banco no servidor principal e fazer a recuperação do backup no servidor espelho para então dar inicio ao

N/A
N/A
Protected

Academic year: 2021

Share "Precisamos então realizar um backup full do banco no servidor principal e fazer a recuperação do backup no servidor espelho para então dar inicio ao"

Copied!
22
0
0

Texto

(1)

MIRROR SQL 2005

O SQL Server 2005 trouxe um novo recurso para garantir a alta disponibilidade das bases de dados, o recurso de espelhamento de bases de dados.

O espelhamento de uma base de dados se assemelha a uma evolução dos recursos de log shipping. Através do espelhamento das bases de dados é feita a transferência e restauração de logs automaticamente entre dois servidores.

A mirror de bases, porém, é mais versátil que o log shipping, permitindo inclusive o desvio automático dos acessos para o servidor espelho no caso da queda do servidor principal.

Então vamos fazer, passo a passo, a implementação do database mirroring. Faremos esta implementação utilizando o banco Northwind. O banco Northwind não é instalado por default no SQL Server 2005, você precisa baixar os bancos de exemplo em ... e fazer a instalação.

Para fazer o exemplo de mirroring precisaremos de 3 servidores. Não necessariamente 3 servidores em máquinas diferentes, neste exemplo instalarei 3 instâncias diferentes do SQL Server 2005 na mesma máquina e farei o mirror entre estas 3 instâncias.

Primeiramente, precisamos que o banco de dados do servidor principal, que será espelhado, esteja configurado com Recovery Model Full. O Recovery Model Full garante que o log de transações será mantido para, desta forma, permitir o espelhamento.

(2)

Precisamos então realizar um backup full do banco no servidor principal e fazer a recuperação do backup no servidor espelho para então dar inicio ao processo de mirror.

(3)

No processo de recuperação de um backup temos as opções Recovery e No Recovery que devemos escolher para completar o processo. Trata-se da forma como o log de transações será tratado. Na opção Recovery o servidor faz um processo (checkpoint) no log de forma a manter o log integro e deixar o banco de dados no ar. Porém ao fazer isso impede-se que novos backups sejam recuperados. Já com a opção NoRecovery, isso não é realizado e consequentemente novos backups podem ser recuperados.

(4)

Como no nosso caso estamos fazendo o restore em uma mesma máquina, devemos ter o cuidado de direcionar a restauração do banco para um local diferente de onde estão os arquivos do Principal. O processo de mirroring é de fato uma transferência do log de transações e restore do log. Portanto precisamos fazer o restore do banco Northwind selecionando a opção NoRecovery, para que possamos estabelecer o mirroring.

Você deve ter observado que desde o inicio citei que usaremos 3 instâncias para fazer o mirror. Mas por que 3 ?

Além do servidor principal e do espelho, o processo de mirroring utiliza um 3o servidor chamado e Witness. O servidor Witness tem a tarefa de garantir a alta disponibilidade do mirror. O Witness vai observar falhas no servidor principal ou espelho e inverter o papel de principal e espelho entre os dois.

O uso de um servidor witness é opcional, pode ser feito ou não. Mas apenas com o uso do servidor witness a troca do servidor principal em caso de falha é feita automaticamente.

(5)

Por fim, vamos dar inicio ao procedimento de espelhamento. Primeiramente é necessário estabelecermos canais de comunicação entre os servidores.

(6)

Os canais de comunicação são estabelecidos através de um novo recurso do SQL Server 2005 chamado HTTP Endpoint. Http EndPoints são pontos de comunicação HTTP que o servidor pode criar para realizar a troca de dados.

Um HTTP EndPoint é estabelecido através da especificação de uma porta e um protocolo de comunicação - que é estabelecido na forma da especificação do tipo de mensagens que serão trocadas.

No caso da execução de mirroring, existem 3 opções de mensagens a serem trocadas pelos servidores, as mensagens são definidas de acordo com a atuação do servidor no processo de mirror : Partner, Witness ou ALL. Porém ao fazermos a configuração pela interface visual isso será definido para nós.

Como estaremos trabalhando com uma única máquina, estaremos utilizando diferentes portas de comunicação para cada http Endpoint, 5022, 5023 e 5024.

(7)
(8)
(9)
(10)
(11)

Cada servidor com uma porta diferente por serem instâncias em uma mesma máquina

(12)

Cada servidor precisa de acesso aos demais. Então se os servidores estiverem utilizando contas de serviço diferentes, é preciso especifica-las para que ganhem acesso aos servidores. Caso os servidores estejam utilizando as mesmas contas, basta deixar em branco e clicar next.

(13)

Ao fazer a configuração do mirror, temos mais uma escolha a fazer : Fazer o espelhamento sincrono ou assincrono.

Espelhamento Sincrono : No espelhamento sincrono a gravação no servidor de espelho é feita transacionalmente junto com a gravação no servidor principal. Esta opção é utilizada em caso de alta disponibilidade da comunicação entre os servidores. Apenaso espelhamento sincrono permite a recuperação automatica em caso de falhas, desde que esteja presente um servidor atuando como witness Espelhamento Assincrono : No espelhamento assincrono as transações são realizadas no servidor principal e posteriormente espelhadas para o partner. Isso permite o funcionamento do espelhamento em ambientes com instabilidade na comunicação entre os servidores. Esta opção não permite a recuperação automatica com um servidor witness

(14)

Vamos então criar uma aplicação windows para demonstrar a forma como a aplicação será desviada de um servidor para outro automaticamente.

1) Crie um novo projeto windows

2) Na janela DataSources, crie uma nova origem de dados apontando para o banco Northwind, tabela Products, pegue os campos ProductID, ProductName, UnitPrice, UnitsInStock

(15)

3) Na janela datasources, selecione o formato details para a tabela products

4) Arraste a tabela products para o formulário

5) Insira um botão cmdRefresh com o texto Refresh 6) Insira um label no formulário

(16)

7) Altere o código do load, separe o código em uma sub chamanda "conectando"

8) Chame a sub "conectando" do Load e do botão cmdRefresh Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

conectando() End Sub

Private Sub cmdRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRefresh.Click

conectando() End Sub

(17)

9) Na sub conectando, implemente o código da seguinte forma : Sub conectando() Try Me.ProductsTableAdapter.Connection.Open() Me.ProductsTableAdapter.Fill(Me.DsProdutos.Products) Label1.Text = Me.ProductsTableAdapter.Connection.DataSource Me.ProductsTableAdapter.Connection.Close() tentou = 0 Catch If tentou = 0 Then tentou = 1 Me.ProductsTableAdapter.Connection.Close() conectando() Else

MsgBox("Deu tudo errado") End If

End Try End Sub

Fazemos o preenchimento do label com o nome do datasource, que é obtido pelo objeto de conexão. A conexão ligada ao tableAdapter, então a linha de código :

Label1.Text =

Me.ProductsTableAdapter.Connection.DataSource

Separamos a abertura e fechamento da conexão. Isso não é obrigatório para que o desvio da conexão aconteça. Se não fizermos essa separação, o método Fill abrirá e fechará a conexão automaticamente e o desvio de um servidor para outro acontecerá normalmente. Mas apenas separando a conexão podemos identificar o servidor no qual estamos conectando e fazer o preenchimento do label. O preenchimento do label não funciona se a conexão já estiver fechada (não apontará para o servidor certo).

Quanto ao tratamento de erro, quando um desvio de servidor vai acontecer, é devolvido um erro para o client. Então tratamos o erro, fechamos a conexão e repetimos o processo. É feita então a conexão ao servidor espelho e não ao principal, que encontra-se off-line.

Como funciona ?

No ADO.NET 2.0, utilizando o data provider do SQL Server, no momento em que a conexão é feita o servidor principal avisa ao client a existência de um mirror e o client faz o cache do nome do mirror. Desta forma quando a conexão ao principal falha, o desvio para o mirror acontece automaticamente.

Para o caso da primeira conexão falhar, podemos especificar o servidor de mirror diretamente na string de conexão. Porém a

(18)

especificação na string de conexão é utilizada apenas no caso da falha na primeira conexão. Após a primeira conexão o client recebe o nome do servidor de mirror do principal e guarda o nome em cache, passando a ignorar o nome na string de conexão.

Veja como adicionar o mirror na connectionString : ";Failover Partner=PartnerServerName"

Teste a aplicação 1) Rode a aplicação

2) Altere um registro e grave

(19)

4) Clique no botão refresh

Você observará que o nome do servidor no label irá mudar, agora você está conectado no mirror. Mas a atualização da informações continua consistente.

(20)

5) Reinicie novamente o serviço do servidor Principal

Faça refresh na pasta databases se necessário, você observará que agora o Principal retorna como mirror e o mirror se mantem como principal

6) Clique no botão refresh

A conexão continua sendo feita ao antigo mirror, que agora atua como principal

7) No mirror, que agora é principal, clique com o botão direito no banco Northwind, Tasks->Mirror e clique no botão FailOver.

(21)

8) Clique no botão refresh da aplicação. Novamente a aplicação volta ao Principal

TITLE: Database Properties ---

An error occurred while starting mirroring.

---

ADDITIONAL INFORMATION:

(22)

For help, click:

http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.4035.00&E vtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionT ext&EvtID=Alter+Database&LinkId=20476

---

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

---

The server network address "TCP://192.177.103.140:5023" can not be reached or does not exist. Check the network address name and that the ports for the local and remote endpoints are operational. (Microsoft SQL Server, Error: 1418)

For help, click:

http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.4035&Evt Src=MSSQLServer&EvtID=1418&LinkId=20476 --- BUTTONS: OK ---

Referências

Documentos relacionados

O RMAN realiza um backup completo dos bancos de dados na primeira vez e nos próximos snapshots realiza um backup incremental (nível 1) no servidor de backups. Isso reduz a janela

A tecnologia de lentes múltiplas da STEINEL é o sistema de lentes perfeito para detetores de movimento com sensor duplo ou triplo com ângulos de deteção de 180°.

Como atrás foi dito, o conteúdo do bitmap de uma imagem em que a informação de cada píxel está contida em 24 bits é constituído pelas componentes da cor de cada

A inscrição do imóvel rural após este prazo implica na perda do direito de manter atividades agropecuárias em áreas rurais consolidadas em APP e Reserva Legal, obrigando

Ocorre que, passados quase sete anos da publicação da Lei n o  12.651/2012 e pacificadas as discussões sobre a sua aplicação, emendas a uma medida provisória em tramitação

The provisional measure addresses the necessary extension of the deadline for entry into the Environmental Regularization Program (PRA), but also contains amendments that aim

Não use o Servidor do banco de dados MySQL para fazer backup ou restaurar o banco de dados ERA, use o Console de gerenciamento de Equipamento Virtual ERA. Veja Backup do banco de

Corograpliiu, Col de Estados de Geografia Humana e Regional; Instituto de A lta C ultura; Centro da Estudos Geográficos da Faculdade de Letras de Lisboa.. RODRIGUES,