Espelhamento SQL ou envio de log - qual tem o menor impacto em um banco de dados replicado?

4

Estamos planejando um servidor que seja um SQL2005 Enterprise 64bit em cluster com um banco de dados do qual um subconjunto de tabelas seja replicado de uma forma, por meio de replicação transacional, para um único assinante localizado em um centro de dados diferente para fins de relatório. O distribuidor é co-localizado com o editor no cluster. Uma SAN é usada para armazenamento.

Além do armazenamento em cluster, o cliente deseja resiliência para o banco de dados do editor no caso de uma falha na SAN. Eles têm uma segunda SAN menor (de uma perspectiva de desempenho) disponível (infelizmente, para uma perspectiva de DR) no mesmo data center. Isso terá um único servidor de 32 bits com o SQL2005 32bit Enterprise anexado. O cliente está ciente de que, no caso de um incidente de SAN, não terá mais clustering ou replicação e um nível menor de desempenho.

Estou debatendo se devo usar o envio de log ou o espelhamento de banco de dados para fornecer o DR do banco de dados. Estamos usando o Quest LiteSpeed para backups e podemos usá-lo para enviar backups de log de transação compactados.

As duas tecnologias (espelhamento ou envio de log) têm um impacto menor no banco de dados do editor em relação às perspectivas de desempenho e latência de replicação?

    
por SuperCoolMoss 31.05.2009 / 18:06

1 resposta

3

Depende. ha ha.

Você também precisa pensar sobre quais requisitos de perda de dados o cliente deseja para o editor e se já está realizando backups de log (imagino que você esteja).

O espelhamento de banco de dados pode ser definido como zero perda de dados (contanto que o espelhamento permaneça sincronizado), mas dependendo da taxa de geração do log de transações e da largura de banda disponível, aguardando que os registros sejam espelhados no espelho antes as transações podem confirmar no principal podem diminuir a carga de trabalho. Depende de que tipo de transações você está fazendo (longo ou curto) se isso terá um efeito perceptível no tempo total de resposta.

Com o envio de log, é apenas backup-copy-restore, repeat. Portanto, se você já estiver fazendo backups de log, não afetará o desempenho. Se você não estiver acostumado a fazer backups de log, poderá encontrar problemas com o gerenciamento do tamanho do log de transações.

Lembre-se de que o espelhamento requer o modelo de recuperação FULL, para que ele possa afetar a manutenção do banco de dados, especialmente se você estiver acostumado a usar o modelo de recuperação BULK_LOGGED. Dependendo da largura de banda da rede disponível, isso também pode levar a problemas de gerenciamento de tamanho de log.

Ambos exigem largura de banda de rede, mas de maneiras diferentes. O envio de logs é uma explosão toda vez que um backup de log é copiado, o espelhamento de banco de dados é mais sustentado, obviamente dependendo da taxa de geração de log novamente. Eu precisaria saber muito mais para saber se a quantidade de largura de banda extra necessária para qualquer um deles afetaria o movimento dos dados no fluxo de replicação e afetaria a latência lá.

Com o envio de logs, você teria que fazer failover manualmente para o envio de logs secundário no caso de uma falha, e existe a possibilidade de perda de dados (todos os dados desde o último backup de log copiado do primário). E então você precisaria dar o pontapé inicial novamente.

Com o espelhamento de banco de dados, você pode configurá-lo para failover automaticamente e pode definir especificamente o parceiro de failover nas tarefas do agente de replicação para inicializar automaticamente no novo principal (que também é o novo editor). A dificuldade é garantir que o failover de espelhamento de banco de dados não ocorra antes que o failover de cluster local aconteça. Você pode fazer isso alterando o valor de tempo limite do parceiro de espelhamento. Eu escrevi sobre isso em link .

Eu escrevi um whitepaper para a Microsoft que descreve como usar o espelhamento e a replicação transacional em conjunto: veja link .

Se todas as outras coisas forem iguais, recomendo o espelhamento de banco de dados devido à facilidade de gerenciamento com potencial para menos dataloss. Você pode ter alguns outros requisitos que eu não estou ciente de que impediria isso.

Espero que isso ajude.

    
por 31.05.2009 / 19:22