Estou trabalhando em um banco de dados muito grande (mais de 250 shows) com mais de 225 milhões de registros. É difícil trabalhar com o banco de dados simplesmente por seu tamanho. Este banco de dados é somente leitura.
Estamos procurando um hardware mais rápido, mas de qualquer forma estou tentando encontrar a maneira mais eficiente de trabalhar com o banco de dados. Este banco de dados deve ser atualizado todas as noites a partir de um banco de dados mestre e o tempo de inatividade deve ser mínimo. O banco de dados mestre é mantido por terceiros.
Estou tentando encontrar a melhor forma de atualizar o banco de dados mas não estou tendo muita sorte. Analisei os backups diferenciais e de log de transações, mas para aplicá-los, um backup completo deve ser restaurado primeiro. Isso anula completamente o propósito de um backup diferencial no meu caso, já que eu poderia muito bem fazer um backup completo no banco de dados mestre e simplesmente restaurar o backup completo todas as noites, pois isso seria mais rápido do que restaurar um backup completo e aplicar os backups diferenciais a cada noite.
Eu esperava ter uma solução onde pudesse fazer um backup completo uma vez (ou talvez uma vez por mês) e, a partir de então, simplesmente aplicar algum tipo de backup incremental com base no backup completo original que se complementa. Isso manteria o tempo de inatividade em um mínimo, já que uma vez feito o primeiro backup completo, eu aplicaria apenas os backups incrementais todas as noites. Eu simplesmente reconstruiria o índice após cada backup “incremental”. Não tive sucesso em encontrar nenhuma solução como esta.
Agora estou mergulhando e pesquisando bastante sobre backups e desempenho de banco de dados, lendo constantemente o MSDN - no entanto, parece que essa solução não é uma opção. Pensei em perguntar como último recurso - certamente há alguns aqui gerenciando grandes bancos de dados onde seria impraticável fazer uma restauração todas as noites.
Alguma sugestão? Também estou aberto a sugestões/links para páginas sobre performance, pois nunca trabalhei com um banco de dados desse tamanho.
Responder1
Você está descrevendoenvio de registros, mas você deseja usar backups 'diferenciais' em vez de backups de log, que é o problema da sua abordagem. Com o envio de logs, você restaura o banco de dados uma vez e, em seguida, aplica backups de log à medida que eles são criados no site principal e nunca mais precisa refazer a restauração de backup completo inicial. Continue aplicando o log enviado a cada poucas horas e você terá sua cópia somente leitura disponível.
Responder2
Talvez esse terceiro criasse algum tipo dereplicaçãomover as mudanças todas as noites?
Responder3
Se você tiver acesso permitido ao ambiente que abriga o banco de dados de produção e os bancos de dados mestre e somente leitura podem ser a mesma instância de banco de dados executando a edição SQL2005/SQL2008 Enterprise, você pode usar instantâneos de banco de dados. Isso lhe dará uma cópia instantânea somente leitura do banco de dados.
http://msdn.microsoft.com/en-us/library/ms175158.aspx
Se você não tiver acesso ao ambiente de produção, pergunte se eles desejam configurar um banco de dados espelhado em seu ambiente - isso também permitirá que você execute um instantâneo, mas você precisará de software e licenças da edição Enterprise.
http://msdn.microsoft.com/en-us/library/ms175511.aspx
Se eles/você não estiver usando o Enterprise ou precisar de dados quase ao vivo, a replicação transacional é outra opção.
http://msdn.microsoft.com/en-us/library/ms151176.aspx
Se a sua restauração estiver demorando muito, considere a opção de adquirir um software de compactação de disco de backup - isso geralmente acelera os backups/restaurações em um fator, dependendo do tipo de dados mantidos.
Responder4
Remus respondeu primeiro, mas aqui está como o cenário de envio de log funcionaria:
- terceiros enviam a você um backup completo do banco de dados em 01/01
- Você restaura o banco de dados em norecovery com modo de espera, isso configura o banco de dados como somente leitura (somente para dbos)
- Terceiros enviam para você um backup do log de transações (ou vários) em 1/2 e você os aplica ao banco de dados, atualizando as alterações. Depois que o backup for aplicado, o banco de dados estará em modo de espera novamente, somente leitura
- Repita o processo diariamente