AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 30692
Accepted
Rachel
Rachel
Asked: 2012-12-19 10:58:47 +0800 CST2012-12-19 10:58:47 +0800 CST 2012-12-19 10:58:47 +0800 CST

Como posso fazer backup de um grande banco de dados SQL Server sem afetar o desempenho?

  • 772

Recebemos relatórios de consultas sendo executadas lentamente ou expirando no início da manhã, e o único trabalho que vejo em execução que acho que poderia afetar isso é nosso trabalho de backup de banco de dados.

O banco de dados em si tem cerca de 300 GB e o trabalho de backup começa às 4h30 e termina pouco depois das 7h. A sintaxe atual do nosso trabalho de backup é:

BACKUP DATABASE [DatabaseName]
TO DISK = N'E:\Database Backups\DatabaseName.Bak'
WITH INIT, NOUNLOAD, NAME = N'DatabaseName.Bak',
NOSKIP, STATS = 10, NOFORMAT

E:\é uma partição no servidor que contém os bancos de dados e os backups do banco de dados.

Também deve ser notado que este é um servidor virtual, não um servidor autônomo dedicado. Começamos a receber reclamações sobre lentidão durante o processo de backup logo após mudarmos para um servidor virtual, então acho que pode estar relacionado.

Existe uma maneira de executar esse trabalho de backup para que ele não afete o desempenho da consulta durante a execução?

Estamos usando o SQL Server 2005

sql-server sql-server-2005
  • 4 4 respostas
  • 42334 Views

4 respostas

  • Voted
  1. Best Answer
    Aaron Bertrand
    2012-12-19T11:04:22+08:002012-12-19T11:04:22+08:00
    1. Isole a E/S de backup do restante da E/S em seu sistema. Embora possa demorar mais e ser mais propenso a soluços, fazer backup pela rede em vez de em um disco local pode ajudar a aliviar o impacto direto na instância. Mesmo em uma máquina virtual, você deve poder expor outro armazenamento para que o SQL Server possa gravar em um subsistema de E/S diferente.
    2. É improvável que faça alguma diferença, mas, se isso for executado a partir de um trabalho, por que você precisa usar a STATSopção? Tem certeza de que precisa das outras opções ( NOUNLOAD, NOSKIP, NOFORMAT)? Eu não fiz nenhum teste de desempenho extensivo em toda a matriz de opções, mas IMHO você deve usar apenas as opções que você sabe que precisa.
    3. Execute seus backups completos em um horário diferente que não interfira na atividade regular do usuário. Isso nem sempre é possível, mas mesmo em operações 24 horas por dia, 7 dias por semana, há horários de pico e de calmaria.
    4. Se você mudar para 2008+, poderá aproveitar a compactação de backup (Enterprise em 2008, Standard ou Enterprise em 2008 R2+). Se você não puder mudar para 2008 ou não tiver a edição adequada, existem ferramentas de backup de terceiros que farão a compactação para você, e todas são muito boas nisso. Desde 2008, posso usar a compactação nativa e estou bastante satisfeito com a velocidade e a % de compactação, sem a necessidade de investir mais em terceiros. Mas com 2005 eu me lembro de ter um bom sucesso com o Red-Gate SQL Backup ; O Quest LiteSpeed ​​também é muito bom, mas não tenho ideia de que tipo de esforço está sendo colocado nele desde a aquisição da Dell.
    5. Se seus bancos de dados estiverem em recuperação total, você poderá demorar mais entre os backups completos, trocando isso pelo conhecimento de que, se precisar recuperar até um determinado momento, terá potencialmente mais logs para restaurar. Você pode combinar essa opção com a sugestão de Ali abaixo de fazer diffs ao longo da semana - se você tivesse que se recuperar na quinta-feira, precisaria restaurar 1 full, 1 diff e os logs desde o diff.
    6. Se você tiver muitos dados obsoletos e imutáveis, considere hospedá-los em um banco de dados diferente com um plano de recuperação diferente ou pelo menos em grupos de arquivos diferentes e dividir suas operações de backup dessa maneira. Se você tiver dados de referência ou arquivamento que podem ser tornados somente leitura e se estiver em recuperação simples, poderá movê-los para seu próprio grupo de arquivos somente leitura, fazer backup uma vez e não precisar incluí-los em seus backups noturnos nunca mais. Consulte estes tópicos do MSDN:

    Executando restaurações graduais

    Exemplo: restauração fragmentada de apenas alguns grupos de arquivos (modelo de recuperação simples)

    • 22
  2. Ali Razeghi - AWS
    2012-12-19T11:07:56+08:002012-12-19T11:07:56+08:00

    Este é um problema comum, existem várias soluções e realmente depende do seu ambiente. Vamos percorrê-los:

    1- Compressão de backup em tempo real

    Em 2008 R1 Backup Compression ficou disponível em Enterprise, em 2008R2 ficou disponível em Standard. Isso é ENORME. Vai lhe poupar MUITO tempo. Se você pode atualizar, vá em frente. Se você não puder, confira o utilitário HyperBak da RedGate , ou Quest LiteSpeed ​​. Ambos têm um teste gratuito.

    2- Backups Completos e Diferenciais

    Eu herdei um banco de dados de produção de 2 TB, causando muitos tempos limite para uma grande empresa de Internet 24 horas por dia, 7 dias por semana, que trabalhei. Habilitamos backups completos e diferenciais que nos pouparam muito tempo. Eu faria um backup completo no domingo às 12h, quando a atividade estava baixa, e faria as diferenças durante a semana. Isso economizou muito espaço. O trabalho do Diff é diferente dos logs de transação, pois eles trabalham em quais páginas do banco de dados foram alteradas. Todas as páginas alteradas são armazenadas em backup. Assim, você faz uma restauração completa e, em seguida, a restauração diff para adicionar as páginas modificadas.

    3- Qual é o seu gargalo?

    A análise do gargalo é importante para diagnosticar. Você está fazendo backup na mesma matriz de disco dos seus arquivos de dados? Seus arquivos de dados estão sendo indexados? Qual é o seu DISCO SEC/READ e DISCO SEC/WRITE para os discos de dados durante os backups? Modifiquei os backups para criar 4 arquivos. Cada arquivo tem seu próprio gravador de encadeamento e em nossa SAN funcionou muito bem. Teste, eu economizei 45 minutos criando apenas 4 arquivos de backup. Apenas certifique-se de que suas métricas de disco listadas acima sejam baixas. Obtenha uma linha de base.

    4- Replicar para um servidor diferente e fazer backup disso

    Este é um pouco avançado. Você precisa ter certeza de que seu banco de dados replicado está atualizado e precisa de monitoramento adequado para isso. Se for, você pode apenas fazer backup do banco de dados replicado.

    • 8
  3. Filip Holub
    2017-01-08T05:04:02+08:002017-01-08T05:04:02+08:00

    Você pode usar estes parâmetros:

    BLOCKSIZE - Escolha o tamanho 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536. (em KB)

    BUFFERCOUNT - Especifica o número total de buffers de E/S a serem usados ​​para a operação de backup. Você pode especificar qualquer número inteiro positivo; no entanto, um grande número de buffers pode causar erros de "memória insuficiente" devido ao espaço de endereço virtual inadequado no processo Sqlservr.exe. - do MSDN

    MAXTRNASFERSIZE - É de 65536 bytes (64 KB) a 4194304 bytes (4 MB)

    • -1
  4. Mainul
    2015-01-20T21:49:53+08:002015-01-20T21:49:53+08:00

    Tente. ele resolveu o problema de tempo limite expirado enquanto db de tamanho grande.

    Private Sub Command1_Click()
    On Error Resume Next
    Dim con As New Connection
    Dim tm As String
    con.CommandTimeout = 500'''Command timeout should be 500
    
    
     With con
        .ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=dbiBMS;Data Source=192.168.103.4"
        .Open
     End With
     tm = CStr(Time)
    
    con.Execute " backup database dbiBMS to disk='E:\Database_Backup\Test1.bak' with format "
    
    con.Close
    MsgBox tm
    Exit Sub
    x:
    MsgBox Err.Description
    
    End Sub
    
    • -3

relate perguntas

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

  • Downgrade do SQL Server 2008 para 2005

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve