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

Por

em

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!