Espelhamento geográfico do banco de dados DB

5

Um arquiteto de nossa empresa projetou uma solução baseada no espelhamento síncrono de edição SQL2005 Standard de 64 bits entre um servidor físico (4 quad core, 32GB RAM) e um servidor DR virtual (4 CPUs virtuais com 16GB de RAM) em dois geograficamente remotos. centros de dados com um servidor testemunha (1 CPU virtual). O armazenamento é de classe empresarial SAN em ambos os datacenters.

O aplicativo front-end é voltado para a Web com uso misto de leitura / gravação.

Como DBA (que não foi consultado no estágio de design), estou preocupado que essa configuração tenha sido projetada minimizando a redundância como critério principal e que não funcionará como uma solução do mundo real - latência e desempenho de rede da caixa virtual causará tempos de resposta inaceitáveis? E ainda pior desempenho se um failover for invocado.

Alguém tem experiência de uma configuração semelhante?

    
por SuperCoolMoss 12.06.2009 / 21:36

4 respostas

5

Embora a largura de banda da rede entre em grande escala, o fator número um absoluto a considerar é qual é a taxa de geração de logs de transação no principal?

Se o aplicativo e sua manutenção não gerarem nenhum log de transações, a largura de banda da rede será realmente irrelevante. Se ele gerar log, a largura de banda da rede deverá ser capaz de lidar com a quantidade de log gerada.

Para responder a sua pergunta real, sua configuração do h / w pode funcionar (problemas de rede à parte) se não houver uma grande carga de trabalho de OLTP no principal. Se houver, e você tiver núcleos de processador 4x4 gerando o log de transações, é provável que o seu servidor espelho não consiga acompanhar a repetição do log, não importa se a sua rede pode lidar com o tráfego de log. Na edição Standard, há um thread que processa o REDO do log no espelho - para que sua fila REDO fique bem grande sob carga pesada.

A fila REDO é a quantidade de log que foi endurecida no espelho, mas que ainda não foi reproduzida no banco de dados espelho - quanto maior, mais tempo será antes que o banco de dados espelhado atue como o principal no evento de um failover. Isso é especialmente problemático no Standard Edition, no qual você não tem recursos como refazer em paralelo e recuperação rápida (o banco de dados fica on-line após o REDO e antes do UNDO) estar disponível.

E, é claro, depois de um failover do principal para o espelho, não há como o espelho ser capaz de atender a mesma carga de trabalho do servidor principal - então você estará lá, mas possivelmente executando muito mais devagar.

Espero que isso ajude.

    
por 13.06.2009 / 05:12
5

A Microsoft publicou um informe oficial sobre espelhamento de banco de dados que inclui alguns bons exemplos de quanto impacto no desempenho que você obtém do espelhamento síncrono. Você está totalmente certo em que haverá um sucesso no desempenho. Faça um ping da caixa primária para o espelho do banco de dados e observe os tempos de ida e volta em milissegundos: essa será a sobrecarga mínima absoluta que o espelhamento síncrono adicionará. O ping nem sequer leva em conta quanto tempo o servidor remoto levaria para lidar com cada transação recebida - é puramente o tempo de latência da rede.

Quanto mais latência de rede você adicionar, mais lento será o desempenho e o hardware ficará inativo:

texto alternativo http://i.technet.microsoft.com/ Cc917681.dbm_fig09 (pt-br, TechNet.10) .gif

Sou um grande fã do espelhamento assíncrono, porque é uma maneira fácil de adicionar alguma proteção, mas a proteção pode ficar para trás. Isso é uma coisa boa e ruim: é bom porque pode lidar com a latência da rede, mas é ruim porque você pode perder todos os dados que não foram transferidos para o site de failover.

Além disso, ao projetar soluções de espelhamento de banco de dados (seja sincronização ou cancelamento), pense nas operações de manutenção de índice. Se você fizer reconstruções de índice semanalmente, elas eliminarão completamente seus backlogs de espelhamento, porque eles produzem tanta atividade registrada que precisa passar pela rede.

    
por 13.06.2009 / 02:39
0

Eu não tenho experiência direta, mas você deve verificar a documentação de latência do cluster do OpenVMS . Eles discutem as questões da distância extensivamente.

Algumas coisas a considerar, para fins de backup ativo / em espera, uma VM não é necessariamente uma má escolha. Se os discos da VM estiverem em uma SAN, você deverá ver um desempenho muito bom.

O espelhamento síncrono por longas distâncias é o que mais me preocuparia. As leituras não devem ser afetadas, mas cada gravação precisará aguardar a confirmação remota pronta antes de retornar.

Também devo adicionar - embora a documentação do OpenVMS fale muito sobre o OpenVMS especificamente, os problemas de latência são aplicáveis a qualquer tipo de aplicativo de espelhamento ou de armazenamento em cluster. Fazer "a matemática" sobre o atraso da velocidade da luz para a distância do link pode ser muito esclarecedor em termos de latência e capacidade de resposta em longas distâncias.

    
por 12.06.2009 / 22:22
0

Sua principal preocupação deve ser o link da rede. As SANs não devem oferecer muito de um gargalo, mas eu não vi nenhum dado de desempenho sobre elas, então não posso dizer sim ou não. Você deve perguntar ao arquiteto e a você mesmo as seguintes perguntas:

Dê uma boa olhada no link da rede

  • É estável?
  • Quanta perda de pacotes existe?
  • Quanta largura de banda está disponível?
  • Este é o link que todos os outros usam para navegar na Internet no trabalho?

Dê uma boa olhada na SANS

  • Quantos discos existem?
  • Como é a configuração do RAID?
  • Quantas outras aplicações compartilharão recursos?
  • Qual é a utilização atual da SAN?

Em seguida, analise sua inscrição

  • Quantas vezes você acessará os dados?
  • Qual será o tamanho do banco de dados? (Ballpark)
  • Com que frequência os índices serão criados?
  • Quanta carga suas consultas colocam na CPU, na memória e no disco?
  • Como os dados serão verificados nas extremidades remotas do link?

Sua configuração de RAM e processador é boa para um aplicativo corporativo. Esses tipos de perguntas são muito difíceis de quantificar, especialmente sem dados do mundo real.

Máquinas virtuais geralmente não são, IMO, o motivo de gargalos. Depende muito de como eles são configurados e da distribuição de recursos. AE / S é geralmente o maior fator individual na velocidade da VM, e essas SANs devem ajudar sua velocidade consideravelmente.

Cada aplicativo é diferente, mas você e seu arquiteto precisam se sentar e responder a essas perguntas (acima) juntos. E todos os outros que aparecem no processo.

E se tudo mais falhar, compre outro servidor e exclua a VM.

    
por 12.06.2009 / 22:23