none
Database Mirroring RRS feed

  • Pergunta

  • Pessoal,

    Em um servidor SQL 2012 temos uma base espelhada sem failover automático. Quem configurou a instância e as bases não configurou uma rotina de backup de log. O log de transações está com 200GB. Ao tentar reduzir o mesmo a partir de um backup de log o mesmo não diminui. Ao tentar alterar o recovery model para simple ocorre erro devido ao mirror estar ativo.

    Se eu pausar o database mirroring conseguirei alterar o recovery model e então realizar o shrink deste arquivo? Ou preciso remover o mirror e configurá-lo novamente após um shrink.Em suma a dúvida é, qual seria a melhor maneira de controlar o crescimento do log de transações em uma base com espelhamento configurado.

    Obrigado.


    Rafael Cardoso de Araújo MCTS - SQL Server 2005

    domingo, 5 de outubro de 2014 14:21

Respostas

  • Rafael,

    Você não precisa remover seu mirroring....

    Faça o backup do log e depois o shirink na base principal, se o arquivo de log não diminuir verifique se esta sincronizado com seu mirroring, se não tiver espaço na base espelhada para o arquivo de dados, o log não consegue ser aplicado e por isso o SQL Server não deixa descartar o log.


    Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote

    segunda-feira, 6 de outubro de 2014 11:34
  • Rafael,

    Só um detalhe muito importante, todo processo de Shrink Database deve ser muito bem planejado e pensado pois pode ocorrer risco de perda de dados.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 8 de outubro de 2014 18:15
    Moderador
  • Olá Rafael,

    Primeiro item a ser verificado no seu caso, é o motivo de você não estar conseguindo reutilizar o seu log. para isto, 

    SELECT name, log_reuse_wait_desc
    FROM sys.databases
    WHERE name = 'NomeDoSeuBanco'

    A coluna "log_reuse_wait_desc" vai te mostrar exatamente o motivo pelo qual vc não está conseguindo fazer reuso, ou mesmo truncar seu log de transações...

    Como seu caso é com o log, recomendo que NÃO FAÇA em hipótese alguma um shrink database, pois você pode ter sérios problemas com isso. A grande possibilidade neste caso de você não estar conseguindo replicar suas transações, e neste caso você verá como resultado da consulta:

     

    name log_reuse_wait_desc
    prm_aml71_Sicoob REPLICATION

    Como você tem um espelhamento, aconselho também que você não faça shrink constante do seu arquivo de log, mas controle do tamanho do log, por meio de backup de log mais frequentes... desta maneira, possivelmente ele não crescerá ao tamanho que está agora...

    Abraços,

    Edvaldo Castro


    Edvaldo Castro MCTS - SQL SERVER 2005/2008 MCITP:DBA SQL SERVER 2005/2008 CCSQLA

    segunda-feira, 13 de outubro de 2014 12:11

Todas as Respostas

  • Rafael,

    Você não precisa remover seu mirroring....

    Faça o backup do log e depois o shirink na base principal, se o arquivo de log não diminuir verifique se esta sincronizado com seu mirroring, se não tiver espaço na base espelhada para o arquivo de dados, o log não consegue ser aplicado e por isso o SQL Server não deixa descartar o log.


    Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote

    segunda-feira, 6 de outubro de 2014 11:34
  • Tulio,

    Muito Obrigado.

    Vou verificar esta situação e dou um feedback.

    Abs


    Rafael Cardoso de Araújo MCTS - SQL Server 2005

    segunda-feira, 6 de outubro de 2014 12:31
  • Rafael,

    Só um detalhe muito importante, todo processo de Shrink Database deve ser muito bem planejado e pensado pois pode ocorrer risco de perda de dados.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 8 de outubro de 2014 18:15
    Moderador
  • Olá Rafael,

    Primeiro item a ser verificado no seu caso, é o motivo de você não estar conseguindo reutilizar o seu log. para isto, 

    SELECT name, log_reuse_wait_desc
    FROM sys.databases
    WHERE name = 'NomeDoSeuBanco'

    A coluna "log_reuse_wait_desc" vai te mostrar exatamente o motivo pelo qual vc não está conseguindo fazer reuso, ou mesmo truncar seu log de transações...

    Como seu caso é com o log, recomendo que NÃO FAÇA em hipótese alguma um shrink database, pois você pode ter sérios problemas com isso. A grande possibilidade neste caso de você não estar conseguindo replicar suas transações, e neste caso você verá como resultado da consulta:

     

    name log_reuse_wait_desc
    prm_aml71_Sicoob REPLICATION

    Como você tem um espelhamento, aconselho também que você não faça shrink constante do seu arquivo de log, mas controle do tamanho do log, por meio de backup de log mais frequentes... desta maneira, possivelmente ele não crescerá ao tamanho que está agora...

    Abraços,

    Edvaldo Castro


    Edvaldo Castro MCTS - SQL SERVER 2005/2008 MCITP:DBA SQL SERVER 2005/2008 CCSQLA

    segunda-feira, 13 de outubro de 2014 12:11
  • Pessoal,

    Obrigado pelas dicas.

    Não existia backup de log configurado e o arquivo de log começou a crescer inadvertidamente. Logo a replica secundária ficou como restoring e o log continuou crescendo muito mesmo em momentos que não existia muita atividade na base.

    Agendamos uma parada, removemos a base do grupo de disponibilidade e o refizemos, agora com uma rotina de backup de log periódica.

    Isto resolveu o problema e o crescimento do log ficou normalizado.

    No entanto não sabemos o que gerou a queda da réplica secundária e nem o que estava gerando o crescimento inadvertido do log.


    Rafael Cardoso de Araújo MCTS - SQL Server 2005

    segunda-feira, 13 de outubro de 2014 16:51