Você está na página 1de 51

Replicao - Benefcios de uma arquitetura de banco de dados replicada para aplicaes corporativas Wagner Corra Ramos (mltiplos sites)

Wagner Corra Ramos OBJECT Sistemas http://www.object.com.br

Replicao de banco de dados

Roteiro
Apresentao Conceitos de replicao Migrao de aplicaes centralizadas para distribudas usando replicao Trade-offs do uso de replicao Estudo de casos prticos

Replicao de banco de dados

Apresentao
Experincia com desenvolvimento de aplicaes em diversas reas de negcio (20 anos):
Desenvolvimento de diversas aplicaes sob-encomenda (Cobol, Dataflex, SQLWindows, PHP, J2EE/Java) Desenvolvimento de 4 sistemas integrados de gesto empresarial - mini-ERPs (Dataflex, SQLWindows, J2EE/Java)

Replicao de banco de dados

Apresentao
Experincia com ambientes de produo de alta disponibilidade:
Instalao de mais de 20 servidores CTI em ambiente CORBA, SGBD Oracle Responsvel pelo suporte tcnico de terceiro nvel durante 18 meses a CTIs e URAs dos call centers da Atento S/A Responsvel durante 12 meses pelo desenvolvimento de projetos de URA com acesso a SGBDs Oracle, SQLServer e mainframe

Replicao de banco de dados

Apresentao
Experincia com replicao de dados
1996 MS SQLServer 1997 Informix 2002, 2003, 2004 Postgresql, Desenvolvimento do software Object MMRS (Multi-Master Replication Server) 2005 Oracle (usando MMRS) 2006/2007 SQLServer e DB2 (usando MMRS)

Replicao de banco de dados

Conceitos
O que replicao ?

Replicao de banco de dados

O que replicao de dados ?


Duplicar, fazer mltiplas cpias gerenciadas de dados com objetivos de:
Descentralizao de aplicaes Hot-backup de servidores de banco de dados Balanceamento de carga Data warehousing Integrao de sistemas heterogneos
Replicao de banco de dados

Conceitos
Benefcios que um bom modelo de replicao procura proporcionar:
Alta disponibilidade Alto desempenho Eliminar o problema de dados inconsistentes decorrentes da integrao tardia entre sistemas

Replicao de banco de dados

Conceitos
Problemas a gerenciar em um modelo replicado
Escalabilidade Inconsistncias

Replicao de banco de dados

Conceitos
Classificao de softwares replicadores de dados
Replicadores Replicadores Replicadores Replicadores eager (sncronos) lazy (assncronos) Master-slave Multi-master

Replicao de banco de dados

Replicadores eager (sncronos)


Replicadores imediatos / sncronos
A transao s concluda aps todos os servidores fazerem commit (2PC)

Garante consistncia de transao entre servidores Baixa escalabilidade Alto custo (TCO) Indisponibilidade em caso de queda de rede Muito pesquisado nos ltimos 10 anos, vrias implementaes, mas considerado impraticvel para a maioria dos ambientes de produo

Replicao de banco de dados

Replicadores lazy (Assncronos)


Replicadores lentos / assncronos
A transao concluda localmente e depois replicada.

Alta escalabilidade No garante consistncia de transao entre servidores Baixo custo (TCO) Resistente a quedas de rede Muito pesquisado atualmente, procura-se algoritmos que eliminem o problema de inconsistncias (ou que tratem de forma automtica)
Replicao de banco de dados

Comparao eager x lazy


Eager 100% consistncia transao entre servidores Baixa escalabilidade Alto custo No tolera queda de rede Sujeito a dead-lock geral Lazy Sem consistncia de transao entre servidores (*) Alta escalabilidade Baixo custo Tolerante a queda de rede Sujeito a dead-lock apenas local

Replicao de banco de dados

Replicadores master-slave
Replicao unidirecional Usado normalmente para hot-backup de servidores de banco de dados Usado tambm para melhoria de desempenho de consultas em sites remotos Apenas a base master recebe atualizaes Pouco sujeito a inconsistncias, mesmo no modelo lazy
Replicao de banco de dados

Replicadores multi-master
Replicao multi-direcional Usados para garantir alta disponibilidade Garante melhor desempenho tanto em consultas quanto em atualizaes Todas as bases podem receber atualizaes Sujeito a inconsistncias no modelo lazy

Replicao de banco de dados

Inconsistncias no modelo lazy multi-master


Possibilidade de atualizaes fora de ordem cronolgica

Replicao de banco de dados

Inconsistncias no modelo lazy multi-master


Os servidores podem no ter num determinado momento o mesmo dado em uma determinada tabela/linha/coluna pois so atualizados assincronamente

Replicao de banco de dados

Inconsistncias no modelo lazy multi-master


Dados que fazem parte de uma transao realizada em um servidor A podem sofrer modificaes no servidor B antes da transao ser replicada, ou seja, no existe o conceito de transao a nivel global e sim apenas local

Replicao de banco de dados

Erros comuns no modelo lazy multimaster


Problemas de atualizaes no corretamente gerenciadas no modelo de dados. (Novas tabelas, colunas, restries, etc) Problemas causados por falha no sincronismo inicial entre as bases replicadas. Problemas causados pela ausncia de monitoramento e correo de inconsistncias Volume excessivo de dados para a banda de rede disponvel

Replicao de banco de dados

Problemas que NO ocorrem no modelo lazy multi-master


Transaes incompletas no master no so replicadas: Apenas transaes completas so colocadas para replicar No h perda de dados em casos de crash, rollbacks, quedas de rede, etc.

Replicao de banco de dados

Topologias (Rede ou Peer-to-Peer)

Replicao de banco de dados

Topologias (Estrela)

Replicao de banco de dados

Topologias (Hierrquica)

Replicao de banco de dados

Qual o tipo de replicao adequado ?


Hot-backups, balanceamento de carga (consultas) ou DW/DM:
Master/Slave Sncrono (ou clustering) Master/Slave Assncrono

Descentralizao de sistemas:
Concorrncia entre servidores inevitvel ? : MultiMaster Sncrono Sem concorrncia entre servidores ? : Multi-Master Assncrono

Replicao de banco de dados

Alguns softwares de replicao


Oracle Replication
No suporta replicar para outros SGBDs Basic
Master-Slave, replica DML. (Oracle Standard)

Advanced
Multi-Master, replica tambm outros objetos como ndices e procedures, replica DML e DDL. (Oracle Enterprise)

Ambos podem atuar como lazy ou eager. No replica sequences e nem alguns tipos de dados: LONG e LONG RAW Resoluo de conflitos: latest timestamp, site priority, customizado, etc. Necessita controle em triggers para evitar loop

Replicao de banco de dados

Alguns softwares de replicao


SQLServer Replication
Master-slave e multi-master, lazy e eager.

Replicao de banco de dados

Alguns softwares de replicao


Slony
Replicador para postgresql, roda em linux open source Master-slave, lazy, uso ideal para hotbackup. Futuro: Slony II - multi-master

Replicao de banco de dados

Alguns softwares de replicao


Pgcluster
Replicador para postgresql, roda em linux open source Multi-Master, eager, uso ideal para loadbalance

Replicao de banco de dados

Alguns softwares de replicao


Daffodil Replicator
Replicador para postgresql, oracle, SQLServer, Derby, Daffodil DB Open source para aplicaes GPL e pago para aplicaes comerciais Replica entre diferentes SGBDs Multi-Master, Lazy Transfere dados em XML entre os SGBDs
Replicao de banco de dados

Alguns softwares de replicao


Object Multi-Master Replication Server
Replicador para PostgreSql, Oracle, SQLServer, Sybase, DB2, etc. Replica entre diferentes SGBDs Multi-master, lazy, uso ideal para sincronizao entre sites

Replicao de banco de dados

Dicas de arquitetura/modelagem de dados para evitar inconsistncias


Sim, possvel usar replicao lazy multimaster de forma consistente Escolher o que replicar e o que no replicar Identificadores nicos
UUID Faixas de Ids por servidor / site

Eliminao de concorrncia Filosofia da aplicao usando conceitos de Replicao e de Distribuio de dados


Replicao de banco de dados

Dicas de arquitetura/modelagem de dados para evitar inconsistncias


O que replicar ?
Tabelas de configurao e de dados auxiliares Cadastros Movimentaes que precisem ser processadas em um escritrio central Resumos / Resultados / Tabelas sumarizadas
Replicao de banco de dados

Dicas de arquitetura/modelagem de dados para evitar inconsistncias


O que no replicar ?
Movimentao que interessa apenas ao site. Exemplo: Pedidos e itens de pedidos, oramentos, itens de notas fiscais, etc.

Replicao de banco de dados

Dicas de arquitetura/modelagem de dados para evitar inconsistncias


Identificadores nicos
UUID (Algoritmo para criao de IDs nicos atravs do uso de MAC Address, etc) Faixas de Ids por servidor / site
SERVIDOR 1: CREATE SEQUENCE S INITIAL 1 INCREMENT 3 SERVIDOR 2: CREATE SEQUENCE S INITIAL 2 INCREMENT 3 SERVIDOR 3: CREATE SEQUENCE S INITIAL 3 INCREMENT 3

Replicao de banco de dados

Dicas de arquitetura/modelagem de dados para evitar inconsistncias


Eliminao de concorrncia
Cada site deve ter transaes que atualizem apenas dados referentes ao prprio local nunca deve, por exemplo, atualizar a posio de estoque de um item que esteja em outro armazm Nos casos de atualizaes concorrentes de tabelas e/ou cadastros, deve-se assumir que quem atualizar por ltimo prevalece. ( importante neste caso escolher software de replicao que trate updates a nvel de coluna)
Replicao de banco de dados

Dicas de arquitetura/modelagem de dados para evitar inconsistncias


Aplicao usando conceitos de replicao e de distribuio de dados
A aplicao deve ser modelada pensando no uso de replicao, evitando concorrncia. Na hora de realizar consultas, dependendo da informao desejada ela deve acessar o banco de dados do site correspondente. Criao de bases centrais concentrando resultados. Algumas consultas podem acessar bases remotas para visualizar detalhes, etc. Nvel de distribuio estudado caso a caso
Replicao de banco de dados

Migrando aplicaes existentes


Dificuldades
Problemas com identificadores nicos Problemas com o modelo de dados (falta de chave primria, chaves estrangeiras, etc) Uso de triggers, defaults e sequences

Sugestes
Estudar antes o modelo de dados e o software de replicao a ser adotado, se possvel realizar testes. Tentar dimensionar bem o volume de dados a ser replicado versus banda de rede disponvel (*)
Replicao de banco de dados

Trade-offs SGBD Centralizado x SGBDs Replicados


Modelo Centralizado Administrao e manuteno simplificada Alto custo Modelo Replicado Administrao e manuteno complexa

Baixo custo (lazy) Alta disponibilidade

Disponibilidade dependente da qualidade da rede Baixo desempenho

Alto desempenho

Replicao de banco de dados

Case 1 Rede de autopeas


Replicao lazy, multi-master Produto usado: Object MMRS Objetivos da replicao:
Criar ambiente de alta disponibilidade com baixo custo Alto desempenho do sistema em cada loja Integrao das lojas (Estoques, resultados, compras, etc)
Replicao de banco de dados

Case 1 Rede de autopeas


SGBD: PostgreSQL 7.3, 7.4 Servidores: IBM Intel PIII c/ 1Gb de RAM Rede: Speedy Business 300K Base de dados com aproximadamente 150 tabelas

Replicao de banco de dados

Case 1 Rede de autopeas


O que foi replicado:
Tabelas de configurao e auxiliares (modelos de veculos, formas de pagamento, grupo de produto, etc) Cadastros (clientes, fornecedores, peas, etc)

O que no foi replicado:


Oramentos, pedidos, notas fiscais, movimentao de caixa, apontamentos de mo-de-obra, comisso de vendedores.
Replicao de banco de dados

Case 1 Rede de autopeas


Lies aprendidas
Replicao lazy multi-master pode ser usada de forma eficiente desde que tomados os devidos cuidados no desenho da base de dados e aplicao O ideal estar replicando desde o primeiro dia de funcionamento de uma nova filial para evitar depois ter de tratar inconsistncias Monitorar quedas de rede para no ficar muito tempo sem um ciclo de replicao quanto mais tempo sem replicar maiores chances de inconsistncias
Replicao de banco de dados

Case 2 Hot-backup de servidores


A Servidor master na empresa e servidor backup em data center
SGBD: PostgreSQL 7.4 Replica todas as tabelas do master para o backup e replica tabelas de requisio de produtos da base backup para a base master Base de dados com aproximadamente 100 tabelas
Replicao de banco de dados

Case 2 Hot-backup de servidores


B Servidor master na empresa e servidor backup escondido em outro site (rede wireless)
SGBD: Oracle 9i Replicao de todas as tabelas para o servidor backup Base de dados com aproximadamente 800 tabelas
Replicao de banco de dados

Case 2 Hot-backup de servidores


Lies aprendidas
Dificuldade com aplicaes que usam recursos como database level triggers e jobs, pois isso precisa ser desabilitado na base backup e habilitado quando precisar entrar em produo.

Replicao de banco de dados

Case 3 Website de comrcio eletrnico


Objetivo:
Replicar base de dados PostgreSQL para base MySQL, estilo multi-master, lazy Com isso isolaremos a base master (corporativa) da base de dados do website, melhorando segurana, disponibilidade e desempenho

Replicao de banco de dados

Case 3 Website de comrcio eletrnico


O que ser replicado:
Cadastro de produtos, preos, etc filtrando apenas os produtos com venda pela web, estilo masterslave. Cadastro de clientes, estilo multi-master permitindo a incluso de novos clientes e atualizao de dados pelo prprio cliente. Pedidos de venda no sentido multi-master (Base Mysql inclui pedido e base postgreSQL atualiza situao do pedido)

Replicao de banco de dados

Case 3 Website de comrcio eletrnico


Lies aprendidas
Ganha-se muito em segurana, desempenho e disponibilidade Apenas um subconjunto dos dados replicado para o webserver melhorando muito o desempenho Pode-se parar o servidor de produo sem problemas pois o site continua funcionando com seu prprio servidor de banco de dados

Replicao de banco de dados

Outros CASEs
Rede de supermercados
1 loja central (adm financeira, contbil, etc) e 12 lojas comuns. Topologia estrela Custo de links foi reduzido, desempenho nas lojas excelente, servidores de baixo custo.

Secretaria de Administrao Penitenciria


1 Servidor Central e 143 Servidores nas unidades. Topologia estrela

Replicao de banco de dados

Espao aberto
Dvidas ? Mais detalhes sobre algum assunto ? Quer compartilhar / discutir alguma experincia de replicao ?

Replicao de banco de dados

Obrigado

Agradeo a presena de todos Agradeo aos patrocinadores do evento


Wagner Corra Ramos
wagner@object.com.br http://www.object.com.br

Replicao de banco de dados

Você também pode gostar