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.
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.
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.
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.
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á.
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.
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.
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.
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.
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:
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.
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.
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.
A partir deste disco é só procurar e recuperar os arquivos de dados do SQL Server, neste caso, o AdventureWorks2012_Data e AdventureWorks2012_Log.
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.
Espero que isso possa lhe salvar algumas horas (ou dias) de sono!