O que é a replicação de dados?
A replicação de dados ocorre quando os mesmos dados são armazenados intencionalmente em mais de um site ou servidor. Existem várias razões pelas quais as empresas replicam dados. A replicação de dados permite que os dados estejam disponíveis sem problemas no caso de tempo de inatividade ou tráfego pesado no servidor. Os dados tornam-se acessíveis aos usuários de forma consistente, sem interferir ou diminuir o acesso de outros usuários. Para aplicativos em nuvem, a replicação de dados permite acessar uma cópia dos dados em um banco de dados local com desempenho muito melhor do que acessá-los por meio da API do aplicativo em nuvem, o que é especialmente útil para análises e ciência de dados. A replicação de dados também pode permitir que você evite os limites de transação da API e a limitação presente em alguns aplicativos em nuvem.
A replicação de dados não é o mesmo que um backup normal e faz mais do que isso. O servidor de onde os dados se originam é chamado de publisher, e aquele para o qual os dados são replicados é chamado de assinante. Na replicação de dados, a transação feita no publisher é sincronizada com o assinante e os dados são atualizados automaticamente. Quaisquer alterações de dados no publisher também são refletidas automaticamente no assinante.
Pode haver replicação completa ou replicação parcial. No caso de replicação completa, todos os dados da origem são armazenados em todos os sites replicados. No caso da replicação parcial, apenas os dados acessados com frequência são copiados, enquanto outros dados permanecem na origem.
Tipos de replicação de dados
Existem três tipos principais de replicação de dados.
Replicação transacional
Na replicação transacional, as alterações de dados que ocorrem com frequência são automatizadas e distribuídas entre os servidores. A replicação das alterações do publisher para o assinante acontece em tempo quase real. Ela não apenas replica o resultado final da transação, mas registra todas as etapas da transação e a ordem em que as alterações ocorrem.
Por exemplo, no caso de transações de caixa eletrônico, a replicação do publisher para o assinante não é apenas do saldo final registrado, mas de todas as transações individuais intermediárias. Outro recurso importante da replicação transacional é que, embora as alterações de dados no publisher sejam replicadas no assinante, o contrário não funciona. As alterações de dados não ocorrem no nível do assinante por padrão.
Replicação de instantâneos
A replicação de instantâneos sincroniza dados entre o publisher e o assinante em um determinado momento. Ela move blocos de dados do publisher para o assinante em uma única transação. As atualizações em uma replicação de instantâneo não são tão frequentes quanto na replicação transacional. Isso pode ser feito antes da replicação transacional para estabelecer um estado básico dos dois servidores. Ela não atualiza todas as transações entre os servidores nem a ordem de alteração dos dados.
Este processo é usado para sincronizar dados que mudam ao longo de um período de tempo. Por exemplo, muitas empresas replicam dados como contas, contatos e oportunidades de um CRM na nuvem para um banco de dados local para fins de relatório. Isso pode ser feito a cada 15 minutos, uma vez por hora ou uma vez por dia, dependendo da frequência com que os dados são alterados. Para maior eficiência, o processo de replicação pode detectar os dados que foram alterados no publisher e replicar apenas as alterações, em vez de tirar um instantâneo completo em cada intervalo de replicação.
Replicação de mesclagem
A replicação de mesclagem é uma forma de replicação um pouco mais complexa. A sincronização inicial do publisher é uma replicação de instantâneo. No entanto, neste formato, permite que as alterações de dados ocorram no nível do publisher e do assinante. Os dados atualizados são então enviados para um agente de mesclagem, que é instalado em todos os servidores. O agente de mesclagem usa algoritmos de resolução de conflitos para atualizar e distribuir os dados.
Por exemplo, se um funcionário estiver editando um documento salvo diretamente em um servidor de nuvem (publisher) em seu laptop ou telefone (assinante) enquanto estiver online, isso seria uma replicação transacional, pois o documento é salvo quase em tempo real. No entanto, se o documento foi baixado do servidor em nuvem e atualizado offline no laptop ou telefone, haveria um conflito, pois os dados foram atualizados na ponta do assinante. Uma vez on-line novamente, eles passariam por um agente de mesclagem, que usaria um sistema de resolução de conflitos para atualizar o documento no publisher comparando os dois arquivos.
A replicação de mesclagem é usada em vários cenários em que um usuário não tem acesso direto ao publisher o tempo todo, como no caso de usuários móveis, em que é possível ficar offline enquanto os dados são atualizados. Também seria usado em um caso em que vários assinantes pudessem acessar e atualizar os mesmos dados em vários momentos e sincronizá-los com o publisher ou com outros assinantes. Também pode ser usado quando os mesmos dados do publisher são atualizados em partes por vários assinantes ao mesmo tempo.
Componentes importantes da rede de replicação de dados
Além do publisher e do assinante, a rede também possui alguns elementos-chave que são necessários para o sucesso.
Distribuidor
Para alterar uma configuração de replicação, o distribuidor precisa ser configurado primeiro. O distribuidor é um servidor na rede de replicação que controla o banco de dados de distribuição e armazena os metadados e o histórico de todas as replicações. Ele também armazena transações e instantâneos destinados à replicação. O distribuidor pode ser o mesmo servidor do publisher (distribuidor local) ou até mesmo um distribuidor remoto, dependendo do tipo de replicação.
Um distribuidor remoto geralmente é usado quando um único distribuidor atende a vários publishers ou quando é necessário fazer o processamento em um computador separado para não afetar a movimentação de dados no publisher. Isso é normalmente usado em replicação transacional onde a frequência de atualizações é muito maior e pode afetar a velocidade de processamento do distribuidor se estiver no mesmo servidor. A replicação de mesclagem pode ser feita com um distribuidor local, pois a frequência de replicação e atualizações não é tão frequente quanto a replicação transacional. Também ajuda que os dados atualizados do assinante após a mesclagem tenham que ser sincronizados com o publisher.
Agentes de replicação
Os agentes de replicação estão no centro da replicação e variam dependendo do tipo de replicação instalado. São programas que realizam várias tarefas, como detectar e atualizar bancos de dados de publishers e assinantes, criar cópias e resolver conflitos. Os agentes de replicação geralmente são armazenados no distribuidor. Alguns dos agentes de replicação executados no distribuidor são:
- Agente de instantâneo
- Agente de distribuição
- Agente de mesclagem
- Agente do leitor de log
- Agente do leitor de filas
Vantagens da replicação de dados
A replicação de dados é uma ótima maneira de fornecer acesso consistente aos dados. Também aumenta o acesso aos dados para vários usuários ao mesmo tempo. As redundâncias de dados são removidas mesclando-se bancos de dados e atualizando bancos de dados escravos com dados incompletos. E, com a replicação de dados, há um acesso naturalmente mais rápido aos bancos de dados.
Desvantagens da replicação de dados
A replicação de dados requer grande espaço de armazenamento e infraestrutura para mantê-la. A replicação é cara e a manutenção da infraestrutura para manter a consistência dos dados requer medidas complexas. Também abre mais partes do software para violações de privacidade e segurança.
Práticas recomendadas para replicação
Depois que a rede de replicação estiver configurada, é importante seguir algumas práticas de administração eficazes:
- Deve haver uma estratégia para fazer backup de um banco de dados regularmente. Também deve haver testes regulares executados para restaurar esses backups.
- Como parte da recuperação de desastres, é essencial criar scripts de todos os componentes de replicação e tarefas repetitivas, pois os scripts podem ser armazenados e seu backup é fácil. No caso de uma mudança nas políticas, os componentes podem ser facilmente reescritos.
- É necessário estabelecer os fatores que afetam o desempenho da replicação. Isso inclui aspectos como hardware, design de banco de dados, configuração de rede, configuração de servidor e parâmetros de agente. Tudo isso precisa ser implementado e monitorado para a carga de trabalho usada pelo aplicativo.
Os cinco parâmetros a seguir devem ser monitorados quanto à eficiência:
- Tempo necessário para replicação
- Replicação sustentada por um período de tempo
- Simultaneidade ou número de atividades de replicação que podem ocorrer ao mesmo tempo
- Duração da sincronização
- Consumo de recursos para replicação
- Para evitar desastres, é importante estabelecer limites de desempenho para que, quando atingidos, possam gerar avisos e enviar alertas aos administradores. Alertas também podem ser estabelecidos para ações de agentes de replicação ou processos de replicação.
- Monitore a topologia de replicação
- A validação periódica de dados para replicação transacional e replicação de mesclagem precisa ser feita no publisher e no assinante para manter a replicação bem-sucedida
A replicação de dados vai além da criação de um backup de dados. Embora seja um dos principais componentes no gerenciamento de dados, também pode ser um processo caro e complexo se não for gerenciado adequadamente. A chave está em escolher o processo de replicação certo para suas necessidades.