Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

Marcelo Altmann

September 20, 2015
Tweet

More Decks by Marcelo Altmann

Other Decks in Technology

Transcript

  1. 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
  2. Agenda > Topologias > Como Funciona ? > Formatos de

    logs > Métodos de sincronia > Crash safe > SSL > GTID > Heartbeat > Checksum > Variáveis / Dicas importantes > Monitoramento
  3. Topologias - Multi Master • auto_increment_increment = 2 • auto_increment_offset

    = 1 • auto_increment_increment = 2 • auto_increment_offset = 2
  4. 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
  5. 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
  6. Métodos de sincronia - asynchronous • Método padrão de sincronía

    ✓ Commit é mais rápido × Risco maior de perda de dados
  7. 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
  8. SSL

  9. 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
  10. Checksum • MySQL Utilities - mysqlrplsync • Percona toolkit -

    pt-table-checksum • Percona toolkit - pt-table-sync
  11. 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
  12. 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