Sei sulla pagina 1di 29

ERBD 2007 Oficina: Replicao de banco de dados

Replicao de Banco de Dados com o MySQL


Jos Maurcio Carr Maciel jmmaciel@upf.br

ERBD 2007 Oficina: Replicao de banco de dados

Roteiro
Introduo Conceitos de replicao de banco de dados Modelos de replicao MySQL 5.0 caractersticas e recursos Configurao de replicao Exerccios prticos Problemas e limitaes Consideraes finais

ERBD 2007 Oficina: Replicao de banco de dados

Introduo
Crescimento do uso de software Open-source nas organizaes LAMP (Linux + Apache + MySQL + PHP) Crescimento no uso de MySQL no desenvolvimento de aplicaes corporativas Custos de comunicao decrescentes Organizaes distribudas geograficamente utilizam a replicao como forma de integrao

ERBD 2007 Oficina: Replicao de banco de dados

Introduo
Distribuio de dados
Organizaes dispersas geograficamente

Balanceamento de carga
Aplicaes de Data Warehousing

Backup on-line Aumento da disponibilidade e confiabilidade

ERBD 2007 Oficina: Replicao de banco de dados

Conceitos
Replicao: consiste em manter uma ou mais cpias de um banco de dados com o objetivo do aumentar a disponibilidade e confiabilidade Modelo de replicao: o projeto de uma configurao de replicao, detalhando quais servidores, banco de dados, tabelas, bem como os fluxos de dados envolvidos

ERBD 2007 Oficina: Replicao de banco de dados

Conceitos: Tipos de replicao


Master-slave: permite atualizaes em somente uma das rplicas chamada primria. As demais rplicas (slaves) recebem as modificaes atravs da cpia primria (master) Multimaster: permite atualizaes em todas as rplicas

ERBD 2007 Oficina: Replicao de banco de dados

Conceitos: Tempo de atualizao


Assncrono: modificaes so propagadas posteriormente, em tempo pr-determinado (segundos, minutos, horas, dias, etc ...) e em uma nova transao Sncrono: a propagao das modificaes para a(s) rplica(s) feita instantaneamente (dentro da mesma transao)

ERBD 2007 Oficina: Replicao de banco de dados

Modelos de replicao
Master/slave

permite que uma mesma cpia de um banco de dados resida em mais de um servidor possibilita balano de carga para situaes onde h maior quantidade de leituras do que de atualizaes

ERBD 2007 Oficina: Replicao de banco de dados

Modelos de replicao
Dual master

Permite que dois servidores gravem e propaguem modificaes um ao outro til para situaes onde duas partes geograficamente separadas de uma organizao necessitam ler e gravar uma mesma base de dados

ERBD 2007 Oficina: Replicao de banco de dados

Modelos de replicao
Dual master with slaves Extenso do modelo anterior, acrescentando um ou mais slaves, melhorando o tempo de resposta de consultas

ERBD 2007 Oficina: Replicao de banco de dados

Modelos de replicao
Replication Ring (multimaster) Assim como o modelo dual master, cada servidor pode receber e propagar atualizaes Modelo bastante frgil, pois se um servidor estiver indisponvel, o ciclo de propagaes quebrado

ERBD 2007 Oficina: Replicao de banco de dados

MySQL 5.0: caractersticas


MySQL AB Open source GPL Relacional, SQL ANSI storage engines selecionveis ex: innodb, myISAM, MaxDB, etc ... transaes, stored procedures and functions, triggers, views e cursors

ERBD 2007 Oficina: Replicao de banco de dados

MySQL: suporte replicao


Assncrona: um servidor atua como master, enquanto um ou mais servidores atuam como slaves Sncrona: presente na opo MySQL Cluster (atualmente no suportada na verso Windows do SGBD)

ERBD 2007 Oficina: Replicao de banco de dados

MySQL: implementao de replicao


Baseada no registro de todas modificaes realizadas pelo servidor master em seu log binrio Cada servidor slave recebe do servidor master os registros de modificaes realizadas e as executa em sua cpia local do banco de dados Gerao de log binrio desabilitada por padro

ERBD 2007 Oficina: Replicao de banco de dados

MySQL: configurao de replicao


Regras bsicas
Cada servidor deve possui uma identificao (ID) nica Cada slave pode ter somente um master Cada master pode ter vrios slaves Slaves podem tambm ser masters de outros slaves

ERBD 2007 Oficina: Replicao de banco de dados

MySQL: Configurao de replicao


Em um novo servidor
1. 2. 3. 4. 5. Criar uma conta com privilgios de replicao no master Finalizar ambos servidores Modificar o arquivo de configurao my.ini (my.cnf) de cada servidor participante Reiniciar o master e verificar a criao do log binrio Reiniciar o slave e verificar se ocorre propagao de atualizaes

ERBD 2007 Oficina: Replicao de banco de dados

MySQL: Configurao de replicao


Criao da conta para replicao
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO usuario@"%" identified by "senha";

ERBD 2007 Oficina: Replicao de banco de dados

MySQL: Configurao de replicao


Arquivo de configurao
1

Master

Slave

Arquivo my.ini

Arquivo my.ini

# configuracao master [mysqld] server-id=1 log-bin=log_binario

# configuracao slave [mysqld] server-id=2 master-host=ip_servidor master-user=usuario_replicacao master-password=senha_usuario master-port=3306

ERBD 2007 Oficina: Replicao de banco de dados

Exerccio 1
1 2

Master

Slave

Configurar um modelo master-slave de replicao Assunto: matriz e filial de uma loja X Representar de forma parcial o banco de dados (ex: marcas e produtos)

ERBD 2007 Oficina: Replicao de banco de dados

CREATE DATABASE loja; USE loja; CREATE TABLE marcas ( codigomarca INT AUTO_INCREMENT, marca VARCHAR(30), PRIMARY KEY(codigomarca) ); CREATE TABLE produtos ( codigoproduto INT AUTO_INCREMENT, descricao VARCHAR(40), preco DECIMAL(6,2), marca INT, PRIMARY KEY (codigoproduto), FOREIGN KEY (marca) REFERENCES marcas(codigomarca) );

ERBD 2007 Oficina: Replicao de banco de dados

MySQL: Opes avanadas de configurao (slave)


Master-connect-retry = segundos determina o nmero de segundos que o slave aguarda antes de tentar sincronismo de dados o master Replicate-do-db = nome_bd determina que o slave deve somente replicar modificaes realizadas no banco de dados indicado Replicate-ignore-db = nome_bd determina que o slave deve ignorar modificaes realizadas no banco de dados indicado

ERBD 2007 Oficina: Replicao de banco de dados

MySQL: Opes avanadas de configurao (slave)


Replicate-do-table = nome_bd.tabela determina que o slave deve considerar somente as modificaes realizadas na tabela indicada Replicate-ignore-table = nome_bd.tabela determina que o slave deve ignorar as modificaes realizadas na tabela indicada Read-only quando esta opo utilizada, o servidor no permite atualizaes, exceto as propagaes de atualizaes provenientes do master

ERBD 2007 Oficina: Replicao de banco de dados

Exerccio 2
1 2

Master

Master

Configurar um modelo multimaster de replicao Assunto: Universidade Representar de forma parcial o banco de dados (ex: alunos, disciplinas, cursos)

ERBD 2007 Oficina: Replicao de banco de dados

Problemas conhecidos
Modificaes de dados diretamente no slave podem: introduzir inconsistncia causar violao de chaves primrias Opo read-only previne ID de servidores duplicados Falhas de replicao Dependncias no replicadas Causam falhas de replicao por violao de chaves estrangeiras

ERBD 2007 Oficina: Replicao de banco de dados

Problemas conhecidos
Auto_increment causa violao de chave primria em replicaes multimaster soluo 1: compor chave primria acrescentando ID do servidor

ERBD 2007 Oficina: Replicao de banco de dados

Problemas conhecidos
soluo 2: definir faixas diferentes de auto incremento para cada servidor
1

[mysqld] auto_increment_increment = 10 auto_increment_offset = 1

[mysqld] auto_increment_increment = 10 auto_increment_offset = 2

ERBD 2007 Oficina: Replicao de banco de dados

[server 1] select * from x; +-----+------+ | id | c | +-----+------+ | 1 | aaa | | 11 | bbb | | 21 | ccc | +-----+------+

[node B] select * from x; +-----+------+ | id | c | +-----+------+ | 2 | xxx | | 12 | yyy | | 22 | zzz | +-----+------+

ERBD 2007 Oficina: Replicao de banco de dados

Consideraes finais

ERBD 2007 Oficina: Replicao de banco de dados

Para saber mais


MySQL AB. MYSQL 5.0 Reference Manual. Disponvel online em: http://downloads.mysql.com/docs/refman-5.0-en.a4.pdf Vaswani, V. MySQL: The Complete Reference. New York: McGraw-Hill Osborne, 2004. Zawodny, J. D.; Balling D. J. High Performance MySQL. O'Reilly &Associates, 2004. Disponvel online em: http://www.oreilly.com/catalog/hpmysql/chapter/ch07.pdf