Espelhamento em tempo real entre dois bancos de dados do sql server

1

Sou um programador c #, não um DBA e tive a (mal) fortuna de receber uma tarefa de administração de banco de dados. Então, tenha isso em mente ao responder a essa pergunta.

O que me pediram para fazer é criar um espelho bidirecional em tempo real entre dois bancos de dados com uma conexão de 10 Megabits entre eles. Então, quando muda, ele atualiza o outro. Essa não é uma tarefa padrão de espelhamento / failover de dados em que um DB é o mestre e o outro é um backup - ambos são ativos e precisam refletir instantaneamente as alterações feitas no outro.

Na minha cabeça isso soa como um pedido difícil, que pode até ser impossível - afinal, em um ambiente que muda rapidamente, com muitos usuários, isso vai exigir muitos recursos e criar bloqueios e filas de trabalhos em todo o lugar. .

É possível? Em caso afirmativo, alguém pode me dar algumas instruções básicas e / ou apontar-me em alguns lugares para iniciar minha leitura e pesquisa?

Felicidades, Matt

    
por Matt Thrower 04.01.2011 / 16:33

3 respostas

4

Você estaria analisando alguma forma de replicação - Mesclar ou transacional. Há muitos guias para escolher o tipo que melhor se adequa ao seu ambiente.

É claro que o que o negócio tende a exigir tende a ser impossível se tomado literalmente - por exemplo, eles sempre querem 100% consistente em todos os momentos, sem latência, sem penalidades para qualquer tipo de consulta. Você terá que gerenciar algumas expectativas. Nunca vai ser livre.

A replicação também tende a exigir alterações de esquema (como adicionar colunas rowguidcol a tabelas publicadas transacionalmente). Se você percorrer a rota de replicação, recomendo que você tente configurá-la em alguns bancos de dados de prática pequenos primeiro, para ter uma ideia de como ela funciona e problemas que você pode encontrar ao longo do caminho.

    
por 04.01.2011 / 16:39
0

Parece que você está após o Merge Replication. Não é simples, requer que seus aplicativos estejam cientes de como isso funciona.

A replicação de mesclagem geralmente leva a dores de cabeça e muitas madrugadas, prazos perdidos e tempo de inatividade, se você não tiver pessoas de DBA experientes à disposição para garantir a configuração correta. E mesmo assim - eu tive clientes relatando erros que "não podem acontecer" por causa de ambientes um pouco mal configurados.

Eu sugiro strongmente observar quais são os requisitos básicos, em vez de seguir cegamente o caminho da replicação de mesclagem.

Em minha experiência, descobri que normalmente sou capaz de obter log shipping e / ou SQL Mirroring na maioria dos casos.

    
por 04.01.2011 / 16:49
0

O que você precisa testar para alcançar este objetivo é de fato replicação, mas não de nenhuma forma: Replicação Peer-to-Peer transacional (peer to peer foi introduzido a partir das versões do sql 2005). Eu não estou dizendo que isso é sem problemas e vai ser fácil ... Você precisa de alguém que conheça o DBA, senão você será responsável por algo que você não conhece muito bem :)

A replicação

Mesclar pode mesclar as modificações feitas em cada servidor participante na replicação, mas não em tempo real. Cada servidor será autônomo até que os conflitos sejam resolvidos. Você tem horários quando a mesclagem ocorre. Não é tempo real.

Transmissão Transacional A replicação ponto a ponto oferece uma solução de alta disponibilidade e scale-out, mantendo cópias de dados em várias instâncias do servidor, também chamadas de nós. Com base na replicação transacional, a replicação ponto a ponto propaga mudanças consistentes em transações em quase em tempo real . Isso permite que os aplicativos que exigem operações de leitura de scale-out distribuam as leituras dos clientes em vários nós. Como os dados são mantidos nos nós quase em tempo real, a replicação ponto a ponto fornece redundância de dados, o que aumenta a disponibilidade de dados.

considere ler abaixo a documentação antes e boa sorte. Pode ser divertido :)

link

link

    
por 05.01.2011 / 09:56