Estamos usando AlwaysOn Availability Group
o 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:
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_size
está definido para com, -1
entã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.growth
65536
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?
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.
Podes tentar:
Tente este script:
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