Atualmente, tenho uma tarefa agendada que é disparada todas as noites às 2 da manhã, que chama SQLCMD.exe e transmite um script .sql para executar o backup (mostrado abaixo). Somos uma empresa muito pequena, com necessidades crescentes devido ao grande crescimento do lado comercial. Perder 1 dia de dados neste momento custaria dezenas de milhares de dólares contra algumas centenas desta vez no ano passado. Até que eu possa migrar essa plataforma de banco de dados para uma solução diferente em que o espelhamento de dados ocorre com redundância importante como o SQL Azure, qual é a melhor coisa que posso fazer para obter backups mais frequentes? Este script abaixo força o banco de dados a ficar offline? Posso executar esse script com usuários interagindo com o banco de dados?
USE CompanyCRM;
GO
BACKUP DATABASE CompanyCRM
TO DISK = 'D:\CRMBackups\CompanyCRMCRM.Bak'
WITH FORMAT,
MEDIANAME = 'CompanyCRM_Backup',
NAME = 'Full Backup of CompanyCRM';
GO
Atualizar
Uau, obviamente, uma comunidade DBA muito mais dedicada aqui do que no SO. Obrigado pelo feedback até agora. A única coisa que falta são os "comos". Eu mostrei o comando SQL acima que estou usando para fazer backups diários, mas os exemplos de backup incremental de log são MIA. Este não é um banco de dados grande, atualmente é executado no SQLExpress. Quando digo HA ou SQL Azure, refiro-me especificamente à arquitetura em vigor que não possuímos como pequena empresa. Esta instância está atualmente em execução no nosso servidor ONLY. Se esse servidor travar, nosso tempo de recuperação se tornará um ponto difícil. É por isso que o SQL Azure se torna atraente.
fonte
Respostas:
EDIT, a partir da sua atualização
Como você disse que pode perder 1 dia de dados, eu colocaria os bancos de dados no modo de recuperação SIMPLES. Você pode então fazer uma CHEIA todas as manhãs e / ou noites. Se você quisesse se cobrir durante o dia, poderia fazer um backup diferencial do banco de dados, um deles apenas em situações de caso. Isso capturará todas as alterações feitas desde o backup completo. Se conheço um período de tempo em que muita entrada está acontecendo, posso lançar esse tipo de backup após a conclusão. Isso pode economizar tempo na recuperação das pessoas, para que elas não precisem fazer entrada de dados extra.
Como esse é o seu único servidor, verifique se você está executando o DBCC CHECKDB nos bancos de dados. Os backups não fazem nenhum bem quando você descobre que eles estão corrompidos (acho que alguém mencionou isso também). Você pode provavelmente encontrar alguns scripts disponíveis para configurar uma tarefa agendada para verificar o erro de SQL ERRORLOG da mensagem DBCC para detectar erros. O SQL Server não avisará nativamente sobre os erros retornados das mensagens DBCC, portanto, a menos que você verifique manualmente cada vez que um script que o faz pode ajudar.
O comando de backup diferencial:
fonte
fonte
A primeira coisa que você precisa fazer é descobrir quantos dados você pode perder. Até lá, você não terá idéia de quantas vezes fazer backup do banco de dados. Este não é um número que você deveria apresentar. Isso é algo que a empresa (ou o CEO de uma empresa menor) precisaria decidir. O primeiro número com o qual eles retornarão é 0 minutos. O que pode ser feito, mas será muito caro. Na realidade, a menor quantidade de dados para a qual você pode fazer backups é aproximadamente a cada 2 minutos. Se a quantidade de dados alterados no sistema for pequena o suficiente, você poderá fazer backups a cada minuto.
Para fazer backups do log de transações, é necessário fazer com que o banco de dados seja colocado no modo de recuperação COMPLETO.
Se você pode perder 5 minutos em dados, provavelmente desejará fazer backups completos diariamente e backups de log de transações a cada 5 minutos. Se você pode perder 15 minutos em dados, convém fazer backups completos e backups de log de transações a cada 15 minutos.
Outra opção seria fazer backups completos semanais, backups diferenciais diários e backups de log de transações a cada x minutos, como falo acima.
Lembre-se de que quanto mais vezes você precisar fazer backup, mais arquivos precisará restaurar no caso de uma falha no banco de dados ou exclusão de dados. Pode fazer sentido fazer backups diferenciais ao longo do dia para diminuir o tempo necessário para restaurar o banco de dados.
Todos os backups que usam o banco de dados BACKUP e a instrução BACKUP LOG são feitos online e não impedem que os usuários acessem o banco de dados.
fonte
Digamos que você tenha um cenário comercial comum, sendo o seu horário mais movimentado: das 9h às 17h, de segunda a sexta-feira. Então eu sugiro: Backup completo no domingo à noite. Backups diferenciais às 8h, 18h e 1h (para reduzir o tempo de recuperação). Registre backups a cada hora ou dependendo do que sua empresa exige.
Dependendo do seu período de retenção, você deve ter um trabalho de limpeza automática para limpar os arquivos de backup antigos. Tudo isso pode ser criado usando planos de manutenção SQL. Confira este link para o SQL 2005 .
Você deve armazenar seus backups em algum tipo de disco redundante (espelhado) ou pode usar fitas para armazenamento externo. Os usuários podem continuar trabalhando no sistema enquanto os backups são executados.
fonte
Eu não faria um backup completo todas as noites. Se for um banco de dados grande, isso poderá levar muito tempo, sem mencionar que ocupa muito espaço na mídia. Faça um backup completo todo fim de semana e um backup diferencial todas as noites. Em seguida, faça um backup do log de transações (supondo que seu banco de dados esteja em recuperação total) a cada hora ou a cada meia hora, mas verifique se esses arquivos .bak e .trn residem em um disco separado em caso de falha no disco.
fonte
Você pode sincronizar na nuvem sua pasta de backups à noite para obter armazenamento externo? Como tenho certeza de que se trata de uma empresa de assistência médica, há alguma que seja segura o suficiente para conformidade com o HiPA? Ou talvez apenas super-criptografá-los?
O script coloca pelo menos uma cópia do backup em um compartilhamento de rede? Dessa forma, se a caixa física explodir ...
fonte