Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
MySQL - Melhores práticas de
replicação de dados
Marcelo Altmann
Técnologo em Sistemas para Internet
MySQL DBA @ IEDR
Blogueiro
blog.marceloaltmann.com
imasters.com.br/sec...
Agenda
> Topologias
> Como Funciona ?
> Formatos de logs
> Métodos de sincronia
> Crash safe
> SSL
> GTID
> Heartbeat
> Ch...
Topologias
Topologias - Master -> Slave
Topologias - Multi Master
● auto_increment_increment = 2
● auto_increment_offset = 1
● auto_increment_increment = 2
● auto...
Topologias - Ring / Circular
Topologias - Ring / Circular
Como Funciona ?
Como Funciona?
Como Funciona?
Como Funciona?
Como Funciona?
Como Funciona?
Formatos de logs
Formatos de logs - STATEMENT
Formatos de logs - STATEMENT
● binlog_format = STATEMENT
● Formato padrão até a versão 5.7.6
✓ Formato consolidado, existe...
Formatos de logs - ROW
● binlog_rows_query_log_events (> 5.6.2 )
Formatos de logs - ROW
● binlog_format = ROW
● binlog_rows_query_log_events (> 5.6.2 )
● binlog_row_image=minimal
● Format...
Métodos de sincronia
Métodos de sincronia - asynchronous
Métodos de sincronia - asynchronous
● Método padrão de sincronía
✓ Commit é mais rápido
× Risco maior de perda de dados
Métodos de sincronia - seminchronous
Métodos de sincronia - semisynchronous
● Diponível a partir da versão 5.5
● MASTER:
○ INSTALL PLUGIN rpl_semi_sync_master ...
Crash safe
Crash safe
● master.info
● relay-log.info
Crash safe
Crash safe
● relay-log-info-repository=TABLE
● relay-log-recovery=1
● master_info_repository=TABLE
● mysql.slave_master_in...
SSL
SSL
● Tutorial - https://goo.gl/zPGRJh
● Configurar Master e Slaves para utilizar SSL
● Forçar usuário de replicação a uti...
GTID
GTID
● Global Transaction IDentifier
● Server UUID + ID Transação
GTID
● Auto posição nos slaves
○ MASTER_LOG_FILE
○ MASTER_LOG_POS
○ MASTER_AUTO_POSITION=1
Heartbeat
Heartbeat
● Percona toolkit - pt-heartbeat
● Table on master + cron
Checksum
Checksum
● MySQL Utilities - mysqlrplsync
● Percona toolkit - pt-table-checksum
● Percona toolkit - pt-table-sync
Variáveis / dicas importantes
Variáveis / dicas importantes
● log_slave_updates
● slave_net_timeout (padrão 3600)
● sync_binlog
● slave-parallel-workers...
Monitoramento
Monitoramento
● SHOW SLAVE HOSTS - - MASTER
● SHOW SLAVE STATUS - - SLAVE
○ Slave_IO_Running
○ Last_IO_Errno
○ Last_IO_Err...
Perguntas ?
Perguntas ?
● @altmannmarcelo
● altmannmarcelo@gmail.com
● pt.planet.mysql.com
● Forum em português - http://forums.mysql....
Upcoming SlideShare
Loading in …5
×

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

632 views

Published on

Melhores práticas configurando replicação de dados utilizando MySQL

Published in: Internet
  • Be the first to comment

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

  1. 1. MySQL - Melhores práticas de replicação de dados
  2. 2. Marcelo Altmann Té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
  3. 3. Agenda > Topologias > Como Funciona ? > Formatos de logs > Métodos de sincronia > Crash safe > SSL > GTID > Heartbeat > Checksum > Variáveis / Dicas importantes > Monitoramento
  4. 4. Topologias
  5. 5. Topologias - Master -> Slave
  6. 6. Topologias - Multi Master ● auto_increment_increment = 2 ● auto_increment_offset = 1 ● auto_increment_increment = 2 ● auto_increment_offset = 2
  7. 7. Topologias - Ring / Circular
  8. 8. Topologias - Ring / Circular
  9. 9. Como Funciona ?
  10. 10. Como Funciona?
  11. 11. Como Funciona?
  12. 12. Como Funciona?
  13. 13. Como Funciona?
  14. 14. Como Funciona?
  15. 15. Formatos de logs
  16. 16. Formatos de logs - STATEMENT
  17. 17. 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
  18. 18. Formatos de logs - ROW ● binlog_rows_query_log_events (> 5.6.2 )
  19. 19. 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
  20. 20. Métodos de sincronia
  21. 21. Métodos de sincronia - asynchronous
  22. 22. Métodos de sincronia - asynchronous ● Método padrão de sincronía ✓ Commit é mais rápido × Risco maior de perda de dados
  23. 23. Métodos de sincronia - seminchronous
  24. 24. 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
  25. 25. Crash safe
  26. 26. Crash safe ● master.info ● relay-log.info
  27. 27. Crash safe
  28. 28. Crash safe ● relay-log-info-repository=TABLE ● relay-log-recovery=1 ● master_info_repository=TABLE ● mysql.slave_master_info ● mysql.slave_relay_log_info
  29. 29. SSL
  30. 30. 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
  31. 31. GTID
  32. 32. GTID ● Global Transaction IDentifier ● Server UUID + ID Transação
  33. 33. GTID ● Auto posição nos slaves ○ MASTER_LOG_FILE ○ MASTER_LOG_POS ○ MASTER_AUTO_POSITION=1
  34. 34. Heartbeat
  35. 35. Heartbeat ● Percona toolkit - pt-heartbeat ● Table on master + cron
  36. 36. Checksum
  37. 37. Checksum ● MySQL Utilities - mysqlrplsync ● Percona toolkit - pt-table-checksum ● Percona toolkit - pt-table-sync
  38. 38. Variáveis / dicas importantes
  39. 39. 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
  40. 40. Monitoramento
  41. 41. 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
  42. 42. Perguntas ?
  43. 43. Perguntas ? ● @altmannmarcelo ● altmannmarcelo@gmail.com ● pt.planet.mysql.com ● Forum em português - http://forums.mysql.com/list.php?72

×