mysql - melhores práticas de replicação de dados

43
MySQL - Melhores práticas de replicação de dados

Upload: marcelo-altmann

Post on 16-Apr-2017

482 views

Category:

Internet


2 download

TRANSCRIPT

Page 1: MySQL - Melhores práticas de replicação de dados

MySQL - Melhores práticas de replicação

de dados

Page 2: MySQL - Melhores práticas de replicação de dados

Marcelo AltmannTécnologo em Sistemas para Internet

MySQL DBA @ IEDR

Blogueiro

blog.marceloaltmann.com

imasters.com.br/secao/banco-de-dados/mysql/

Oracle Certified Professional , MySQL 5 Database Administrator

Oracle Certified Professional , MySQL 5 Developer

Oracle Certified Associate , MySQL 5.0 / 5.1 / 5.5

Page 3: MySQL - Melhores práticas de replicação de dados

Agenda> Topologias> Como Funciona ?> Formatos de logs> Métodos de sincronia> Crash safe> SSL> GTID> Heartbeat> Checksum> Variáveis / Dicas importantes> Monitoramento

Page 4: MySQL - Melhores práticas de replicação de dados

Topologias

Page 5: MySQL - Melhores práticas de replicação de dados

Topologias - Master -> Slave

Page 6: MySQL - Melhores práticas de replicação de dados

Topologias - Multi Master

● auto_increment_increment = 2

● auto_increment_offset = 1

● auto_increment_increment = 2

● auto_increment_offset = 2

Page 7: MySQL - Melhores práticas de replicação de dados

Topologias - Ring / Circular

Page 8: MySQL - Melhores práticas de replicação de dados

Topologias - Ring / Circular

Page 9: MySQL - Melhores práticas de replicação de dados

Como Funciona ?

Page 10: MySQL - Melhores práticas de replicação de dados

Como Funciona?

Page 11: MySQL - Melhores práticas de replicação de dados

Como Funciona?

Page 12: MySQL - Melhores práticas de replicação de dados

Como Funciona?

Page 13: MySQL - Melhores práticas de replicação de dados

Como Funciona?

Page 14: MySQL - Melhores práticas de replicação de dados

Como Funciona?

Page 15: MySQL - Melhores práticas de replicação de dados

Formatos de logs

Page 16: MySQL - Melhores práticas de replicação de dados

Formatos de logs - STATEMENT

Page 17: MySQL - Melhores práticas de replicação de dados

Formatos de logs - STATEMENT● binlog_format = STATEMENT

● Formato padrão até a versão 5.7.6✓ Formato consolidado, existe desde a versão 3.23

✓ Requer pouco espaço para armazenamento

✓ Fácil leitura (mysqlbinlog)

× Pode gerar inconsistencia de dados (queries não determinísticas) - https://goo.gl/cpDd0h

× Requer mais processamento

× Requer mais locking

Page 18: MySQL - Melhores práticas de replicação de dados

Formatos de logs - ROW● binlog_rows_query_log_events (> 5.6.2 )

Page 19: MySQL - Melhores práticas de replicação de dados

Formatos de logs - ROW● binlog_format = ROW

● binlog_rows_query_log_events (> 5.6.2 )

● binlog_row_image=minimal

● Formato padrão desde a versão 5.7.7✓ Requer menos locking

✓ Utiliza menos processamento

✓ Todas as queries podem ser replicadas, maneira mais segura de replicação

× Requer mais espaço em disco / capacidade de rede

Page 20: MySQL - Melhores práticas de replicação de dados

Métodos de sincronia

Page 21: MySQL - Melhores práticas de replicação de dados

Métodos de sincronia - asynchronous

Page 22: MySQL - Melhores práticas de replicação de dados

Métodos de sincronia - asynchronous● Método padrão de sincronía

✓ Commit é mais rápido

× Risco maior de perda de dados

Page 23: MySQL - Melhores práticas de replicação de dados

Métodos de sincronia - seminchronous

Page 24: MySQL - Melhores práticas de replicação de dados

Métodos de sincronia - semisynchronous● Diponível a partir da versão 5.5

● MASTER:○ INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';○ rpl_semi_sync_master_enabled = 1○ rpl_semi_sync_master_timeout = N - - padrão 10 segundos

● SLAVE:○ INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';○ rpl_semi_sync_slave_enabled = 1

✓ Menor risco de perda de dados

× Commit é mais demorado

Page 25: MySQL - Melhores práticas de replicação de dados

Crash safe

Page 26: MySQL - Melhores práticas de replicação de dados

Crash safe

● master.info

● relay-log.info

Page 27: MySQL - Melhores práticas de replicação de dados

Crash safe

Page 28: MySQL - Melhores práticas de replicação de dados

Crash safe● relay-log-info-repository=TABLE

● relay-log-recovery=1

● master_info_repository=TABLE

● mysql.slave_master_info

● mysql.slave_relay_log_info

Page 29: MySQL - Melhores práticas de replicação de dados

SSL

Page 30: MySQL - Melhores práticas de replicação de dados

SSL● Tutorial - https://goo.gl/zPGRJh

● Configurar Master e Slaves para utilizar SSL

● Forçar usuário de replicação a utilizar SSL ( REQUIRE SSL )

● Reconfigurar replicação ( CHANGE MASTER TO) para utilizar SSL

Page 31: MySQL - Melhores práticas de replicação de dados

GTID

Page 32: MySQL - Melhores práticas de replicação de dados

GTID● Global Transaction IDentifier

● Server UUID + ID Transação

Page 33: MySQL - Melhores práticas de replicação de dados

GTID● Auto posição nos slaves

○ MASTER_LOG_FILE○ MASTER_LOG_POS○ MASTER_AUTO_POSITION=1

Page 34: MySQL - Melhores práticas de replicação de dados

Heartbeat

Page 35: MySQL - Melhores práticas de replicação de dados

Heartbeat● Percona toolkit - pt-heartbeat● Table on master + cron

Page 36: MySQL - Melhores práticas de replicação de dados

Checksum

Page 37: MySQL - Melhores práticas de replicação de dados

Checksum● MySQL Utilities - mysqlrplsync● Percona toolkit - pt-table-checksum

● Percona toolkit - pt-table-sync

Page 38: MySQL - Melhores práticas de replicação de dados

Variáveis / dicas importantes

Page 39: MySQL - Melhores práticas de replicação de dados

Variáveis / dicas importantes● log_slave_updates● slave_net_timeout (padrão 3600)● sync_binlog● slave-parallel-workers ( 5.6+)● max_binlog_size (padrão 1G )● expire_logs_days● read_only● replicate-do-table=db_name.tbl_name / replicate-ignore-table=db_name.tbl_name

○ replicate-do-db / replicate-ignore-db / binlog-do-db / binlog-ignore-db● Delayed slave - CHANGE MASTER TO MASTER_DELAY = N;● mysqlbinlog --read-from-remote-server --stop-never --raw

Page 40: MySQL - Melhores práticas de replicação de dados

Monitoramento

Page 41: MySQL - Melhores práticas de replicação de dados

Monitoramento● SHOW SLAVE HOSTS - - MASTER● SHOW SLAVE STATUS - - SLAVE

○ Slave_IO_Running○ Last_IO_Errno○ Last_IO_Error○ Slave_SQL_Running○ Last_SQL_Errno○ Last_SQL_Error○ Seconds_Behind_Master

● Nagios● Munin / Cacti

Page 42: MySQL - Melhores práticas de replicação de dados

Perguntas ?

Page 43: MySQL - Melhores práticas de replicação de dados

Perguntas ?● @altmannmarcelo

[email protected]

● pt.planet.mysql.com

● Forum em português - http://forums.mysql.com/list.php?72