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 / 73850
Accepted
gotqn
gotqn
Asked: 2014-08-13 22:04:43 +0800 CST2014-08-13 22:04:43 +0800 CST 2014-08-13 22:04:43 +0800 CST

Reduzir o log de transações ao usar o grupo de disponibilidade AlwaysOn

  • 772

Estamos usando AlwaysOn Availability Groupo recurso do SQL Server 2012. Backups de banco de dados completos regulares e backups de log de transações são feitos todos os dias no banco de dados secundário.

Eu li aqui fazer o backup do log de transações na réplica primária ou na réplica secundária marcará os logs de transações das duas réplicas como reutilizáveis. De qualquer forma, o tamanho do backup do log de transações é grande e pode ser reduzido usando o arquivo de redução:

insira a descrição da imagem aqui

Eu restaurei o banco de dados localmente e executei a operação de redução. O tamanho do arquivo de log foi reduzido para 160 MB.

Minha pergunta é em qual banco de dados devo realizar uma operação de redução no arquivo de log de transações (primário, secundário ou ambos)?


Eu acho que no passado por vários anos nenhum backup do arquivo de log é feito, então ele se tornou tão grande. Executando DBCC SQLPERF (LOGSPACE), posso ver que apenas 0.06%o arquivo é usado - não há sentido em manter um tamanho tão grande do arquivo de log. Em [sys].[database_files]eu verifico se max_sizeestá definido para com, -1então acho que quando precisar de mais espaço, ele terá. De qualquer forma, posso reduzi-lo para 5%, por exemplo, para evitar um crescimento futuro. Estou tentando encontrar alguma confirmação de que não é má ideia fazê-lo.growth65536


Na verdade, os backups (no banco de dados e nos arquivos de log) são executados apenas nos bancos de dados secundários, portanto, será mais fácil realizar a redução do arquivo neles, mas o tamanho do arquivo de log principal também será reduzido?

sql-server sql-server-2012
  • 3 3 respostas
  • 80907 Views

3 respostas

  • Voted
  1. Best Answer
    Remus Rusanu
    2014-08-13T23:56:43+08:002014-08-13T23:56:43+08:00

    Em AGs, as gravações só podem ocorrer no primário. As operações de redução são gravações. Portanto, você deve fazer o encolhimento no primário. Observe que a redução pode não diminuir tanto quanto você espera, seu teste no banco de dados restaurado provavelmente aproveitou o modelo de recuperação simples. Leia Como reduzir o log do SQL Server para obter mais informações.

    Não reduza para 160 MB. Determine por que o log cresceu para 121Gb para que não se repita (você tem uma suspeita, seria bom confirmar se possível). Dimensione o log para um tamanho apropriado para suas necessidades operacionais. O crescimento do log é um problema sério, ele não pode usar a inicialização instantânea do arquivo e toda a atividade do banco de dados será congelada enquanto o log cresce e está sendo inicializado em 0. Usuários e aplicativos odeiam quando isso ocorre. Se você entender o impacto e seus usuários estiverem bem, você pode reduzir uma vez para uma pequena quantidade (160 MB provavelmente é muito pequeno) e deixá-lo crescer até que se estabilize.

    • 23
  2. Denis P.
    2017-03-11T01:33:57+08:002017-03-11T01:33:57+08:00

    Podes tentar:

    1. O banco de dados em todos os servidores do Grupo de Disponibilidade deve estar no estado Sincronizado.
    2. Mova as páginas usadas para o início do log de transações, antes de reduzi-lo.
    3. Às vezes, o espaço livre de log disponível é de 99%, mas o SQL Server não pode liberar espaço não utilizado. Tente reinicializar cada servidor no Grupo de Disponibilidade por vez.
    4. Às vezes, você precisa fazer o backup e reduzir o log de transações 2 vezes antes do MS SQL Server liberar espaço livre (não é possível reduzir o arquivo de log (DB_Log) porque o arquivo de log lógico localizado no final do arquivo está em uso.).

    Tente este script:

        --Configura o banco de dados atual dentro da etapa de trabalho ou script
        --Check for Execute on Primary Only
        if (SELECIONAR função
            DE sys.dm_hadr_availability_replica_states AS a
            JOIN sys.availability_replicas AS b
                ATIVADO b.replica_id = a.replica_id
        WHERE b.replica_server_name = @@SERVERNAME) = 1
        COMEÇAR
            -- Use [test_db] -- Não funciona para MS SQL 2014, apenas comente esta linha e defina o banco de dados atual dentro da etapa ou script do trabalho
            -- 1) Bakup Trn
            BACKUP LOG [test_db] TO DISK = N'D:\MSSQL\Backup\test_db.trn' WITH NOFORMAT, INIT, NAME = N' Trn Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10
            -- 2) Mover páginas usadas
            DBCC SHRINKFILE (N'test_db_log' , 3000, NOTRUNCATE)
            -- 3) SHRINKFILE Log
            DBCC SHRINKFILE (N'test_db_log' , 3000)
        FIM
    
    • 7
  3. Valentin
    2022-07-07T22:34:36+08:002022-07-07T22:34:36+08:00

    NOTRUNCATE é aplicável apenas a arquivos de dados. Os arquivos de log não são afetados.

    Para obter mais informações relacionadas ao SHRINKFILE, verifique o documento oficial https://learn.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-shrinkfile-transact-sql?view=sql-server- versão 16

    • 0

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