Melhore os cenários de failover automático no SQL Server 2008

1

Temos o SQL Server 2008 configurado com um servidor principal, espelho e monitor, o espelho é sincronizado e configurado para failover automático. Vimos recentemente uma situação em que ficamos sem espaço no servidor principal, o que aleijou o aplicativo usando o banco de dados, mas não causou um failover, embora cada consulta executada pelo aplicativo tenha sido respondida com um erro:

The transaction log for database 'XXXX' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases

Estou tentando descobrir por que o failover não ocorreu. É porque o espelho / testemunha ainda considera que o servidor está ativo, pois está respondendo a pings e consultas (tudo isso com um erro)? Ou é algo que nós configuramos mal? Precisamos adicionar código à nossa camada de aplicativo para detectar erros de banco de dados como este e iniciar um failover?

Em paralelo, estamos melhorando nosso monitoramento para tentar evitar problemas de espaço em disco, mas ainda gostaríamos de melhorar a confiabilidade do failover automático.

    
por RRR 29.05.2012 / 11:59

2 respostas

1

Nesse cenário, seu banco de dados não estava "inativo", apenas tinha um preenchimento de log devido a problemas de espaço ou alocação. O failover só ocorrerá se o banco de dados / instância principal ficar off-line e, em seguida, a testemunha e o espelho puderem decidir que o espelho deve ser o novo primário.

Você pode executar um script periodicamente (ou usar um Alerta SQL) que verifique essa condição que iniciará um failover, mas isso pode ser um pouco complicado.

    
por 29.05.2012 / 17:23
0

Você configurou incorretamente, mas não no SQL Server.

Erros: * Uso de arquivos em expansão sem observar o nível do SO (espaço disponível em disco) * Obviamente que não há procedimentos de gerenciamento de operações no momento em que o disco começa a entrar em um nível crítico definido. * Então, perguntando por que as coisas falham.

Basicamente: Um subsistema discc em um banco de dados NUNCA está cheio - o erro não era "disco completo", era "administrador incompetente".

Pode-se argumentar se o SQL Server travou, mas, dado que este é um senario que é totalmente um problema de operar os servidores - desculpe, eu não espero que o SQ LServer lide com isso.

Por exemplo, os bancos de dados de carga de produção nunca expandem arquivos;) Dimensione-os corretamente, redimensione-os, mas nunca os expanda automaticamente.

    
por 29.05.2012 / 17:38