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 / 340386
Accepted
Preety
Preety
Asked: 2024-06-20 19:42:24 +0800 CST2024-06-20 19:42:24 +0800 CST 2024-06-20 19:42:24 +0800 CST

Replicação Transacional - como configurar alertas/notificações para enviar alertas antes que o espaço do log de transações esteja cheio em um Publicador?

  • 772

Estou configurando a replicação transacional em meu servidor 2008R2 para o servidor de distribuição 2012 para o servidor Assinante 2012. Todos os três servidores estão em modo de recuperação COMPLETO. O backup do log é feito a cada 15 minutos e o backup completo é feito diariamente, todos os dias, em todos os três bancos de dados do servidor usados ​​na replicação. Queremos usar o assinante como servidor de relatórios. O Publisher é nosso principal banco de dados OLTP.

Como posso receber um alerta antes que o espaço t-log do meu editor esteja cheio devido a qualquer problema na replicação. Não quero que meu editor caia de forma alguma. Os t-logs são apoiados a cada 15 minutos no editor. Isso significaria que todos os VLFs que são lidos ativamente pelo leitor de log podem ser copiados quando o backup do log for feito? quais alertas devo usar para me informar que o espaço de log está ficando cheio no editor? Existe algum script que também possa interromper o agente de replicação/leitor de log quando o espaço de log estiver ficando perigosamente grande no editor?

Posso remover a replicação e restabelecer (com um novo instantâneo) quando a replicação estiver causando problemas e criando logs no meu editor. Mas não quero esperar que essa situação aconteça (o espaço de log está cheio no editor) e quero tomar medidas apenas antes - como remover a replicação antes apenas quando o espaço de log atingir uma determinada porcentagem. Como eu posso fazer isso?

Além disso, qual deveria ser minha estratégia para interromper e remover a replicação? Seguirei a documentação da Microsoft para remover a replicação, mas não estou claro se devo interromper o agente Log Reader e o agente de distribuição antes de remover a replicação.

sql-server
  • 2 2 respostas
  • 175 Views

2 respostas

  • Voted
  1. Best Answer
    Aleksey Vitsko
    2024-06-21T00:03:03+08:002024-06-21T00:03:03+08:00

    Como posso receber um alerta antes que o espaço t-log do meu editor esteja cheio devido a qualquer problema na replicação

    quais alertas devo usar para me informar que o espaço de log está ficando cheio no editor?

    Você pode usar o script abaixo para verificar se o arquivo de log está acima de determinado limite de tamanho, mais de 90% cheio e enviar notificação por e-mail.

    create table #LogSpace (
        [Database_Name]             nvarchar(150),
        Log_Size_MB                 decimal(18,2),
        Log_Space_Used_Pct          decimal(5,2),
        [Status]                    int)
    
    
    -- collect log space information
    declare 
        @SQL                        varchar(100),
        @Log_Size_MB                decimal(18,2),
        @Log_Space_Used_Pct         decimal(5,2)
        @Log_Reuse_Wait_Desc        varchar(60)
    
    set @SQL = 'dbcc sqlperf(logspace)'
    
    insert into #LogSpace
    exec (@SQL)
    
    
    -- get log size and fullness for your database in question
    select 
        @Log_Size_MB =  Log_Size_MB,
        @Log_Space_Used_Pct = Log_Space_Used_Pct
    from #LogSpace
    where [Database_Name] = 'YourDatabase'
    
    
    -- why log is not truncating ?
    select 
        @Log_Reuse_Wait_Desc = log_reuse_wait_desc
    from sys.databases
    where [name] = 'YourDatabase'
    
    
    -- check if log file grew more than X number of Megabytes and is more than 90% full
    if (
        @Log_Size_MB > 10000                        -- specify log size in MB, exceeding which you would start worrying about
        and @Log_Space_Used_Pct > 90                -- more than 90% full
        and @Log_Reuse_Wait_Desc  = 'REPLICATION'   -- this is optional line
        ) begin
    
        -- fire an email alert
        exec msdb.dbo.sp_send_dbmail 
                --@profile_name = 'your mail profile name',         -- this is optional, depending on your db mail config
                @recipients = '[email protected]', 
                @from_address = '[email protected]', 
                @reply_to = '[email protected]', 
                @subject = 'subject', 
                @body = 'transaction log getting full'
    end
    

    Você pode agendar o script acima no SQL Agent para ser executado a cada, digamos, 15 minutos para verificar se o log está ficando cheio, notificá-lo por e-mail, para que você possa agir.

    Existe algum script que também possa interromper o agente de replicação/leitor de log quando o espaço de log estiver ficando perigosamente grande no editor?

    Consulte outra resposta - remova manualmente a replicação.

    • 3
  2. SqlWorldWide
    2024-06-20T22:19:31+08:002024-06-20T22:19:31+08:00

    Como posso receber um alerta antes que o espaço t-log do meu editor esteja cheio devido a qualquer problema na replicação.

    Depende de como o crescimento do arquivo de log de transações está configurado.

    Se você aumentou previamente seus arquivos de log de transações e limitou o tamanho do arquivo, será necessário monitorar a porcentagem do arquivo de log usado e definir um alerta em um limite confortável. Você pode usar DBCC SQLPERF (Transact-SQL) para monitorar o uso do espaço de log para todos os bancos de dados. Outra solução é usar Get-DbaDbSpace de dbatools . Existem muitas outras soluções disponíveis para fazer o mesmo.

    Se você permitir o crescimento do arquivo, deverá monitorar o espaço livre na unidade (onde reside o arquivo de log). Novamente, você pode usar o comando dbatools Get-DbaDiskSpace ou outras soluções para configurar um alerta.

    Existe algum script que também possa interromper o agente de replicação/leitor de log quando o espaço de log estiver ficando perigosamente grande no editor?

    Parar o leitor de log não irá ajudá-lo neste caso. Os logs de transações não serão truncados, a menos que o agente leitor de log processe esses registros (enviando-os para o banco de dados de distribuição). Você pode remover a replicação seguindo Remover manualmente a replicação no SQL Server .

    Além disso, qual deveria ser minha estratégia para interromper e remover a replicação? Seguirei a documentação da Microsoft para remover a replicação, mas não estou claro se devo interromper o agente Log Reader e o agente de distribuição antes de remover a replicação.

    Eu respondi na seção anterior. Como posso remover permanentemente a replicação por script se só tenho acesso ao assinante? tem algumas outras opções.

    Por outro lado, dependendo do requisito de relatório, você considerou o envio de logs como uma solução?

    • 2

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