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 / 40833
Accepted
Elijah W. Gagne
Elijah W. Gagne
Asked: 2013-04-25 12:02:52 +0800 CST2013-04-25 12:02:52 +0800 CST 2013-04-25 12:02:52 +0800 CST

Qual a melhor forma de manter os tamanhos dos arquivos de log do SQL

  • 772

Sou um novo DBA e estou gerenciando uma instância do SQL Server 2012 que tem bastante atividade. Estou executando no modo de recuperação total porque precisamos de uma recuperação pontual.

No momento, estou fazendo um backup completo dos bancos de dados e logs todos os dias às 5h. Alguns dos arquivos de log aumentaram para 300 GB e, mesmo depois de fazer um backup, eles não diminuem de tamanho. Posso reduzi-los de tamanho executando algo semelhante a:

BACKUP LOG db1 TO DISK = '\\server\share\db1_log1.trn';
DBCC ShrinkFile([db1_log], 0);

BACKUP LOG db1 TO DISK = '\\server\share\db1_log2.trn';
DBCC ShrinkFile([db1_log], 0);

BACKUP LOG db1 TO DISK = '\\server\share\db1_log3.trn';
DBCC ShrinkFile([db1_log], 0);

Quando verifico os LSNs dos arquivos de backup, vejo algo como:

RESTORE headeronly FROM DISK = N'\\server\share\db1_log1.trn'
FirstLSN:  15781000014686200001
SecondLSN: 15802000000665000001

RESTORE headeronly FROM DISK = N'\\server\share\db1_log2.trn'
FirstLSN:  15802000000665000001
SecondLSN: 15805000000004100001

RESTORE headeronly FROM DISK = N'\\server\share\db1_log3.trn'
FirstLSN:  15805000000004100001
SecondLSN: 15808000000004200001

Não acredito que estou quebrando minha cadeia de log encolhendo os arquivos de log. Lendo sobre isso, acredito que estou prejudicando meu desempenho porque esses arquivos de log encolhidos precisam crescer novamente.

Perguntas:

  1. Por que o arquivo de log não diminui após meus backups? É porque há transações não confirmadas?
  2. A princípio, pensei que deveria reduzir os arquivos de log após cada backup às 5h. Depois de ler como isso é ruim para o desempenho, agora acredito que preciso fazer backups de log regulares a cada duas horas durante o dia. Isso está correto?
  3. Meu backup completo normal do banco de dados/logs acontece todos os dias às 5h e às vezes leva 3 horas. Se eu agendar os backups de log para acontecer a cada hora, o que acontecerá quando o backup de log colidir com o backup das 5h?
sql-server sql-server-2012
  • 3 3 respostas
  • 17340 Views

3 respostas

  • Voted
  1. Best Answer
    Thomas Stringer
    2013-04-25T12:23:51+08:002013-04-25T12:23:51+08:00
    1. Por que o arquivo de log não diminui após meus backups? É porque há transações não confirmadas?

    O arquivo de log NTFS real não "encolhe" de um backup de log de transação, mas os VLFs (arquivos de log virtual) dentro do log de transação são marcados para reutilização (porque agora eles são copiados e persistidos na mídia) permitindo o wrap-around de uso do log de transação para ocorrer. Se você não estiver fazendo backup do log de transações ou não com frequência suficiente, não haverá VLFs disponíveis e isso fará com que o log de transações cresça (desde que o crescimento automático esteja definido) para acomodar entradas de log de transações adicionais.

    2. No começo, eu estava pensando em reduzir os arquivos de log após cada backup às 5h. Depois de ler como isso é ruim para o desempenho, agora acredito que preciso fazer backups de log regulares a cada duas horas durante o dia. Isso está correto?

    A redução rotineira e programada de arquivos não é uma boa ideia. Somente quando você precisar recuperar o espaço necessário, você deve considerar um arquivo DBCC SHINKFILE. Além disso, quando você aumenta continuamente seu log de transações, pode estar atrapalhando outras coisas, como a recuperação do banco de dados. Com muitos VLFs no log de transações (um problema comum quando o log de transações é aumentado apenas por um pequeno incremento de armazenamento), a quantidade de tempo para recuperar o banco de dados pode ser maior do que o desejado.

    3.Meu backup completo normal do banco de dados/logs acontece todos os dias às 5h e às vezes leva 3 horas. Se eu agendar os backups de log para acontecer a cada hora, o que acontecerá quando o backup de log colidir com o backup das 5h?

    Não vai acontecer nada, essa é uma operação totalmente legal. Veja este gráfico abaixo do MSDN . Onde houver um ponto preto, essas duas operações não podem ocorrer ao mesmo tempo. Como você pode ver, um backup de banco de dados e um log de transações são permitidos simultaneamente.

    insira a descrição da imagem aqui

    A conclusão aqui é que você deve fazer backup do log de transações com mais frequência. O crescimento do arquivo NTFS não é o único problema que você pode encontrar ao não fazer backup do log de transações com mais frequência. Se você tiver uma falha de armazenamento e seu log de transações for perdido, você só poderá restaurar para o ponto no tempo de seu último backup de log de transações. Se o log de transações for perdido, você não poderá fazer backup do final do log e restaurar para o ponto no tempo da falha. No seu caso, você pode perder 24 horas de dados. Mas se você fizer backup de seus logs de transações a cada, digamos, 30 minutos, sua perda máxima de dados seria de 30 minutos. Nesse caso, se o log de transações sumir e você tiver o backup completo e a cadeia de log intacta, poderá restaurar o último backup de log.

    Documentação do TechNet sobre truncamento de log de transações

    • 10
  2. Mike Fal
    2013-04-25T12:25:19+08:002013-04-25T12:25:19+08:00

    O principal problema com o qual você está lidando é que você está fazendo backup de seus logs uma vez por dia. O comportamento do mecanismo é que os registros de log (espaço usado) dentro de um arquivo de log só serão removidos após um backup de log bem-sucedido. Este espaço é recuperado quando ocorre um ponto de verificação, mas se seu banco de dados estiver em recuperação Full/Bulk Logged, os registros de log só serão removidos se tiverem sido copiados com sucesso.

    Os backups de log devem ser usados ​​em conjunto com os backups completos e devem ser executados em um intervalo regular entre os backups completos. Esse intervalo pode ser qualquer período, embora eu normalmente execute backups de log a cada 15 minutos. Seu intervalo depende do objetivo do ponto de recuperação (RPO) e da quantidade de dados que você pode perder no caso de uma recuperação.

    Se você estiver executando backups de log regulares, não precisará realizar reduções de arquivo regulares porque estará gerenciando o espaço do arquivo de log antes que ele seja forçado a crescer.

    • 5
  3. Phong Tran
    2015-05-28T19:44:26+08:002015-05-28T19:44:26+08:00

    Eu tenho o mesmo problema que você antes. Meu arquivo de log sempre aumenta, em vez disso, eu uso o backup completo do banco de dados todas as noites. Então aqui está a minha solução:

    1. faça backup do seu arquivo de log atual.

    2. Defina seu banco de dados para recuperação simples

      • Porque em Full Recovery -> Arquivo de log não exclui transação confirmada, é apenas reorganizar seus dados -> Arquivo Shink não afeta muito -> e vice-versa para Recuperação Simples.
    3. Reduza seu arquivo de log para 1 MB ou menos (você decide)

    4. Defina seu banco de dados de volta para Full Recovery.

    Espero que seja ajuda

    Phong Tran

    • -1

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • 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

Sidebar

Stats

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

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 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

    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
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • 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

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