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 / 285887
Accepted
D-K
D-K
Asked: 2021-02-24 07:01:24 +0800 CST2021-02-24 07:01:24 +0800 CST 2021-02-24 07:01:24 +0800 CST

Você pode alternar o modo de recuperação para simples de completo em uma configuração de cluster Always ON?

  • 772

Preciso de ajuda para entender minhas opções. Dado:

  • Configuração de cluster do SQL Server que é mantida por um DBA.
  • O sistema ainda NÃO está em produção (não foi entregue ao cliente).
  • Push inicial de alto volume de dados que NÃO tem interrupções por dias
  • Posso parar e iniciar o push de dados e alterar o banco de dados a qualquer momento. Basicamente eu posso parar todas as entradas.

Eu recomendo ao nosso DBA que mudemos para o modo simples porque estamos vendo dentro do monitor de atividade uma pilha de consultas em estado de espera que eventualmente causa erros para os servidores de aplicativos.

Nunca tive esse problema antes e em processo de eliminação vejo que estamos no modo de recuperação FULL ao invés de SIMPLE.

Pedi para mudarmos para SIMPLE de FULL e esta é a resposta que recebo. Existe outra opção que talvez o DBA não esteja ciente?

Como posso ajudar?

"Não podemos mudar para simples usando AlwaysOn no SQL."

Posso desativar o AlwaysOn para a fase de carregamento inicial ou estou sem sorte?

--- Adição ---- insira a descrição da imagem aqui

sql-server sql-server-2019
  • 1 1 respostas
  • 1217 Views

1 respostas

  • Voted
  1. Best Answer
    Josh Darnell
    2021-02-24T07:11:27+08:002021-02-24T07:11:27+08:00

    O DBA está correto - se o banco de dados fizer parte de um Grupo de Disponibilidade (AG), ele deverá estar no modelo de recuperação FULL. Isso ocorre devido à maneira como os AGs funcionam - eles enviam blocos de log de transações do servidor primário para o(s) servidor(es) secundário(s). Portanto, todos os registros de log detalhados fornecidos pelo modelo de recuperação FULL são necessários.

    Você pode remover o banco de dados do AG durante o carregamento de dados inicial.

    ALTER AVAILABILITY GROUP [YourAG]
    REMOVE DATABASE [YourDatabaseName];
    

    No entanto, a desvantagem (potencialmente importante) disso é que o secundário precisará ser "reinicializado" assim que o carregamento de dados for concluído. Isso significa usar a "propagação automática" para replicar todo o banco de dados primário para o(s) servidor(es) secundário(s) ( Habilitar a propagação automática em um grupo de disponibilidade existente ) ou fazer um backup do primário, restaurá-lo em cada um dos secundários e, em seguida, re-adicionando o banco de dados ao AG ( Preparar um banco de dados secundário para um grupo de disponibilidade Always On ).

    Dependendo do tamanho do banco de dados após o carregamento de dados, isso pode não ser "grande coisa" ou pode ser um verdadeiro aborrecimento. Mas sim, essa é a outra opção disponível para o DBA basicamente.


    Aliás, quanto a isso:

    estamos vendo no monitor de atividade uma pilha de consultas em estado de espera

    Você não mencionou a espera real, mas a menos que seja HADR_SYNC_COMMITou WRITELOG, remover do AG / alternar para a recuperação SIMPLE pode não ajudar.

    Mesmo que essas sejam suas esperas, esteja ciente de que você está tratando um sintoma. Se o aplicativo precisar despejar dados como esse quando estiver no ar, você provavelmente não poderá usar o AG ou os modelos de recuperação.

    Talvez seu aplicativo possa reduzir a quantidade de dados de log gerados agrupando algumas de suas transações em lotes maiores .

    Ou talvez você precise investigar a velocidade da rede entre os servidores primário e secundário (tendo em mente como medir corretamente a taxa de transferência do AG ).

    Esses são apenas alguns remédios possíveis. Tudo isso é apenas para dizer que é melhor, a longo prazo, descobrir a causa raiz desse negócio de "estado de espera que leva a erros de aplicativo" agora e não mais tarde.


    As esperas que você mostrou são esperas de bloqueio, indicativas de uma cadeia de bloqueio clássica.

    Observe que a coluna "Bloqueado por" é 131 para todas as linhas na captura de tela. Isso é um "ID de sessão" (primeira coluna do Monitor de Atividade). Continue seguindo essa cadeia até encontrar o bloqueador de leads ("Bloqueado por" ficará em branco) e olhe na coluna "Tipo de espera" para ver o que está esperando. É aí que você deve concentrar seus esforços para desvendar a causa raiz.


    Sobre esta atualização:

    Aparentemente, o padrão para fazer um backup do diretório de log foi definido como um valor grande. Quando isso começou para limpar o log (coisa de log incremental?), isso faz com que todo o sistema gagueje e causou o problema. Essa é a minha teoria atual. Agora ele mudou para 5 minutos e até agora, tudo o que vemos é uma gagueira e recuperação do nosso lado. Eu faço meu engenheiro coletar mais dados reais (o bloco real, se ele puder pegá-lo).

    Parece que o aumento do uso de recursos quando ocorrem backups de log de transações está interferindo em sua carga de trabalho. Uma solução para isso seria executar logs de transações com mais frequência, como o DBA fazia. Você pode até executar os backups a cada minuto se eles terminarem rápido o suficiente.

    Dito isso, a solução original de comutação para recuperação SIMPLE é uma opção viável se for viável reinicializar o secundário após a conclusão da carga inicial.

    • 7

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