Este tópico explica como reduzir o log de transações de uma instância do ApsaraDB RDS for SQL Server com espaço de log suficiente ou insuficiente.
Antes de executar operações de risco, como modificar uma instância ou dados, verifique se a instância possui recursos robustos de recuperação de desastres e tolerância a falhas para proteger seus dados.
Ao modificar configurações ou dados de uma instância, como ECS ou ApsaraDB RDS, crie um snapshot ou habilite um recurso como backup de log para a instância do ApsaraDB RDS.
Caso tenha concedido permissões ou enviado informações de segurança, como nomes de usuário e senhas, na plataforma Alibaba Cloud, altere-as imediatamente.
Espaço suficiente no log
Se houver espaço suficiente no log, use o recurso Backup and shrink transaction logs no console do ApsaraDB RDS. Esse recurso executa automaticamente um backup e uma redução de log, otimizando o tamanho do arquivo de log de transações.
Durante a redução do log de transações, o sistema executa automaticamente um backup de log. Isso arquiva o log de transações e aumenta a probabilidade de limpeza bem-sucedida do log local.
-
Antes de reduzir o log de transações, verifique o status de espera de reutilização de log do banco de dados.
Se o status for NOTHING, reduza o log. O tamanho passível de redução depende do tamanho do arquivo de log virtual (VLF) reutilizável no final do log de transações. Caso uma transação ativa impeça que o VLF no final do log seja definido como reutilizável, execute outro log backup. Em seguida, aguarde a conclusão da transação ativa e verifique novamente o status de espera de reutilização até que ele se torne NOTHING.
Se o status for LOG_BACKUP, a operação de redução poderá falhar devido a uma transação ativa. Nesse caso, execute a operação de redução várias vezes até obter êxito.
Acesse a página Database Management > View Details para view the log file reuse status (log_reuse_wait_desc).
Acesse a página Instances. Na barra de navegação superior, selecione a região onde reside a instância RDS. Localize a instância RDS e clique em ID da instância.
No painel de navegação à esquerda, clique em Backup and Restoration.
Clique em Backup and shrink transaction logs e depois em OK.
-
Após a conclusão da operação de redução, acesse a página Monitoring and alerts da instância para visualizar o uso mais recente do espaço de log.
Na aba Standard Monitoring, localize o gráfico Instance Space e visualize a métrica
sqlserver.log_sizepara confirmar a redução do espaço de log.
Perguntas frequentes
P: O que fazer se o botão Backup and shrink transaction logs não responder?
-
R: Geralmente, esse problema ocorre pelos seguintes motivos:
O status de espera de reutilização de log não atende às condições de redução: Se o status
log_reuse_wait_descdo banco de dados não forNOTHING, os arquivos de log virtuais (VLFs) no arquivo de log não poderão ser marcados como reutilizáveis, impedindo a operação de redução. Acesse a página Database Management > View Details para view the log file reuse status (log_reuse_wait_desc). Tente realizar a operação novamente após o status se tornarNOTHING.Uma transação ativa impede a liberação do VLF no final do log: Mesmo que o status
log_reuse_wait_descsejaNOTHING, a operação de redução não liberará o espaço se uma transação ativa estiver usando o VLF no final do log. Aguarde a conclusão da transação ativa, execute um log backup novamente e clique em Backup and shrink transaction logs.
Espaço insuficiente no log
Se o servidor de banco de dados relatar que o "log de transações está cheio", não será possível reduzir o log de transações pelo console. Execute instruções SQL para realizar essa tarefa. A redução de um log de transações exige algum espaço livre no log. Quando o log está cheio, a única opção é quebrar a cadeia de logs executando comandos.
Antes de começar
As operações a seguir destinam-se apenas a situações de emergência. Primeiro, expand the disk space.
Como regra geral, não altere o modelo de recuperação do banco de dados para SIMPLE. Essa ação quebra a cadeia de backups do ApsaraDB RDS e causa falha em todas as tarefas subsequentes de restauração point-in-time.
Para instâncias da edição High-availability (HA), desabilite o espelhamento de banco de dados antes de alterar o modelo de recuperação do banco de dados.
Ao executar essas operações em uma emergência, você reconhece e aceita os riscos associados. Prossiga com cautela.
Procedimento
Instâncias da edição Basic
-- Set the database recovery model to SIMPLE to break the database log chain.
ALTER DATABASE [DatabaseName] SET RECOVERY SIMPLE;
Instâncias da edição High-availability (HA)
Nas instâncias da edição High-availability (HA), o espelhamento de banco de dados está ativo, bloqueando operações diretas de ALTER DATABASE. Siga as etapas abaixo:
-- Disable database mirroring first.
ALTER DATABASE [DatabaseName] SET PARTNER OFF;
GO
-- Set the database recovery model to SIMPLE to break the database log chain.
ALTER DATABASE [DatabaseName] SET RECOVERY SIMPLE;
-- Database mirroring is restored automatically. No manual setup is required.
Embora o sistema redefina imediatamente o modelo de recuperação para FULL e não o altere permanentemente para SIMPLE, o comando ainda quebra a cadeia de logs com êxito. O erro resultante não afeta esse resultado e pode ser ignorado.
Msg 50000, Level 16, State 1, Procedure ******, Line 46
Login User [Test11] can't change database [TestDb] recovery model.
Msg 3609, Level 16, State 2, Line 2
The transaction ended in the trigger. The batch has been aborted.
Solução de problemas
-
P: Após executar o comando
ALTER DATABASE [TestDb] SET RECOVERY SIMPLE, aparece uma mensagem de erro semelhante à seguinte. Como corrigir isso?Msg 1468, Level 16, State 2, Line 1 The operation cannot be performed on database "zhttestdb" because it is involved in a database mirroring session or an availability group. Some operations are not allowed on a database that is participating in a database mirroring session or in an availability group. Msg 5069, Level 16, State 1, Line 1 ALTER DATABASE statement failed. R: As instâncias da edição High-availability (HA) do ApsaraDB RDS for SQL Server usam espelhamento de banco de dados, proibindo operações
ALTERno modelo de recuperação. Siga as instruções em Procedure para resolver o problema.
Referências
Para expandir o espaço de armazenamento, consulte Change Configuration.
Para gerenciar bancos de dados com comandos SQL, consulte Manage databases by using SQL commands.
Para visualizar o uso de espaço e solucionar problemas relacionados, consulte Troubleshoot insufficient space issues for ApsaraDB RDS for SQL Server.
Para resolver problemas de disco cheio no banco de dados, consulte Resolve a full disk space issue for SQL Server.