Bloquear disco do Windows para backup (instantâneos do EC2)

5

Estou procurando uma maneira de liberar todas as gravações pendentes no disco no Windows e, em seguida, armazene em buffer todas as gravações futuras até que um comando forneça sua permissão.

Gostaria de liberar gravações do SQL Server e gravações do sistema do Windows e, em seguida, armazená-las em buffer.

Para ser claro sobre o que estou fazendo:

Eu uso o Windows 2008 R2 e o SQL Server 2008 R2 no EC2. Eu corro um instantâneo de hora em hora na unidade em que eles residem. Quando nada crítico está mudando, esses instantâneos ficam muito bem - mas de vez em quando eu recebo um instantâneo ruim. Pior cenário, no caso de falha do drive (falha no EBS tecnicamente), se eu tiver 3 snapshots ruins por hora, perdi 4 horas de dados.

Os instantâneos já resolvem o backup rápido e diferenciado e a restauração rápida e fácil - então, tudo o que estou procurando é uma forma de liberar tudo para que fique em um estado consistente no disco e suspender todas as gravações até que o instantâneo esteja completo . Estou feliz em escrever algum código para um serviço que eu chamo para fazer isso acontecer, mas eu preciso saber com quais APIs / comandos eu preciso escrever para fazer a tarefa.

Estou ciente de que poderia criar um volume separado para o qual eu execute continuamente o Backup do Windows e, em seguida, instale esse instantâneo, mas isso aumenta significativamente o processo de backup e parece um hack. Eu sei que o Windows e o SQL Server são muito bons em armazenamento em buffer, então isso parece algo que eu deveria ser capaz de realizar in-loco.

Idéias?

    
por Chris Moschini 11.05.2011 / 21:36

5 respostas

6

Uma opção para você é aproveitar o Shadow Copy no Windows. O próprio processo de cópia de sombra drena os buffers de gravação antes de confirmar seu próprio instantâneo. Programe para tirar um instantâneo um ou dois minutos antes do instantâneo do EC2. Dessa forma, quando a captura instantânea do EC2 for disparada, você já terá uma cópia recente e consistente no sistema.

    
por 11.05.2011 / 23:06
5

Não consigo responder sobre como bloquear o disco para que o Windows não grave ou force o flush. Portanto, essa será uma resposta parcial, mas há uma informação relevante que sua pergunta não menciona:

O processo do instantâneo ec2 é instantâneo. Você não precisa esperar que isso termine! Depois de iniciado, você pode começar a usar o disco novamente e o instantâneo ainda obterá os dados no ponto do instantâneo, não no estado atual. Isso acontece porque, uma vez marcada para captura instantânea, todos os NOVOS dados gravados no disco são enfileirados em um tipo de disco de sobreposição e os dados no momento em que você solicita um instantâneo são preservados.

Isso deve facilitar o seu outro problema. Tudo o que você precisa fazer é liberar o disco para obter tudo consistente, depois pausar por alguns segundos e certificar-se de que a API de snapshot tenha retornado um código de sucesso para que você saiba que o processo entrou em ação e, em seguida, retorne à sua redação. / p>     

por 11.05.2011 / 21:41
3

Vou adicionar uma resposta separada para abordar alguns dos seus comentários. O VSS é um bom caminho a percorrer se você estiver tentando desativar os dados. Na verdade, o MSFT DPM usa esse subsistema com grande eficácia com o SQL, pelo que entendi. É claro que eles tinham equipes dedicadas para dividir as coisas.

O VSS não estraga o SQL, mas pode (e tem) interferido nos métodos de backup nativos do SQL (veja minha resposta a uma pergunta aqui para mais alguma introspecção). Você precisa estar bem ciente do que está tentando realizar, do que o VSS está fazendo e se os dois estão ou não coincidentes.

Você pode escrever algo para chamar nativamente as APIs do VSS (não me pergunte como, eu não sou um desenvolvedor), ou você pode usar algo como vshadow.exe para fazer e manipular cópias de sombra para você. Vshadow.exe está disponível no MSFT SDK; Certifique-se de obter a versão correta para o seu SO.

Dependendo do modelo de recuperação do SQL, o SQL reagirá de maneira diferente quando o VSS for chamado. Já faz um tempo desde que eu lidei com o nitty gritty de SQL e VSS, mas pelo que eu me lembro se você tiver o Simple Recovery Model definido, os logs truncarão quando o VSS for chamado. Em Full e Bulk-Logged, este não será o caso e você precisará fazer algo para gerenciar o tamanho dos logs.

E você provavelmente sabe disso, mas teste, teste e teste. Seus instantâneos só serão bons se você puder restaurá-los.

    
por 12.05.2011 / 03:42
2

Eu não sou um especialista do EC2, mas, fora do EC2, se você quiser criar backups consistentes usando snapshots de armazenamento, é necessário desativar o sistema de arquivos antes de fazer o backup.

O SQL Writer Service deve estar em execução (consulte link para obter mais informações sobre o SQL Writer Service) e, em seguida, o backup usaria as APIs VSS COM para congelar o IO, tirar o instantâneo e descongelá-lo novamente (muitos detalhes aqui: link ).

Os fornecedores de SAN geralmente integram as chamadas à API do VSS em sua rotina de snapshot e isso seria feito por meio de um agente em execução no servidor.

Não consigo responder se o EC2 realmente faz essa ligação para você ou se é algo que você precisaria escrever por conta própria (use as APIs do VSS para congelar o ES, em seguida, chame a API do EC2 para tirar a foto instantânea), mas esperamos que minha resposta te dá algumas dicas.

    
por 11.05.2011 / 23:38
0
O AutomatiCloud faz exatamente o que você está procurando. Ele possui um agente VSS opcional que usa o provedor de snapshot VSS fornecido pelo MS-SQL, MS-Exchange ou outros.

Durante o backup, ele congela / redireciona a E / S no (s) disco (s), aciona a captura instantânea do EC2 e, em seguida, permite a E / S novamente.

Todo o processo é controlado em um GUI do Windows fácil de usar, sem necessidade de scripts.

    
por 11.02.2017 / 22:00