Eu tenho uma tarefa de backup de banco de dados definida para usar backup completo com a opção Copiar apenas uma vez por dia. A cópia só está ativada porque, pelo que li, essa é a única maneira de fazer backup de um banco de dados conectado a um grupo de disponibilidade. Tenho backups de log acontecendo a cada 20 minutos usando as mesmas opções no mesmo AG. Qual é a melhor prática para truncar os logs de transações após a execução desses backups. O backup completo não está truncando, pois está usando apenas a mesma cópia para os backups de log. Eles estão crescendo fora de controle. Eu sei que posso usar DBCC SHRINKFILE, mas quanto mais eu leio sobre isso, mais perigoso parece. Existe algum outro método ou melhor prática?
Qualquer conselho é apreciado.
Serei o primeiro a admitir que a documentação não é muito clara sobre isso. Eles afirmam que você deve descarregar seus backups para os secundários, mas embora a maioria das declarações seja feita em um sentido geral, acho que elas realmente significam, especificamente, backups de log (e
copy_only
backups, se você precisar deles).Ocasionalmente, você deve executar backups completos no IMHO principal. A
copy_only
restrição é sobre backups completos, não backups de log, e se aplica apenas ao AFAIK secundário.Você não poderá usar o arquivo reduzido em seus logs de transação atuais porque eles estão cheios de atividades que tecnicamente não tiveram backup. Depois de fazer um
copy_only
backup completo (não) no primário e permitir que um backup de log seja executado, você poderá reduzir o arquivo de log manualmente. Atualmente, seus backups de log estão funcionando porque o banco de dados está definido como completo, mas eles continuam a crescer porque (presumivelmente) você nunca executou um backup completo adequado no primário.Esta deve ser uma operação única e você não deve reduzi-los muito; você precisa definir seu principal para fazer backup regularmente e precisa acomodar o maior conjunto de atividades que ocorrerá entre backups completos ou de log. Não vou continuar falando sobre como encolher arquivos apenas para que eles possam crescer novamente é um exercício inútil e garante um desempenho ruim, mas eu poderia. :-)
Não sou um grande fã de fazer backups em réplicas secundárias por alguns motivos, ou seja, você precisa reunir tudo e há implicações de licenciamento. Os backups geralmente não são uma grande quantidade de sobrecarga, então eu recomendo ainda fazê-los na réplica primária em sua maior parte.
Como Aaron aponta, até que você limpe o t-log corretamente, você não pode fazer coisas como tornar o arquivo do t-log menor. COPY_ONLY é apenas um backup completo, e você ainda precisa se certificar de que seu t-log não fique fora de controle. Esse é outro motivo pelo qual geralmente prefiro fazer backups na réplica primária.
Eu sei que você pode fazer um COPY_ONLY com um BACKUP LOG, mas pelas razões expostas acima, não sou um grande fã.
MS tem duas postagens de blog que você pode querer ler.
https://blogs.msdn.microsoft.com/alwaysonpro/2013/09/27/performing-transaction-log-backups-using-alwayson-availability-group-read-only-secondary-replicas-part-1/
https://blogs.msdn.microsoft.com/sql_pfe_blog/2016/10/19/performing-transaction-log-backups-using-alwayson-availability-group-read-only-secondary-replicas-part2/