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 / 212435
Accepted
Heinzi
Heinzi
Asked: 2018-07-18 05:03:29 +0800 CST2018-07-18 05:03:29 +0800 CST 2018-07-18 05:03:29 +0800 CST

A resiliência a falhas do SQL Server pode ser melhorada?

  • 772

Temos PCs com SQL Server (2008 SP4 e 2016 SP1) que perdem energia regularmente. Obviamente, isso às vezes leva à corrupção (índice) do banco de dados SQL Server, que precisamos restaurar posteriormente.

Estou ciente de que o SQL Server não foi projetado para esses cenários e a solução correta é corrigir a causa da perda de energia (mais sobre isso abaixo, se você estiver curioso). No entanto, existem opções de ajuste no SQL Server que eu possa definir para reduzir o risco de corrupção do banco de dados na perda de energia ?


Background: O "PC" é um tablet Windows montado em uma empilhadeira. Quando o usuário desliga a empilhadeira, o tablet fica sem energia. Tentamos ensinar os usuários a desligar corretamente o Windows antes de desligar a empilhadeira, mas falhamos (provavelmente porque apenas desligá-lo "funciona" na maioria das vezes). No momento, também estamos investigando outras opções, como adicionar um no-break que avisa o tablet para desligar em caso de perda de energia.

sql-server crash
  • 5 5 respostas
  • 4218 Views

5 respostas

  • Voted
  1. Best Answer
    Sean Gallardy
    2018-07-18T06:10:19+08:002018-07-18T06:10:19+08:00

    Estou ciente de que o SQL Server não foi projetado para tais cenários e a solução correta é corrigir a causa da perda de energia […]

    Na verdade, ele foi projetado para lidar com perda de energia, é por isso que existem coisas como registro antecipado de gravação (WAL) e recuperação de falhas na inicialização (ou como você quiser chamá-lo). Uma das maneiras de fazer isso é optar por não armazenar em cache as gravações, o que parece ser o que o tablet está fazendo, daí a corrupção.

    No entanto, existem opções de ajuste no SQL Server que eu possa definir para reduzir o risco de corrupção do banco de dados em caso de perda de energia?

    Não, o SQL Server está fazendo o que deveria. Você deve procurar fora do SQL Server (configurações do Windows para armazenamento em cache da unidade [que o SQL deseja desativar, mas não podemos forçá-lo], atualizações de hardware/firmware etc.) barato que poderia resolver os sintomas (o problema real é provavelmente algum tipo de cache ou gravação com bateria que não é realmente apoiada).

    • 31
  2. Brent Ozar
    2018-07-18T06:13:25+08:002018-07-18T06:13:25+08:00

    Se o tablet tiver uma bateria funcionando , você poderá configurar o Windows para desligar quando a bateria estiver fraca .

    Se o tablet tiver uma bateria que não funciona , considere substituir a bateria. (Eu tive laptops assim - você ficaria surpreso com o quão baratas as baterias de reposição podem ser no eBay. Elas não funcionam tão bem quanto OEM, mas ei, qualquer coisa é melhor do que nada nesta situação.)

    Se o tablet não tiver recursos de bateria , considere adicionar uma pequena fonte de alimentação ininterrupta (UPS) com saídas USB que possam se comunicar com o Windows para informá-lo quando estiver funcionando com energia da bateria. (Por exemplo, eu tenho minha própria área de trabalho configurada para desligar quando o UPS estiver com pouca bateria - dessa forma, ele desligará na falta de energia mesmo se eu não estiver em casa.)

    Se nenhuma dessas opções for uma opção, você está meio sem sorte. É um white paper antigo, mas o SQL Server 2000 I/O Basics da Microsoft explica basicamente que você precisa de um subsistema de I/O que possa lidar com interrupções de energia normalmente.

    Existem opções que você pode usar para aumentar o risco - como Durabilidade Atrasada ou tabelas somente de memória (não duráveis) - mas, por padrão, o SQL Server já está fazendo o possível para maximizar a confiabilidade a cada gravação no log de transações. Se mesmo as gravações do log de transações não puderem ser garantidas devido a quedas de energia aleatórias, gaste os US$ 100 em uma bateria de UPS.

    • 30
  3. Marbry Hardin
    2018-07-18T12:49:10+08:002018-07-18T12:49:10+08:00

    Supondo que você tenha um banco de dados local na empilhadeira em vez de um servidor por causa de conexões sem fio irregulares? Obviamente, tirar o SQL da empilhadeira seria a solução preferível.

    De qualquer forma, como Brent sugeriu, configure o tablet para desligar sozinho após x minutos com a bateria ou algum critério semelhante.

    Caso contrário, um pequeno UPS que pode iniciar um desligamento normal provavelmente será sua melhor aposta nesse caso. Confiar nos usuários para coisas assim é pedir para falhar.

    • 6
  4. David Williams
    2018-07-18T11:38:13+08:002018-07-18T11:38:13+08:00

    O sistema operacional subjacente deve garantir uma gravação bem-sucedida ou um erro é retornado. O sistema operacional, por sua vez, depende de drivers que, por sua vez, dependem de firmware que depende do hardware. Se os drivers, firmware ou hardware estiverem, não há nada que o Windows ou o SQL Server possam fazer sobre isso.

    É por isso que você precisa verificar com o fabricante do driver/firmware/hardware.

    Além disso, a ordem de gravação deve ser garantida em todas as camadas, para que isso também precise ser verificado.

    Mesmo os caches com bateria podem falhar, por exemplo, durante as tempestades de Nova York, alguns data centers não estavam acessíveis por dias e as baterias teriam se esgotado, potencialmente perdendo gravações comutadas

    https://www.postgresql.org/docs/devel/static/wal-reliability.html

    https://brad.livejournal.com/2116715.html

    http://rhaas.blogspot.com/2010/10/wal-reliability.html?m=1

    • 2
  5. GB540
    2018-07-18T16:53:51+08:002018-07-18T16:53:51+08:00

    Para expandir as outras respostas:

    Primeiro, tente tirar o SQL da empilhadeira, se possível. Pense que a recuperação de uma perda de energia é ruim, tente fazê-lo depois que o laptop foi atropelado por mais de 7.000 libras. Com horas de atividade de depósito, sem backup...

    Segundo, um mecanismo para o laptop fazer um desligamento automático após x tempo na bateria deve estar em vigor de qualquer maneira.

    Terceiro, conectar o laptop a uma alimentação de energia não comutada na empilhadeira seria uma opção? Certifique-se de considerar os regulamentos de segurança (o ambiente pode exigir tudo desligado com a chave da empilhadeira) e quanto tempo a empilhadeira fica entre os usos (especialmente nos finais de semana e feriados) para evitar drenar a bateria da máquina.

    • 1

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