Throwback Thursday – Replicação
Oi, oi gente! 🙂
Contradizendo meu primeiro post ‘TARDAMOS, MAS NÃO FALHAMOS’, falhei! Mas hoje é dia do tradicional #tbt e vou me aproveitar do movimento das massas para voltar. Partindo de uma necessidade, resolvi criar uma série e farei alguns posts sobre o tema.
Há algum tempo tive oportunidade de trabalhar num ambiente com replicação e era assustador quando a sincronização parava (acontecia com frequência). Na época não dei muita atenção por pensar ser algo ultrapassado (leiga como sou), mas a tecnologia continua sendo muito utilizada e em alguns casos é a única opção.
Disponível desde o SQL Server 6.0, a Microsoft veio aprimorando a ferramenta, o que acabou aumentando a confiabilidade, facilidade de uso e gerenciamento da mesma. Hoje a replicação é capaz de reunir dados dispersos geograficamente e distribuí-los em redes locais ou web. Permite alterações online, é aplicável em ambientes SQL Server Azure, de alta disponibilidade com uso de republicadores, com OLTP In-memory e ainda faz replicações heterogêneas (Oracle e DB2).
Pensando em vantagens, utilizar replicação de dados garante redundância, performance, disponibilidade com processamento off-line, baixo custo e independência. É um recurso bem flexível, permite cópia, distribuição e sincronização de dados e objetos para outros bancos de dados, servidores e instâncias.
Componentes da replicação
- Publicador: Responsável pela disponibilidade dos dados. Um publicador pode ter mais de uma publicação. Com o Publicador definido, é possível criar as publicações e escolhermos os objetos que serão replicados.
- Assinante: Responsável por receber e manter os dados replicados. Dependendo do tipo de replicação escolhida, é possível que sejam feitas alterações no assinante e os dados sejam replicados para o publicador. Há dois tipos:
- Assinatura push: o distribuidor atualiza diretamente os dados no banco de dados do Assinante.
- Assinatura pull: o Assinante está agendado para verificar regularmente no Distribuidor se há novas alterações disponíveis e, em seguida, atualizará os dados no próprio banco de dados de assinaturas.
- Distribuidor: Atua como um repositório de dados específicos da replicação (status, metadados). Cada publicador é associado a um banco de dados distribuidor e ambos podem estar na mesma instância ou não.
- Artigo: identifica um objeto incluído na publicação, podem ser tabelas, views, procedures. E permitido dimensioná-lo utilizando filtros.
- Agentes de Replicação: Executados como jobs pelo SQL Server Agent, os agentes de replicação são um conjunto de programas autônomos que executam as atividades relacionadas aos dados.
- Snapshot Agent: Utilizado por todos os tipos de replicação, o snapshot é responsável pela sincronização inicial entre o publicador e assinante.
- Log Reader Agent: Usado apenas com replicação transacional, é responsável por mover as transações de replicação do log de transações online, do banco de dados de publicação para o banco de dados de distribuição.
- Agente de Distribuição: Usado apenas com a replicação Snapshot e replicação Transacional do SQL Server, faz a sincronização inicial com a assinatura.
- Agente de Mesclagem: Utilizado com a replicação de mesclagem, faz upload de alterações do Assinante para o Publicador e download das alterações do Publicador para o Assinante. Executado no Distribuidor para assinaturas push ou no Assinante para assinaturas pull.
Tipos de Replicação
- Replicação Snapshot: o publicador faz uma cópia completa da base de dados e disponibiliza para os assinantes. Como o consumo de recursos é alto, é adequada para cenários onde não é preciso atualização de dados imediata.
- Replicação Transacional: as alterações realizadas no publicador são monitoradas pelo Agent e replicadas para o assinante de forma que se mantenham atualizados. Adequada para ambientes que tenham boa conectividade.
- Replicação de mesclagem: permite alterações no publicador e no assinante (bidirecional). Em um ambiente onde nem sempre há conexão entre os servidores, essa opção é ideal. Caso aconteça de usuários diferentes alterarem a mesma linha (um no publicador e outro no assinante), o resolvedor de conflitos define o valor baseado em regras de prioridade (definidas na criação do Publicador).
Resumo
Nesse post, falei brevemente sobre alguns conceitos importantes e vantagens da replicação.
Nos próximos iremos discutir mais a fundo a tecnologia e sua aplicabilidade em diferentes cenários.
Abaixo segue link com mais detalhes e referências:
Caso tenha alguma dúvida ou sugestão, fique a vontade para comentar.
Até o próximo! 🙂
Nenhum comentário