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 / 117765
Accepted
freefaller
freefaller
Asked: 2015-10-13 09:18:12 +0800 CST2015-10-13 09:18:12 +0800 CST 2015-10-13 09:18:12 +0800 CST

Mudando para Recuperação Simples - encolhendo logs de transação

  • 772

Isenção de responsabilidade padrão: sou um "DBA involuntário" (uma bela frase que vi neste artigo ) e fiz muitas e muitas e muitas e muitas e muitas leituras sobre esse assunto, mas ainda estou confuso/preocupado...

Preciso alterar o modelo de recuperação de vários bancos de dados de produção do SQL Server 2014 de Completo para Simples.

Os bancos de dados estão atualmente configurados para Full Recovery e estavam sendo copiados usando SqlBackupAndFTP , que faria um backup completo diário, com 3 backups diferenciais e 20 backups de transação por dia. Isso estava funcionando bem até que tivemos grandes problemas com a empresa que fornece armazenamento baseado em FTP.

Cerca de 3 meses atrás, mudei para o Attix5, que está funcionando bem - no entanto, descobri agora que, devido à maneira como o software funciona, os logs de transação são tão grandes quanto os arquivos de dados (em um caso, mais de 14 Gb contra um arquivo de dados de 13 Gb ).

Fui recomendado para mudar o modelo de recuperação para Simples, para que o log de transações não cresça.

Sei que ter o Simple Recovery não fornecerá restauração pontual - isso é absolutamente bom, pois backups completos estão ocorrendo a cada hora e estamos "felizes em perder" qualquer coisa que possa ter acontecido nos 1 a 59 minutos anteriores.

Meu entendimento é que devo definir o modelo de recuperação como Simples e deixar o backup ocorrer, o que definirá um ponto de verificação no log de transações permitindo que o espaço seja reutilizado.

No entanto, eu realmente preciso reduzir o log de transações para um tamanho razoável (para que não ocupe muito espaço de backup), mas continuo lendo que reduzir é uma má ideia. Ou estou entendendo o lado errado da vara?

Se eu reduzir o log de transações para cerca de 25 MB (o que deve ser grande o suficiente para um único conjunto de transações por hora) usando o seguinte comando, isso é suficiente?

DBCC SHRINKFILE('log file name',25)

(Sinto muito por estar perguntando algo que parece ter sido perguntado um zilhão de vezes antes, mas não é algo que eu possa errar.)

sql-server sql-server-2014
  • 2 2 respostas
  • 16025 Views

2 respostas

  • Voted
  1. Best Answer
    Kevin S
    2015-10-13T10:34:53+08:002015-10-13T10:34:53+08:00

    Em primeiro lugar, gostaria de salientar novamente que, na maioria dos casos, a recuperação SIMPLES não é recomendada para um banco de dados de produção. No entanto, se isso é algo que você deseja alterar, a melhor maneira que encontrei para reduzir o arquivo LOG, depois de colocar o banco de dados no modelo de recuperação SIMPLE, é a seguinte. Isso não apenas liberará espaço livre do log, mas também reduzirá o arquivo ao seu menor tamanho possível.

    Como você afirmou, encolher também não é normalmente uma boa prática, mas há momentos em que é justificado. Existem muitos artigos pró / contra sobre isso, e eu concordo com aqueles que dizem para você nunca usar, DBCC SHRINKDATABASE;sempre use DBCC SHRINKFILEse precisar absolutamente de um psiquiatra.

    No entanto, o arquivo de log realmente precisa ter um tamanho razoável, mesmo no modelo de recuperação SIMPLE, pois é onde as informações são mantidas durante as transações e os SPIDs de execução longa precisam de mais de um arquivo de log. Entre muitos motivos, um deles é a reversão em caso de problema. Como afirmei acima, esses scripts reduzirão seu arquivo de log ao menor tamanho absoluto possível, mas como você precisa de pelo menos algum espaço de log, você deve aumentá-lo manualmente e também certificar-se de que seu "crescimento automático" esteja definido para um valor razoável número; indiscutivelmente, uma porcentagem deve sempre ser evitada. Encolher o log para seu menor tamanho e reaumentá-lo manualmente realiza um processo muito importante - o de manter sua fragmentação/contagens VLF regressivas. Esse é outro tópico que não vou abordar aqui, e muitos sites, incluindo Brent Ozar, podem entrar nas estatísticas reais e testar o motivo, mas sempre aumente seu arquivo de log em 8 GB por crescimento, se precisar ser tão grande ou maior. Você mencionou acima de 25 MB e não consigo imaginar que seja grande o suficiente. Eu pessoalmente gerencio mais de cem bancos de dados no momento, e menos de uma dúzia está configurado para 64 MB - todos os outros são muito maiores, variando até 64 GB. Sua atividade e consultas SQL reais determinarão qual deve ser o tamanho ideal. No mínimo, eu iria de 512 MB para 2 GB e definiria seu crescimento para o mesmo até que você saiba onde seu arquivo de log deve ficar. Eu pessoalmente gerencio mais de cem bancos de dados no momento, e menos de uma dúzia está configurado para 64 MB - todos os outros são muito maiores, variando até 64 GB. Sua atividade e consultas SQL reais determinarão qual deve ser o tamanho ideal. No mínimo, eu iria de 512 MB para 2 GB e definiria seu crescimento para o mesmo até que você saiba onde seu arquivo de log deve ficar. Eu pessoalmente gerencio mais de cem bancos de dados no momento, e menos de uma dúzia está configurado para 64 MB - todos os outros são muito maiores, variando até 64 GB. Sua atividade e consultas SQL reais determinarão qual deve ser o tamanho ideal. No mínimo, eu iria de 512 MB para 2 GB e definiria seu crescimento para o mesmo até que você saiba onde seu arquivo de log deve ficar.

    Acho que executar cada linha separadamente funciona melhor, garantindo o sucesso antes de ir para a próxima etapa. A linha final do curso é o que aumenta seu log para o tamanho que você definiu. Eu tenho 8 GB, mas você pode alterar isso para atender às suas necessidades. Se você não quiser encolher totalmente e depois crescer novamente, remova a última linha e altere o "1" na linha acima para sua escolha de tamanho.

    Uma última coisa antes de sair e reduzir seu arquivo de log.

    IMPORTANTE: Sempre que um arquivo de log aumenta, manualmente ou automaticamente por SQL, basicamente todo o seu banco de dados é bloqueado até que o crescimento seja concluído. Escolha um bom momento quando isso não afetará as transações ativas - se você tiver "fora do expediente" ou janelas de manutenção. Um tamanho tão pequeno de 1 GB ou menos deve ser bastante rápido e invisível para o usuário final, mas isso será realmente determinado por sua infraestrutura.

    USE [DatabaseName] 
    
    DBCC SHRINKFILE (N'LogicalName', 0, TRUNCATEONLY)
    
    DBCC SHRINKFILE (N'LogicalName', 1)
    
    ALTER DATABASE [DatabaseName] MODIFY FILE ( NAME = N'LogicalName', SIZE = 8192 MB )
    
    • 6
  2. Kin Shah
    2015-10-13T09:45:11+08:002015-10-13T09:45:11+08:00

    Isenção de responsabilidade padrão: sou um "DBA involuntário" (uma bela frase que vi neste artigo) e fiz muitas e muitas e muitas e muitas e muitas leituras sobre esse assunto, mas ainda estou confuso/preocupado...

    Então você sabe que está jogando com uma espada de dois gumes e está ciente dos riscos - qualquer fio que você tocar, você vai se cortar.

    Agora descobri que, devido à maneira como o software funciona, os logs de transação são tão grandes quanto os arquivos de dados (em um caso, mais de 14 Gb contra um arquivo de dados de 13 Gb).

    Verifique com o fornecedor se eles estão anexando os arquivos de backup do log de transações ou não e use a compactação de backup .

    Sei que ter o Simple Recovery não fornecerá restauração pontual - isso é absolutamente bom, pois backups completos estão ocorrendo a cada hora e estamos "felizes em perder" qualquer coisa que possa ter acontecido nos 1 a 59 minutos anteriores.

    Eu vejo um problema nisso. Se bem entendi, você está lutando contra o espaço de armazenamento em disco. Um backup completo sempre ocupará mais espaço em comparação com um backup de log de transação (ou um backup de log diferencial).

    Você deve consultar o fornecedor da ferramenta de backup e solicitar que ele corrija o problema. Como alternativa, por que você não usa uma solução T-SQL - que tem mais transparência e controle sobre o que você está fazendo, em vez de usar uma ferramenta que você sabe que está causando problemas.

    Você deve ler mais uma resposta incrível - Por que o log de transações continua crescendo ou fica sem espaço?

    Eu realmente preciso reduzir o log de transações para um tamanho razoável

    Você deve descobrir com que frequência o crescimento automático entra em ação e começar com um valor médio e depois ajustar. O dimensionamento adequado do log de transações é muito importante e, por favor, não use 25 MB. O som é muito baixo e o valor será muito baixo, o que iniciará os eventos de autocrescimento com mais frequência.

    Se o seu log de transações for grande, então (passe o mouse abaixo)

    você deve reduzi -lo em pedaços .

    Não deixe que a ferramenta de buggy do seu fornecedor afete sua decisão sã :-)

    • 3

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

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

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

    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
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • 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
    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