SlideShare ist ein Scribd-Unternehmen logo
1 von 43
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/secao/banco-de-dados/mysql/
Oracle Certified Professional , MySQL 5 Database Administrator
Oracle Certified Professional , MySQL 5 Developer
Agenda
> Topologias
> Como Funciona ?
> Formatos de logs
> Métodos de sincronia
> Crash safe
> SSL
> GTID
> Heartbeat
> Checksum
> Variáveis / Dicas importantes
> Monitoramento
Topologias
Topologias - Master -> Slave
Topologias - Multi Master
● auto_increment_increment = 2
● auto_increment_offset = 1
● auto_increment_increment = 2
● auto_increment_offset = 2
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 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
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
● 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
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 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
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_info
● mysql.slave_relay_log_info
SSL
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
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 ( 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
Monitoramento
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
Perguntas ?
Perguntas ?
● @altmannmarcelo
● altmannmarcelo@gmail.com
● pt.planet.mysql.com
● Forum em português - http://forums.mysql.com/list.php?72

Weitere ähnliche Inhalte

Ähnlich wie MySQL Replicação

UNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoUNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoWagner Bianchi
 
Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6MySQL Brasil
 
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasLeonardo Pedroso Costa
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores LinuxSoftD Abreu
 
Fundamentos Replicação MySQL
Fundamentos Replicação MySQLFundamentos Replicação MySQL
Fundamentos Replicação MySQLAlexandre Almeida
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresDouglas V. Pasqua
 
Backup Online no MySQL com Percona Xtrabackup
Backup Online no MySQL com Percona XtrabackupBackup Online no MySQL com Percona Xtrabackup
Backup Online no MySQL com Percona XtrabackupMarcelo Altmann
 
Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...
Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...
Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...Joao Galdino Mello de Souza
 
Seguranca em Servidores Linux
Seguranca em Servidores LinuxSeguranca em Servidores Linux
Seguranca em Servidores LinuxAlessandro Silva
 
MySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationMySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationWagner Bianchi
 
Forefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteForefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteUilson Souza
 
Como lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQLComo lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQLDiego Santos
 
Capítulo 16 rsyslog
Capítulo 16   rsyslogCapítulo 16   rsyslog
Capítulo 16 rsyslogPaulo Kutwak
 
Resumo comandos cisco
Resumo comandos ciscoResumo comandos cisco
Resumo comandos ciscoAllan Alencar
 
Manual basis sap_r3
Manual basis sap_r3Manual basis sap_r3
Manual basis sap_r3Criszh90
 
Manual basis sap_r3
Manual basis sap_r3Manual basis sap_r3
Manual basis sap_r3Criszh90
 
Manualbasissapr3 110216062842-phpapp02
Manualbasissapr3 110216062842-phpapp02Manualbasissapr3 110216062842-phpapp02
Manualbasissapr3 110216062842-phpapp02Ranjith Jacob
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interaçãoHumberto Cepep
 
Apresentação Sobre Sistemas Operacionais com Orbis OS
Apresentação Sobre Sistemas Operacionais com Orbis OSApresentação Sobre Sistemas Operacionais com Orbis OS
Apresentação Sobre Sistemas Operacionais com Orbis OSLucasNogueira565696
 

Ähnlich wie MySQL Replicação (20)

UNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoUNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - Replicação
 
Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6
 
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferenças
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores Linux
 
Fundamentos Replicação MySQL
Fundamentos Replicação MySQLFundamentos Replicação MySQL
Fundamentos Replicação MySQL
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedores
 
Backup Online no MySQL com Percona Xtrabackup
Backup Online no MySQL com Percona XtrabackupBackup Online no MySQL com Percona Xtrabackup
Backup Online no MySQL com Percona Xtrabackup
 
Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...
Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...
Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...
 
Seguranca em Servidores Linux
Seguranca em Servidores LinuxSeguranca em Servidores Linux
Seguranca em Servidores Linux
 
MySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationMySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source Replication
 
GlusterFs
GlusterFsGlusterFs
GlusterFs
 
Forefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteForefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamente
 
Como lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQLComo lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQL
 
Capítulo 16 rsyslog
Capítulo 16   rsyslogCapítulo 16   rsyslog
Capítulo 16 rsyslog
 
Resumo comandos cisco
Resumo comandos ciscoResumo comandos cisco
Resumo comandos cisco
 
Manual basis sap_r3
Manual basis sap_r3Manual basis sap_r3
Manual basis sap_r3
 
Manual basis sap_r3
Manual basis sap_r3Manual basis sap_r3
Manual basis sap_r3
 
Manualbasissapr3 110216062842-phpapp02
Manualbasissapr3 110216062842-phpapp02Manualbasissapr3 110216062842-phpapp02
Manualbasissapr3 110216062842-phpapp02
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interação
 
Apresentação Sobre Sistemas Operacionais com Orbis OS
Apresentação Sobre Sistemas Operacionais com Orbis OSApresentação Sobre Sistemas Operacionais com Orbis OS
Apresentação Sobre Sistemas Operacionais com Orbis OS
 

Mehr von Marcelo Altmann

Percona XtraBackup - New Features and Improvements
Percona XtraBackup - New Features and ImprovementsPercona XtraBackup - New Features and Improvements
Percona XtraBackup - New Features and ImprovementsMarcelo Altmann
 
Troubleshooting MySQL from a MySQL Developer Perspective
Troubleshooting MySQL from a MySQL Developer PerspectiveTroubleshooting MySQL from a MySQL Developer Perspective
Troubleshooting MySQL from a MySQL Developer PerspectiveMarcelo Altmann
 
Percona University - ProxySQL para MySQL
Percona University - ProxySQL para MySQLPercona University - ProxySQL para MySQL
Percona University - ProxySQL para MySQLMarcelo Altmann
 
DB Floripa - ProxySQL para MySQL
DB Floripa - ProxySQL para MySQLDB Floripa - ProxySQL para MySQL
DB Floripa - ProxySQL para MySQLMarcelo Altmann
 
Percona Xtrabackup Best Practices
Percona Xtrabackup Best PracticesPercona Xtrabackup Best Practices
Percona Xtrabackup Best PracticesMarcelo Altmann
 
MySQL Backup Best Practices and Case Study- .ie Continuous Restore Process
MySQL Backup Best Practices and Case Study- .ie Continuous Restore ProcessMySQL Backup Best Practices and Case Study- .ie Continuous Restore Process
MySQL Backup Best Practices and Case Study- .ie Continuous Restore ProcessMarcelo Altmann
 
A Percona Support Engineer Walkthrough on pt-stalk
A Percona Support Engineer Walkthrough on pt-stalkA Percona Support Engineer Walkthrough on pt-stalk
A Percona Support Engineer Walkthrough on pt-stalkMarcelo Altmann
 
MysQL melhores práticas de seguranca
MysQL  melhores práticas de segurancaMysQL  melhores práticas de seguranca
MysQL melhores práticas de segurancaMarcelo Altmann
 
Percona Live London 2014 - MySQL Backup Strategy @ IEDR
Percona Live London 2014 - MySQL Backup Strategy @ IEDRPercona Live London 2014 - MySQL Backup Strategy @ IEDR
Percona Live London 2014 - MySQL Backup Strategy @ IEDRMarcelo Altmann
 

Mehr von Marcelo Altmann (13)

Percona XtraBackup - New Features and Improvements
Percona XtraBackup - New Features and ImprovementsPercona XtraBackup - New Features and Improvements
Percona XtraBackup - New Features and Improvements
 
Troubleshooting MySQL from a MySQL Developer Perspective
Troubleshooting MySQL from a MySQL Developer PerspectiveTroubleshooting MySQL from a MySQL Developer Perspective
Troubleshooting MySQL from a MySQL Developer Perspective
 
Backup para MySQL
Backup para MySQLBackup para MySQL
Backup para MySQL
 
GDB e Análise de Bugs
GDB e Análise de BugsGDB e Análise de Bugs
GDB e Análise de Bugs
 
Percona University - ProxySQL para MySQL
Percona University - ProxySQL para MySQLPercona University - ProxySQL para MySQL
Percona University - ProxySQL para MySQL
 
DB Floripa - ProxySQL para MySQL
DB Floripa - ProxySQL para MySQLDB Floripa - ProxySQL para MySQL
DB Floripa - ProxySQL para MySQL
 
Percona Xtrabackup Best Practices
Percona Xtrabackup Best PracticesPercona Xtrabackup Best Practices
Percona Xtrabackup Best Practices
 
MySQL Backup Best Practices and Case Study- .ie Continuous Restore Process
MySQL Backup Best Practices and Case Study- .ie Continuous Restore ProcessMySQL Backup Best Practices and Case Study- .ie Continuous Restore Process
MySQL Backup Best Practices and Case Study- .ie Continuous Restore Process
 
A Percona Support Engineer Walkthrough on pt-stalk
A Percona Support Engineer Walkthrough on pt-stalkA Percona Support Engineer Walkthrough on pt-stalk
A Percona Support Engineer Walkthrough on pt-stalk
 
MysQL melhores práticas de seguranca
MysQL  melhores práticas de segurancaMysQL  melhores práticas de seguranca
MysQL melhores práticas de seguranca
 
ProxySQL para mysql
ProxySQL para mysqlProxySQL para mysql
ProxySQL para mysql
 
Optimizando MySQL
Optimizando MySQLOptimizando MySQL
Optimizando MySQL
 
Percona Live London 2014 - MySQL Backup Strategy @ IEDR
Percona Live London 2014 - MySQL Backup Strategy @ IEDRPercona Live London 2014 - MySQL Backup Strategy @ IEDR
Percona Live London 2014 - MySQL Backup Strategy @ IEDR
 

MySQL Replicação

  • 1. MySQL - Melhores práticas de replicação de dados
  • 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. Agenda > Topologias > Como Funciona ? > Formatos de logs > Métodos de sincronia > Crash safe > SSL > GTID > Heartbeat > Checksum > Variáveis / Dicas importantes > Monitoramento
  • 6. Topologias - Multi Master ● auto_increment_increment = 2 ● auto_increment_offset = 1 ● auto_increment_increment = 2 ● auto_increment_offset = 2
  • 7. Topologias - Ring / Circular
  • 8. Topologias - Ring / Circular
  • 16. Formatos de logs - STATEMENT
  • 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. Formatos de logs - ROW ● binlog_rows_query_log_events (> 5.6.2 )
  • 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
  • 21. Métodos de sincronia - asynchronous
  • 22. Métodos de sincronia - asynchronous ● Método padrão de sincronía ✓ Commit é mais rápido × Risco maior de perda de dados
  • 23. Métodos de sincronia - seminchronous
  • 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
  • 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. SSL
  • 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. GTID
  • 32. GTID ● Global Transaction IDentifier ● Server UUID + ID Transação
  • 33. GTID ● Auto posição nos slaves ○ MASTER_LOG_FILE ○ MASTER_LOG_POS ○ MASTER_AUTO_POSITION=1
  • 35. Heartbeat ● Percona toolkit - pt-heartbeat ● Table on master + cron
  • 37. Checksum ● MySQL Utilities - mysqlrplsync ● Percona toolkit - pt-table-checksum ● Percona toolkit - pt-table-sync
  • 38. Variáveis / dicas importantes
  • 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
  • 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
  • 43. Perguntas ? ● @altmannmarcelo ● altmannmarcelo@gmail.com ● pt.planet.mysql.com ● Forum em português - http://forums.mysql.com/list.php?72