Perdi minha VM do SQL Server no Azure, e agora?!

Fala galera, a idéia deste post é mostrar uma forma de trabalho em um cenário no qual ocorre um desastre no ambiente de IaaS do Azure, e, por consequência, o ambiente para de funcionar.

A solução que proponho é criar uma outra máquina virtual, atachar o disco do servidor que deu problema e recuperar os dados do ambiente antigo. Parece simples, e realmente é, mas este processo simples pode salvar algumas noites de sono!

A primeira coisa para simular este ambiente será criar uma Storage que receberá os armazenamentos.

image

O próximo passo é criar uma máquina virtual de acordo com suas necessidades. Para este teste foi criada uma máquina de tamanho Média (A2), que possui 2 cores e 3.5GB de memória. Veja neste link o custo das máquinas virtuais do Azure. Segundo as definições encontradas neste outro link, é possível trabalhar com até 4 discos de 1TB de dado em cada, chegando a 500 IOPS em cada disco.

image

Para simular o problema não é necessário uma máquina grande, nem com edição Enterprise do SQL Server, então foi montada com a edição Standard mesmo, e no Windows Server 2008 R2.

image

Após escolher o tipo da maquina virtual na galeria, garanta que o armazenamento será o mesmo que foi criado anteriormente. Isso permitirá a manipulação dos discos entre as máquinas.

O objetivo não é mostrar a configuração ou utilização do SQL Server no Azure, e sim o processo de desastre do ambiente. Se você precisa configurar o SQL Server para ser acessado através do Azure, veja este post do Rodolfo Fadino explicando como fazer.

Reparem que existe o banco de dados AdventureWorks2012 no ambiente, e é este banco de dados que vamos recuperar nesta simulação.

image

Para quebrar o ambiente, vou remover alguns arquivos. Praticamente apaguei alguns arquivos da pasta System e System32, o arquivo BootStat.dat que ficam dentro da pasta Windows e também o arquivo bootmgr que é um arquivo de Inicialização. Ao tentar reiniciar o servidor, ele não sobe porque alguns arquivos estão indisponíveis. Pronto, este é nosso desastre! O objetivo do post é resolver este problema para reacessar o SQL Server.

A proposta do que precisa ser feito para recuperar o ambiente é criar uma nova máquina virtual, pode ser a mesma configuração utilizada no outro ambiente. O importante é ter o SQL Server para recuperar os dados do banco.

Durante a criação da nova VM, é importante escolher a mesma conta de armazenamento (Storage) que registrou na primeira VM. Isso porque o disco está armazenado lá.

image

Após alguns instantes, seu ambiente terá uma nova máquina virtual, e será possível acessá-la. Ao fazer isso, você terá os dois discos padrões do ambiente, um com o Sistema Operacional e os programas e outro com seu Storage Temporário.

image

 

Ao voltar ao gerenciador de máquinas virtuais, é preciso excluir a máquina danificada para liberar o registro do VHD, e então continuar com a configuração. Para isso, selecione a máquina com problema, aponte para Excluir e em seguida escolha Manter os discos conectados.

image

Após a exclusão, o disco não estará associado à nenhuma máquina virtual mas ainda não está disponível para ser reutilizado. Lembra que o ambiente é criado com dois discos, um pro SO e outro para o Storage Temporário. Então, este storage temporário deve ser apagado. Acesse o Storage que foi criado para armazenar os discos, vá até o repositório de VHDs e selecione o VHD da primeira VM que possui o .status no final. Ao selecionar este VHD, pode clicar em Excluir.

image

Também é preciso excluir o serviço de nuvem desta maquina danificada, pois o disco está associado à este serviço. Exclua o serviço apontando para o menu Cloud Services, marque a primeira VM e clique em Delete.

image

Pronto, agora o disco está disponível para se trabalhar.

Para incluir o disco danificado na nova VM, mantenha-se no gerenciador de VMs do Azure, acesse as configurações desta segunda máquina virtual, a nova, e então vá até o menu Disks.

Para não ter problemas com nenhuma sugeira do ambiente antigo garanta que o disco não está associado a nenhuma outra máquina virtual. Você pode verificar isso no menu Disk ao lado do menu Images (antes de associar à nova VM).

Faça o processo para apagar a associação do disco da maquina virtual 1 com qualquer VM existente. Mas cuidado para não apagar o VHD do storage. Depois crie novamente o disco com o nome sugestivo, e garanta que não está marcada a opção de ser um disco com Sistema Operacional. No final, seus discos estarão assim:

image

Voltando às configurações de Maquina Virtual, selecione a VM que vai receber o novo disco e então clique em Attach e aponte para Attach Disk. Neste caso não será um disco vazio, e sim um disco.

image

Veja que nas opções para incluir um novo disco, nos discos disponíveis, já aparece o nome que foi criado a pouco. No meu caso, chamei de DiscoDanificado.

image

Ao confirmar, o Azure fará a configuração deste novo disco no ambiente. Após alguns instantes será possível acessar a VM novamente e encontrar o disco disponível.

image

A partir deste disco é só procurar e recuperar os arquivos de dados do SQL Server, neste caso, o AdventureWorks2012_Data e AdventureWorks2012_Log.

image

Ao copiar os arquivos de Dados e de Log para o ambiente correto, você pode atachar os arquivos ao SQL Server e então seu novo ambiente estará disponível para continuar trabalhando com seus bancos de dados.

image

Espero que isso possa lhe salvar algumas horas (ou dias) de sono!

Sobre Diego Nogare 344 Artigos
Diego Nogare é Gerente Técnico de Engenharia de Machine Learning no Itaú-Unibanco. Também é professor em programas de pós graduação no Mackenzie e na FIAP, em São Paulo. Foi nomeado como Microsoft MVP por 11 anos seguidos, e hoje faz parte do programa Microsoft Regional Director.