SlideShare uma empresa Scribd logo
Replicação multi-master, sincronização ltrada e transformação
Cesar Romero
Software Architect, Trier Sistemas - Tubarão - SC
Contato
cesarliws@gmail.com
http://blog.cesarromero.com.br/
@cesarliws
Agenda
Replicação Multi-master
Casos de uso x Soluções Internas
SymmetricDS
Recursos
Requisitos
Arquitetura
Instalação
Con guração da Replicação
Con guração da Transformação
Con guração de Filtros
Solução de Problemas
Replicação Multi-master
É um método de replicação de banco de dados que permite que os dados sejam
armazenados em um grupo de computadores, e atualizados por qualquer membro do
grupo.
Todos os membros do grupo gravam e respondem a consultas.
É responsável por propagar as alterações de dados feitas por cada membro para o grupo e
resolver con itos que possam surgir entre as alterações simultâneas feitas por diferentes
membros.
Wikipedia: Multi-master replication(https://en.wikipedia.org/wiki/Multi-master_replication)
Casos de uso - Internos
Replicação de Banco de Dados
produtos da empresa
ERP cliente x cloud x departamentos de serviços
de clientes entre liais
matriz x filiais x depósitos x centrais de distribuição, etc
sistemas internos
atendimentos para banco de dados de análises de negócios e métricas
novos projetos
cloud x clientes
O que tinhamos?
Replicadores desenvolvidos para cada projeto
Manutenção constante
Falta de padronização
Evolução limitada
Replicador não é um produto, é uma ferramenta
SymmetricDS é um software open source para replicação de banco de dados e arquivos,
com suporte a replicação de uma via, multi-master, sincronização ltrada e transformações.
Projetado para suportar um grande número de banco de dados, trabalhar em redes de
baixa taxa de transferência e suportar períodos de interrupção de rede.
Licença GPL version 3.0
www.symmetricds.org(https://www.symmetricds.org)
www.jumpmind.com/products/symmetricds(http://www.jumpmind.com/products/symmetricds)
SymmetricDS - Principais Recursos
Replicação de Banco de Dados
Capturar de dados alterados e replicar em tempo quase real - Change Data Capture
(CDC).
Filtragem vertical e horizontal de partes de uma tabela.
Transformação para conversão, melhoria e ltro de dados.
Mapear colunas e tabelas para ligar diferentes aplicações.
Detecta con itos e resolve usando regras automatizadas ou noti cação para intervenção
manual.
Suporte a Transações
Criação de Banco de dados Automática
Versionamento de Banco de Dados
SymmetricDS - Principais Recursos
Con guração
Con guração Centralizada
Sincronização Uni-direcional, bi-direcional e multi-master
Sincronização agendada ou contínua em tempo quase real.
Sincronização organizada em grupos.
Alterações agrupadas em lotes para melhor rastreamento e e ciência.
Carga inicial de dados para preparar o banco de dados e sistema de arquivos remoto
para a sincronização das alterações.
SymmetricDS - Principais Recursos
Comunicação
Protocolo e ciente para operação em redes de baixa taxa de transferência.
Criptogra a na transferência para comunicação segura.
Recuperação automatica após indisponibilidade e quedas de rede.
Garantia de Entrega
Canais Independentes de Sincronização
SymmetricDS - Principais Recursos
Mobile
Android - biblioteca Java.
iOS - biblioteca C.
Syncronização bidirecional do SQLite para qualquer banco de dados.
Funciona no modo O ine e sincroniza automaticamente quando a rede está disponível.
SymmetricDS - Principais Recursos
Sincronização de Arquivos
API Extensível
Instalação: Aplicativo, Serviço, Aplicação Web e Componente Embutido
Pode ser Embutido em outra Aplicação - PDV
Gerenciamento Remoto - Console JMX ou REST
SymmetricDS - Banco de dados Suportados
Mais de 20 diferentes bancos de dados suportados
Derby, DB2, Firebird, Greenplum, H2, HSQLDB, Informix, Interbase, MariaDB, MongoDB,
MySQL, Oracle,PostgreSQL, Redshift, SQL Anywhere, SQL Azure, SQL Server, SQLite, Sybase
SymmetricDS - Pré Requisitos
Java SE Runtime 7 ou 8
Sistemas Operacionais
Linux, Windows, Unix, Mac OS X, Android, iOS e Windows Mobile
Servidores de Aplicação
Tomcat, JBoss, Jetty, WebLogic, WebSphere
www.jumpmind.com/products/symmetricds/requirements(http://www.jumpmind.com/products/symmetricds/requirements)
SymmetricDS - Arquitetura
SymmetricDS - Arquitetura
Con guração no banco de dados Central em tabelas do SymmetricDS.
As tabelas con guradas para replicação são examinadas e são criadas triggers para
gravar as alterações, a replicação de dados contém os valores antes e depois das
alterações e são armazenados no formato CSV.
Após as alterações serem capturadas, o destino será de nido a partir das rotas
con guradas, os dados são extraídos no formato CSV e transformados, quando
necessário, então é criado um arquivo com o lote, antes de ser enviado para o destino
através de http.
Quando o lote é recebido no destino, ele será carregado e aplicado no banco de dados.
SymmetricDS - Instalação
Instalação Pré Requisitos - Java
Download do SymmetricDS
www.symmetricds.org/download(http://www.symmetricds.org/download)
Descompactar arquivo .zip
SymmetricDS - Instalação
Con gurar node Central na pasta engines
"engines/central-1.properties"
external.id=1
engine.name=central-1
sync.url=http://138.204.120.35:31415/sync/central-1
group.id=grupo_central
db.url=jdbc:postgresql://127.0.0.1/database?protocolVersion=2&socketTimeout=300&tcpKeepAlive=true
db.driver=org.postgresql.Driver
db.user=username
db.password=enc:encripted_password
registration.url=
db.validation.query=select 1
db.init.sql=
db.connection.properties=
Instalar e Iniciar Serviço - as tabelas do SymmetricDS são criadas
Executar o SQL de con guração da replicação
SymmetricDS - Con gurar Replicação
Con guração Padrão
INSERT INTO sym_node_group (node_group_id) VALUES ('grupo_central');
INSERT INTO sym_node_group (node_group_id) VALUES ('grupo_loja');
-- grupo_loja envia e busca alterações
INSERT INTO sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action)
VALUES ('grupo_loja', 'grupo_central', 'P');
-- grupo_central aguarda conexões do grupo_loja e recebe e disponbiliza alterações
INSERT INTO sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action)
VALUES ('grupo_central', 'grupo_loja', 'W');
INSERT INTO sym_router (router_id, source_node_group_id, target_node_group_id, create_time, last_update_time)
VALUES ('grupo_central-grupo_loja-w', 'grupo_central', 'grupo_loja', current_timestamp, current_timestamp
INSERT INTO sym_router (router_id, source_node_group_id, target_node_group_id, create_time, last_update_time)
VALUES ('grupo_loja-grupo_central-p', 'grupo_loja', 'grupo_central', current_timestamp, current_timestamp
SymmetricDS - Con gurar Replicação
Con guração Tabelas
INSERT INTO sym_trigger (trigger_id, source_schema_name, source_table_name, channel_id, sync_on_incoming_bat
VALUES ('public.produto', 'public', 'produto', 'default', 1, current_timestamp, current_timestamp);
INSERT INTO sym_trigger_router (trigger_id, router_id, initial_load_order, create_time, last_update_time)
VALUES ('public.produto', 'grupo_central-grupo_loja-w', '218', current_timestamp, current_timestamp);
INSERT INTO sym_trigger_router (trigger_id, router_id, initial_load_order, create_time, last_update_time)
VALUES ('public.produto', 'grupo_loja-grupo_central-p', '218', current_timestamp, current_timestamp);
Con gurar Transformação - Tabelas
Transformação de uma para multiplas tabelas
Especi car a direção, quando executar e quais tabelas são envolvidas
INSERT INTO sym_transform_table
(transform_id, source_node_group_id, target_node_group_id, transform_point,
source_table_name, target_table_name, delete_action, column_policy)
VALUES
('clientes_para_clientes_importados', 'grupo_loja', 'grupo_central', 'EXTRACT',
'clientes', 'clientes_importados', 'NONE', 'SPECIFIED'),
('customers_to_customers', 'grupo_loja', 'grupo_central', 'EXTRACT',
'clientes', 'clientes', 'NONE', 'IMPLIED');
Con gurar Transformação - Colunas
Especi car as colunas envolvidas e o tipo da transformação
INSERT INTO sym_transform_column
(transform_id, include_on, source_column_name, target_column_name, pk, transform_type)
VALUES
('clientes_para_clientes_importados', '*', 'id', 'id_cliente', 1, 'copy'),
('clientes_para_clientes_importados', '*', 'nome', 'nome_cliente', 1, 'copy'),
('clientes', '*', 'id', 'id', 0, 'copy');
Con gurar Filtros
Antes de gravar
Após gravar
Após gravar o Lote
Após commit do lote
Roolback do lote
Quando ocorre um Erro
insert into sym_load_filter (...)
values
('SampleFilter','BSH','Client','Server',NULL,NULL, 'ITEM_SELLING_PRICE', 1, 1, 1,'
if (OLD_COST > COST) {
return false
} else {
return true
}
', null,null,null,null,null, current_timestamp,'Documentation',current_timestamp,1,1);
SymmetricDS - Instalação Filial
Instalar e Con gurar o SymmetricDS na Filial
"engines/loja-2.properties"
external.id=2
engine.name=loja-2
sync.url=http://localhost:31415/sync/loja-2
group.id=grupo_loja
db.url=jdbc:postgresql://127.0.0.1/database?protocolVersion=2&socketTimeout=300&tcpKeepAlive=true
db.driver=org.postgresql.Driver
db.user=username
db.password=enc:encripted_password
registration.url=http://138.204.120.30:31415/sync/central-1
db.validation.query=select 1
db.init.sql=
db.connection.properties=
Instalar e Iniciar o Serviço
SymmetricDS - Diretórios e Arquivos
conf: para con gurações detalhadas do comportamento do SymmetricDS
engines: cada arquivo corresponde a um node, e a um único banco de dados
logs: contém os logs da replicação e erros ocorridos
tmp: arquivos que serão enviados ou que foram recebidos
SymmetricDS - Resolução de problemas
Como identi car erros no Envio
Documentação: "Outgoing Batch Errors"(http://www.symmetricds.org/doc/3.8/html/user-guide.html#_outgoing_batch_errors)
-- lista a fila de pacotes do replicador que estão com erro
SELECT * FROM sym_outgoing_batch
WHERE error_flag = 1;
-- conta o número de pacotes pendentes, pode ter com ou sem erros
SELECT COUNT(*) FROM sym_outgoing_batch
WHERE status != 'OK';
-- lista registros do sistema pendentes em pacotes com erro
SELECT * FROM sym_data
WHERE data_id IN (
SELECT data_id FROM sym_data_event
WHERE batch_id IN (
SELECT batch_id FROM sym_outgoing_batch
WHERE error_flag = 1));
SymmetricDS - Resolução de problemas
Tabela de Erros
Erros no recebimento cam na tabela sym_incoming_error
Thank you
Cesar Romero
Software Architect, Trier Sistemas, Tubarão - SC
cesarliws@gmail.com(mailto:cesarliws@gmail.com)
http://blog.cesarromero.com.br/(http://blog.cesarromero.com.br/)
@cesarliws(http://twitter.com/cesarliws)

Mais conteúdo relacionado

Mais procurados

How to upgrade like a boss to MySQL 8.0 - PLE19
How to upgrade like a boss to MySQL 8.0 -  PLE19How to upgrade like a boss to MySQL 8.0 -  PLE19
How to upgrade like a boss to MySQL 8.0 - PLE19
Alkin Tezuysal
 
Mariadb une base de données NewSQL
Mariadb une base de données NewSQLMariadb une base de données NewSQL
Mariadb une base de données NewSQL
Christophe Villeneuve
 
Introduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparoundIntroduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparound
Masahiko Sawada
 
Moving from SQL Server to MongoDB
Moving from SQL Server to MongoDBMoving from SQL Server to MongoDB
Moving from SQL Server to MongoDB
Nick Court
 
Improve PostgreSQL replication with Oracle GoldenGate
Improve PostgreSQL replication with Oracle GoldenGateImprove PostgreSQL replication with Oracle GoldenGate
Improve PostgreSQL replication with Oracle GoldenGate
Bobby Curtis
 
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
PgDay.Seoul
 
BloodHound Unleashed.pdf
BloodHound Unleashed.pdfBloodHound Unleashed.pdf
BloodHound Unleashed.pdf
n00py1
 
Webinar | How to Understand Apache Cassandra™ Performance Through Read/Writ...
Webinar  |  How to Understand Apache Cassandra™ Performance Through Read/Writ...Webinar  |  How to Understand Apache Cassandra™ Performance Through Read/Writ...
Webinar | How to Understand Apache Cassandra™ Performance Through Read/Writ...
DataStax
 
Introduction of Redis as NoSQL Database
Introduction of Redis as NoSQL DatabaseIntroduction of Redis as NoSQL Database
Introduction of Redis as NoSQL Database
Abhijeet Shekhar
 
Alfresco Security Best Practices 2014
Alfresco Security Best Practices 2014Alfresco Security Best Practices 2014
Alfresco Security Best Practices 2014
Toni de la Fuente
 
Postfix y Dovecot con cuentas MariaDB en Debian Bullseye
Postfix y Dovecot con cuentas MariaDB  en Debian BullseyePostfix y Dovecot con cuentas MariaDB  en Debian Bullseye
Postfix y Dovecot con cuentas MariaDB en Debian Bullseye
Henry Cristian Cuesta Vega
 
Adapting and adopting spm v04
Adapting and adopting spm v04Adapting and adopting spm v04
Adapting and adopting spm v04
Carlos Sierra
 
Oracle DBA
Oracle DBAOracle DBA
Oracle DBA
shivankuniversity
 
Technical Introduction to PostgreSQL and PPAS
Technical Introduction to PostgreSQL and PPASTechnical Introduction to PostgreSQL and PPAS
Technical Introduction to PostgreSQL and PPAS
Ashnikbiz
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
Wellington Oliveira
 
DBMSArchitecture_QueryProcessingandOptimization.pdf
DBMSArchitecture_QueryProcessingandOptimization.pdfDBMSArchitecture_QueryProcessingandOptimization.pdf
DBMSArchitecture_QueryProcessingandOptimization.pdf
Christalin Nelson
 
MySQL Performance Tuning (In Korean)
MySQL Performance Tuning (In Korean)MySQL Performance Tuning (In Korean)
MySQL Performance Tuning (In Korean)
OracleMySQL
 
Hadoop vs Apache Spark
Hadoop vs Apache SparkHadoop vs Apache Spark
Hadoop vs Apache Spark
ALTEN Calsoft Labs
 
Hdfs architecture
Hdfs architectureHdfs architecture
Hdfs architecture
Aisha Siddiqa
 
Advanced Postgres Monitoring
Advanced Postgres MonitoringAdvanced Postgres Monitoring
Advanced Postgres MonitoringDenish Patel
 

Mais procurados (20)

How to upgrade like a boss to MySQL 8.0 - PLE19
How to upgrade like a boss to MySQL 8.0 -  PLE19How to upgrade like a boss to MySQL 8.0 -  PLE19
How to upgrade like a boss to MySQL 8.0 - PLE19
 
Mariadb une base de données NewSQL
Mariadb une base de données NewSQLMariadb une base de données NewSQL
Mariadb une base de données NewSQL
 
Introduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparoundIntroduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparound
 
Moving from SQL Server to MongoDB
Moving from SQL Server to MongoDBMoving from SQL Server to MongoDB
Moving from SQL Server to MongoDB
 
Improve PostgreSQL replication with Oracle GoldenGate
Improve PostgreSQL replication with Oracle GoldenGateImprove PostgreSQL replication with Oracle GoldenGate
Improve PostgreSQL replication with Oracle GoldenGate
 
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
 
BloodHound Unleashed.pdf
BloodHound Unleashed.pdfBloodHound Unleashed.pdf
BloodHound Unleashed.pdf
 
Webinar | How to Understand Apache Cassandra™ Performance Through Read/Writ...
Webinar  |  How to Understand Apache Cassandra™ Performance Through Read/Writ...Webinar  |  How to Understand Apache Cassandra™ Performance Through Read/Writ...
Webinar | How to Understand Apache Cassandra™ Performance Through Read/Writ...
 
Introduction of Redis as NoSQL Database
Introduction of Redis as NoSQL DatabaseIntroduction of Redis as NoSQL Database
Introduction of Redis as NoSQL Database
 
Alfresco Security Best Practices 2014
Alfresco Security Best Practices 2014Alfresco Security Best Practices 2014
Alfresco Security Best Practices 2014
 
Postfix y Dovecot con cuentas MariaDB en Debian Bullseye
Postfix y Dovecot con cuentas MariaDB  en Debian BullseyePostfix y Dovecot con cuentas MariaDB  en Debian Bullseye
Postfix y Dovecot con cuentas MariaDB en Debian Bullseye
 
Adapting and adopting spm v04
Adapting and adopting spm v04Adapting and adopting spm v04
Adapting and adopting spm v04
 
Oracle DBA
Oracle DBAOracle DBA
Oracle DBA
 
Technical Introduction to PostgreSQL and PPAS
Technical Introduction to PostgreSQL and PPASTechnical Introduction to PostgreSQL and PPAS
Technical Introduction to PostgreSQL and PPAS
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 
DBMSArchitecture_QueryProcessingandOptimization.pdf
DBMSArchitecture_QueryProcessingandOptimization.pdfDBMSArchitecture_QueryProcessingandOptimization.pdf
DBMSArchitecture_QueryProcessingandOptimization.pdf
 
MySQL Performance Tuning (In Korean)
MySQL Performance Tuning (In Korean)MySQL Performance Tuning (In Korean)
MySQL Performance Tuning (In Korean)
 
Hadoop vs Apache Spark
Hadoop vs Apache SparkHadoop vs Apache Spark
Hadoop vs Apache Spark
 
Hdfs architecture
Hdfs architectureHdfs architecture
Hdfs architecture
 
Advanced Postgres Monitoring
Advanced Postgres MonitoringAdvanced Postgres Monitoring
Advanced Postgres Monitoring
 

Semelhante a Replicação multi-master, sincronização filtrada e transformação com SymmetricDS

Introdução ao AWS Database Migration Service
Introdução ao AWS Database Migration ServiceIntrodução ao AWS Database Migration Service
Introdução ao AWS Database Migration Service
Amazon Web Services LATAM
 
Devops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL ServerDevops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL Server
Igor Rosa Macedo
 
Virtualization Consolidation Slide
Virtualization Consolidation SlideVirtualization Consolidation Slide
Virtualization Consolidation Slide
NetBR
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemastaniamaciel
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvens
Alessandro Binhara
 
ODI Series - Treinamento
ODI Series - TreinamentoODI Series - Treinamento
ODI Series - Treinamento
Caio Lima
 
BluDotNet - Entity Framework Code First Migrations
BluDotNet - Entity Framework Code First MigrationsBluDotNet - Entity Framework Code First Migrations
BluDotNet - Entity Framework Code First Migrations
Rafael Leonhardt
 
Aplicações de tempo real com Meteor.js
Aplicações de tempo real com Meteor.jsAplicações de tempo real com Meteor.js
Aplicações de tempo real com Meteor.js
Rafael Sales
 
DB2 Express-C
DB2 Express-CDB2 Express-C
DB2 Express-C
Bruno Dadalt Zambiazi
 
Refactoring Databases
Refactoring DatabasesRefactoring Databases
Refactoring Databases
Ismael
 
Artigo data warehouse bd ii - 2015-1 a
Artigo data warehouse   bd ii - 2015-1 aArtigo data warehouse   bd ii - 2015-1 a
Artigo data warehouse bd ii - 2015-1 a
Darlene Coelho
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
Matheus Espanhol
 
Artigo data warehouse bd ii - 2015-1
Artigo data warehouse   bd ii - 2015-1Artigo data warehouse   bd ii - 2015-1
Artigo data warehouse bd ii - 2015-1
Darlene Coelho
 
MSPti - IntegraTMS - Apresentação Funcional
MSPti - IntegraTMS - Apresentação FuncionalMSPti - IntegraTMS - Apresentação Funcional
MSPti - IntegraTMS - Apresentação Funcional
pauloglima
 
Amazon Redshift
Amazon RedshiftAmazon Redshift
Amazon Redshift
Joao Gutheil
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - IntroduçãoMarco Pinheiro
 
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Aryel Tupinambá
 
Monitorando aplicações distribuidas nativas em cloud com Prometheus
Monitorando aplicações distribuidas nativas em cloud com PrometheusMonitorando aplicações distribuidas nativas em cloud com Prometheus
Monitorando aplicações distribuidas nativas em cloud com Prometheus
Edilson Azevedo
 
TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...
TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...
TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...
tdc-globalcode
 

Semelhante a Replicação multi-master, sincronização filtrada e transformação com SymmetricDS (20)

Introdução ao AWS Database Migration Service
Introdução ao AWS Database Migration ServiceIntrodução ao AWS Database Migration Service
Introdução ao AWS Database Migration Service
 
Devops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL ServerDevops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL Server
 
Virtualization Consolidation Slide
Virtualization Consolidation SlideVirtualization Consolidation Slide
Virtualization Consolidation Slide
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemas
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvens
 
ODI Series - Treinamento
ODI Series - TreinamentoODI Series - Treinamento
ODI Series - Treinamento
 
BluDotNet - Entity Framework Code First Migrations
BluDotNet - Entity Framework Code First MigrationsBluDotNet - Entity Framework Code First Migrations
BluDotNet - Entity Framework Code First Migrations
 
Aplicações de tempo real com Meteor.js
Aplicações de tempo real com Meteor.jsAplicações de tempo real com Meteor.js
Aplicações de tempo real com Meteor.js
 
DB2 Express-C
DB2 Express-CDB2 Express-C
DB2 Express-C
 
Refactoring Databases
Refactoring DatabasesRefactoring Databases
Refactoring Databases
 
Artigo data warehouse bd ii - 2015-1 a
Artigo data warehouse   bd ii - 2015-1 aArtigo data warehouse   bd ii - 2015-1 a
Artigo data warehouse bd ii - 2015-1 a
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
 
Artigo data warehouse bd ii - 2015-1
Artigo data warehouse   bd ii - 2015-1Artigo data warehouse   bd ii - 2015-1
Artigo data warehouse bd ii - 2015-1
 
MSPti - IntegraTMS - Apresentação Funcional
MSPti - IntegraTMS - Apresentação FuncionalMSPti - IntegraTMS - Apresentação Funcional
MSPti - IntegraTMS - Apresentação Funcional
 
Amazon Redshift
Amazon RedshiftAmazon Redshift
Amazon Redshift
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
 
Monitorando aplicações distribuidas nativas em cloud com Prometheus
Monitorando aplicações distribuidas nativas em cloud com PrometheusMonitorando aplicações distribuidas nativas em cloud com Prometheus
Monitorando aplicações distribuidas nativas em cloud com Prometheus
 
TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...
TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...
TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...
 

Replicação multi-master, sincronização filtrada e transformação com SymmetricDS

  • 1. Replicação multi-master, sincronização ltrada e transformação Cesar Romero Software Architect, Trier Sistemas - Tubarão - SC Contato cesarliws@gmail.com http://blog.cesarromero.com.br/ @cesarliws
  • 2. Agenda Replicação Multi-master Casos de uso x Soluções Internas SymmetricDS Recursos Requisitos Arquitetura Instalação Con guração da Replicação Con guração da Transformação Con guração de Filtros Solução de Problemas
  • 3. Replicação Multi-master É um método de replicação de banco de dados que permite que os dados sejam armazenados em um grupo de computadores, e atualizados por qualquer membro do grupo. Todos os membros do grupo gravam e respondem a consultas. É responsável por propagar as alterações de dados feitas por cada membro para o grupo e resolver con itos que possam surgir entre as alterações simultâneas feitas por diferentes membros. Wikipedia: Multi-master replication(https://en.wikipedia.org/wiki/Multi-master_replication)
  • 4. Casos de uso - Internos Replicação de Banco de Dados produtos da empresa ERP cliente x cloud x departamentos de serviços de clientes entre liais matriz x filiais x depósitos x centrais de distribuição, etc sistemas internos atendimentos para banco de dados de análises de negócios e métricas novos projetos cloud x clientes
  • 5. O que tinhamos? Replicadores desenvolvidos para cada projeto Manutenção constante Falta de padronização Evolução limitada Replicador não é um produto, é uma ferramenta
  • 6. SymmetricDS é um software open source para replicação de banco de dados e arquivos, com suporte a replicação de uma via, multi-master, sincronização ltrada e transformações. Projetado para suportar um grande número de banco de dados, trabalhar em redes de baixa taxa de transferência e suportar períodos de interrupção de rede. Licença GPL version 3.0 www.symmetricds.org(https://www.symmetricds.org) www.jumpmind.com/products/symmetricds(http://www.jumpmind.com/products/symmetricds)
  • 7. SymmetricDS - Principais Recursos Replicação de Banco de Dados Capturar de dados alterados e replicar em tempo quase real - Change Data Capture (CDC). Filtragem vertical e horizontal de partes de uma tabela. Transformação para conversão, melhoria e ltro de dados. Mapear colunas e tabelas para ligar diferentes aplicações. Detecta con itos e resolve usando regras automatizadas ou noti cação para intervenção manual. Suporte a Transações Criação de Banco de dados Automática Versionamento de Banco de Dados
  • 8. SymmetricDS - Principais Recursos Con guração Con guração Centralizada Sincronização Uni-direcional, bi-direcional e multi-master Sincronização agendada ou contínua em tempo quase real. Sincronização organizada em grupos. Alterações agrupadas em lotes para melhor rastreamento e e ciência. Carga inicial de dados para preparar o banco de dados e sistema de arquivos remoto para a sincronização das alterações.
  • 9. SymmetricDS - Principais Recursos Comunicação Protocolo e ciente para operação em redes de baixa taxa de transferência. Criptogra a na transferência para comunicação segura. Recuperação automatica após indisponibilidade e quedas de rede. Garantia de Entrega Canais Independentes de Sincronização
  • 10. SymmetricDS - Principais Recursos Mobile Android - biblioteca Java. iOS - biblioteca C. Syncronização bidirecional do SQLite para qualquer banco de dados. Funciona no modo O ine e sincroniza automaticamente quando a rede está disponível.
  • 11. SymmetricDS - Principais Recursos Sincronização de Arquivos API Extensível Instalação: Aplicativo, Serviço, Aplicação Web e Componente Embutido Pode ser Embutido em outra Aplicação - PDV Gerenciamento Remoto - Console JMX ou REST
  • 12. SymmetricDS - Banco de dados Suportados Mais de 20 diferentes bancos de dados suportados Derby, DB2, Firebird, Greenplum, H2, HSQLDB, Informix, Interbase, MariaDB, MongoDB, MySQL, Oracle,PostgreSQL, Redshift, SQL Anywhere, SQL Azure, SQL Server, SQLite, Sybase
  • 13. SymmetricDS - Pré Requisitos Java SE Runtime 7 ou 8 Sistemas Operacionais Linux, Windows, Unix, Mac OS X, Android, iOS e Windows Mobile Servidores de Aplicação Tomcat, JBoss, Jetty, WebLogic, WebSphere www.jumpmind.com/products/symmetricds/requirements(http://www.jumpmind.com/products/symmetricds/requirements)
  • 15. SymmetricDS - Arquitetura Con guração no banco de dados Central em tabelas do SymmetricDS. As tabelas con guradas para replicação são examinadas e são criadas triggers para gravar as alterações, a replicação de dados contém os valores antes e depois das alterações e são armazenados no formato CSV. Após as alterações serem capturadas, o destino será de nido a partir das rotas con guradas, os dados são extraídos no formato CSV e transformados, quando necessário, então é criado um arquivo com o lote, antes de ser enviado para o destino através de http. Quando o lote é recebido no destino, ele será carregado e aplicado no banco de dados.
  • 16. SymmetricDS - Instalação Instalação Pré Requisitos - Java Download do SymmetricDS www.symmetricds.org/download(http://www.symmetricds.org/download) Descompactar arquivo .zip
  • 17. SymmetricDS - Instalação Con gurar node Central na pasta engines "engines/central-1.properties" external.id=1 engine.name=central-1 sync.url=http://138.204.120.35:31415/sync/central-1 group.id=grupo_central db.url=jdbc:postgresql://127.0.0.1/database?protocolVersion=2&socketTimeout=300&tcpKeepAlive=true db.driver=org.postgresql.Driver db.user=username db.password=enc:encripted_password registration.url= db.validation.query=select 1 db.init.sql= db.connection.properties= Instalar e Iniciar Serviço - as tabelas do SymmetricDS são criadas Executar o SQL de con guração da replicação
  • 18. SymmetricDS - Con gurar Replicação Con guração Padrão INSERT INTO sym_node_group (node_group_id) VALUES ('grupo_central'); INSERT INTO sym_node_group (node_group_id) VALUES ('grupo_loja'); -- grupo_loja envia e busca alterações INSERT INTO sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) VALUES ('grupo_loja', 'grupo_central', 'P'); -- grupo_central aguarda conexões do grupo_loja e recebe e disponbiliza alterações INSERT INTO sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) VALUES ('grupo_central', 'grupo_loja', 'W'); INSERT INTO sym_router (router_id, source_node_group_id, target_node_group_id, create_time, last_update_time) VALUES ('grupo_central-grupo_loja-w', 'grupo_central', 'grupo_loja', current_timestamp, current_timestamp INSERT INTO sym_router (router_id, source_node_group_id, target_node_group_id, create_time, last_update_time) VALUES ('grupo_loja-grupo_central-p', 'grupo_loja', 'grupo_central', current_timestamp, current_timestamp
  • 19. SymmetricDS - Con gurar Replicação Con guração Tabelas INSERT INTO sym_trigger (trigger_id, source_schema_name, source_table_name, channel_id, sync_on_incoming_bat VALUES ('public.produto', 'public', 'produto', 'default', 1, current_timestamp, current_timestamp); INSERT INTO sym_trigger_router (trigger_id, router_id, initial_load_order, create_time, last_update_time) VALUES ('public.produto', 'grupo_central-grupo_loja-w', '218', current_timestamp, current_timestamp); INSERT INTO sym_trigger_router (trigger_id, router_id, initial_load_order, create_time, last_update_time) VALUES ('public.produto', 'grupo_loja-grupo_central-p', '218', current_timestamp, current_timestamp);
  • 20. Con gurar Transformação - Tabelas Transformação de uma para multiplas tabelas Especi car a direção, quando executar e quais tabelas são envolvidas INSERT INTO sym_transform_table (transform_id, source_node_group_id, target_node_group_id, transform_point, source_table_name, target_table_name, delete_action, column_policy) VALUES ('clientes_para_clientes_importados', 'grupo_loja', 'grupo_central', 'EXTRACT', 'clientes', 'clientes_importados', 'NONE', 'SPECIFIED'), ('customers_to_customers', 'grupo_loja', 'grupo_central', 'EXTRACT', 'clientes', 'clientes', 'NONE', 'IMPLIED');
  • 21. Con gurar Transformação - Colunas Especi car as colunas envolvidas e o tipo da transformação INSERT INTO sym_transform_column (transform_id, include_on, source_column_name, target_column_name, pk, transform_type) VALUES ('clientes_para_clientes_importados', '*', 'id', 'id_cliente', 1, 'copy'), ('clientes_para_clientes_importados', '*', 'nome', 'nome_cliente', 1, 'copy'), ('clientes', '*', 'id', 'id', 0, 'copy');
  • 22. Con gurar Filtros Antes de gravar Após gravar Após gravar o Lote Após commit do lote Roolback do lote Quando ocorre um Erro insert into sym_load_filter (...) values ('SampleFilter','BSH','Client','Server',NULL,NULL, 'ITEM_SELLING_PRICE', 1, 1, 1,' if (OLD_COST > COST) { return false } else { return true } ', null,null,null,null,null, current_timestamp,'Documentation',current_timestamp,1,1);
  • 23. SymmetricDS - Instalação Filial Instalar e Con gurar o SymmetricDS na Filial "engines/loja-2.properties" external.id=2 engine.name=loja-2 sync.url=http://localhost:31415/sync/loja-2 group.id=grupo_loja db.url=jdbc:postgresql://127.0.0.1/database?protocolVersion=2&socketTimeout=300&tcpKeepAlive=true db.driver=org.postgresql.Driver db.user=username db.password=enc:encripted_password registration.url=http://138.204.120.30:31415/sync/central-1 db.validation.query=select 1 db.init.sql= db.connection.properties= Instalar e Iniciar o Serviço
  • 24. SymmetricDS - Diretórios e Arquivos conf: para con gurações detalhadas do comportamento do SymmetricDS engines: cada arquivo corresponde a um node, e a um único banco de dados logs: contém os logs da replicação e erros ocorridos tmp: arquivos que serão enviados ou que foram recebidos
  • 25. SymmetricDS - Resolução de problemas Como identi car erros no Envio Documentação: "Outgoing Batch Errors"(http://www.symmetricds.org/doc/3.8/html/user-guide.html#_outgoing_batch_errors) -- lista a fila de pacotes do replicador que estão com erro SELECT * FROM sym_outgoing_batch WHERE error_flag = 1; -- conta o número de pacotes pendentes, pode ter com ou sem erros SELECT COUNT(*) FROM sym_outgoing_batch WHERE status != 'OK'; -- lista registros do sistema pendentes em pacotes com erro SELECT * FROM sym_data WHERE data_id IN ( SELECT data_id FROM sym_data_event WHERE batch_id IN ( SELECT batch_id FROM sym_outgoing_batch WHERE error_flag = 1));
  • 26. SymmetricDS - Resolução de problemas Tabela de Erros Erros no recebimento cam na tabela sym_incoming_error
  • 27. Thank you Cesar Romero Software Architect, Trier Sistemas, Tubarão - SC cesarliws@gmail.com(mailto:cesarliws@gmail.com) http://blog.cesarromero.com.br/(http://blog.cesarromero.com.br/) @cesarliws(http://twitter.com/cesarliws)