SlideShare uma empresa Scribd logo
1 de 22
© 2020 Percona1
Marcelo Altmann
GDB & Análise de bugs
Software Engineer
MySQL Brazil Virtual Meetup 2nd Edition
28/05/2020
© 2020 Percona2
Sobre Mim
© 2020 Percona3
Marcelo Altmann
▪ Desenvolvedor @ percona
• Engenheiro de Suporte Senior @ percona
• Líder Técnico @ percona
• MySQL DBA @ IEDR (CCTLD Irlanda)
▪ Tecnologo em Sistemas para
Internet
▪ Oracle ACE Associate
▪ blog.marceloaltmann.com
▪ Certificaçoes
• OCP, MySQL 5.7 Database Administrator
• OCP, MySQL 5.6 Database Administrator
• OCP, MySQL 5.6 Developer
• OCP, MySQL 5 Database Administrator
• OCP, MySQL 5 Developer
• OCP, MySQL 5.0/5.1/5.5
© 2020 Percona4
We are hiring!
● Database Engineer Remote (South America)
https://jobs.lever.co/percona?lever-via=ppuf96MTKk
© 2020 Percona5
MySQL está crashando ?!?!?!
© 2020 Percona6
Sessões do erro
© 2020 Percona7
Sessões do erro
1
2
3
© 2020 Percona8
Signals
● Definido em signals.h (linux)
© 2020 Percona9
Signals
● SIGABRT / 6 - Assertion declaradas no código.
○ ut_a(expressão) / ut_ad(condição) - Deve dar falso.
○ Utilizado para prevenir que erros se propaguem.
● SIGSEGV / 11 - Segmentation Fault
○ Proteção contra acesso inválido de memória.
○ Objeto deletado.
○ Área de memória externo ao programa.
© 2020 Percona10
Stack traces
▪ Finger print da execução até o momento do crash.
▪ Se Lê de baixo para cima / Bottom top
▪ Comum entre todas stack traces:
• handle_fatal_signal() - Responsável por tratar os sinais que abortam o server -
https://github.com/percona/percona-server/blob/8.0/sql/signal_handler.cc
• my_print_stacktrace() - Responsável por logar a execução do MySQL que falhou. Pode
ser desabilitado via --skip-stack-trace
© 2020 Percona11
Stack traces
© 2020 Percona12
Symbols
▪ Lista de funções do código fonte
▪ ID em hexadecimal
▪ Aumenta o tamanho do binário.
▪ Instalar o pacote -debuginfo
© 2020 Percona13
Symbols
▪nm -Dn /usr/sbin/mysqld > /tmp/symbols.out
▪ Extrair a assinatura em hexadecimal do stack trace:
cat /tmp/stack.tmp | awk -F'[' '{print $2}' | awk -
F ']' '{print $1}' > /tmp/stack.out
© 2020 Percona14
Symbols
© 2020 Percona15
GDB
▪ GNU Debugger
▪ Funciona em várias linguagens
▪ With Great Power, comes great responsibility
▪ Pode ser usado:
• Remoto
• Interpretando processo - gdb -p PID
• Rodando processo - gdb --args bin/mysqld [argumentos] --gdb
• Offline (coredump) - gdb bin/mysqld core.PID
© 2020 Percona16
GDB
▪ Break point - parar neste ponto quando a execução chegar.
▪ Next - rodar o código até a próxima linha.
▪ Continue - rodar o código até próximo break point.
▪ Step - entrar na função.
▪ Bt - Mostrar Backtrace / Stack trace.
▪ Frame - pular para frame especídico dentro da backtrace.
© 2020 Percona17
Poor Man's Profiler - PMP
▪ Agregador de stack traces.
▪ Útil para server com muitas threads
▪ https://poormansprofiler.org/
▪ Parte do Percona Toolkit - pt-pmp
© 2020 Percona18
cscope
▪ Browser para código fonte
▪ Mais otimizado que grep -Ri [texto] =)
▪ https://www.percona.com/blog/2017/09/12/cscope-searching-code-efficiently/
▪ https://github.com/altmannmarcelo/my_scripts/blob/master/bin/mycscope
• Innodb usa .ic
• Mensagem de erro são declaradas em .txt (errmsg-utf8.txt, messages_to_clients.txt,
messages_to_error_log.txt)
© 2020 Percona19
Mutex
▪ Proteção contra acesso simultaneo a hot area.
▪ Vou ler / escrever em variável X
mutex_lock(var_mutex);
var = 'bla';
mutex_unlock(var_mutex);
© 2020 Percona20
Link para gravação
https://www.youtube.com/watch?v=WkdWkcDz2Kk
© 2020 Percona21
D E M O T I M E ! ! !
Fails in 99.9% of the cases!
DATABASE PERFORMANCE
MATTERS
Database Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance Matters
Obrigado!

Mais conteúdo relacionado

Mais procurados

Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019CLEYSSON LIMA
 
Percona XtraBackup
Percona XtraBackupPercona XtraBackup
Percona XtraBackupWebgoal
 
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do InteriorDeploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do InteriorZabbix BR
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxThiago Paes
 
Apresentacao Interna GAE
Apresentacao Interna GAEApresentacao Interna GAE
Apresentacao Interna GAEMarcio Mangar
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Claudio Miranda
 
JBoss-WildFly - Avançado
JBoss-WildFly - AvançadoJBoss-WildFly - Avançado
JBoss-WildFly - AvançadoAdriano Schmidt
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMRodrigo Zaccara
 
Prática Laboratório CISCO - Balanceador
Prática Laboratório CISCO - BalanceadorPrática Laboratório CISCO - Balanceador
Prática Laboratório CISCO - BalanceadorWellington Oliveira
 
Prática Laboratório CISCO - NAT
Prática Laboratório CISCO - NATPrática Laboratório CISCO - NAT
Prática Laboratório CISCO - NATWellington Oliveira
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxThiago Paes
 
WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015Adriano Schmidt
 
Apresentação Software Freedom Day 2017 - Natal/RN - Algumas soluções F.O.S.S ...
Apresentação Software Freedom Day 2017 - Natal/RN - Algumas soluções F.O.S.S ...Apresentação Software Freedom Day 2017 - Natal/RN - Algumas soluções F.O.S.S ...
Apresentação Software Freedom Day 2017 - Natal/RN - Algumas soluções F.O.S.S ...Werneck Costa
 
pfSense - Proxy integrado ao AD Regras por usuários e grupos
pfSense - Proxy integrado ao AD Regras por usuários e grupospfSense - Proxy integrado ao AD Regras por usuários e grupos
pfSense - Proxy integrado ao AD Regras por usuários e gruposCavalcante Treinamentos
 

Mais procurados (20)

Samba4+debian8
Samba4+debian8Samba4+debian8
Samba4+debian8
 
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
 
FISL11 2010 - Automação de Datacenters
FISL11 2010 - Automação de DatacentersFISL11 2010 - Automação de Datacenters
FISL11 2010 - Automação de Datacenters
 
Zabbix Performance Tuning
Zabbix Performance TuningZabbix Performance Tuning
Zabbix Performance Tuning
 
Escalando Sites com Nginx
Escalando Sites com NginxEscalando Sites com Nginx
Escalando Sites com Nginx
 
Percona XtraBackup
Percona XtraBackupPercona XtraBackup
Percona XtraBackup
 
Zabbix
ZabbixZabbix
Zabbix
 
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do InteriorDeploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - Nginx
 
Apresentacao Interna GAE
Apresentacao Interna GAEApresentacao Interna GAE
Apresentacao Interna GAE
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7
 
JBoss-WildFly - Avançado
JBoss-WildFly - AvançadoJBoss-WildFly - Avançado
JBoss-WildFly - Avançado
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
 
Prática Laboratório CISCO - Balanceador
Prática Laboratório CISCO - BalanceadorPrática Laboratório CISCO - Balanceador
Prática Laboratório CISCO - Balanceador
 
Prática Laboratório CISCO - NAT
Prática Laboratório CISCO - NATPrática Laboratório CISCO - NAT
Prática Laboratório CISCO - NAT
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
Performance em Java
Performance em JavaPerformance em Java
Performance em Java
 
WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015
 
Apresentação Software Freedom Day 2017 - Natal/RN - Algumas soluções F.O.S.S ...
Apresentação Software Freedom Day 2017 - Natal/RN - Algumas soluções F.O.S.S ...Apresentação Software Freedom Day 2017 - Natal/RN - Algumas soluções F.O.S.S ...
Apresentação Software Freedom Day 2017 - Natal/RN - Algumas soluções F.O.S.S ...
 
pfSense - Proxy integrado ao AD Regras por usuários e grupos
pfSense - Proxy integrado ao AD Regras por usuários e grupospfSense - Proxy integrado ao AD Regras por usuários e grupos
pfSense - Proxy integrado ao AD Regras por usuários e grupos
 

Semelhante a GDB e Análise de Bugs

sys._current_frames(), Radiografando seu software em tempo real
 sys._current_frames(), Radiografando seu software em tempo real sys._current_frames(), Radiografando seu software em tempo real
sys._current_frames(), Radiografando seu software em tempo realLeonardo Rochael Almeida
 
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Filipo Mór
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017Fabio Janiszevski
 
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworksDo Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworksPablo Dall'Oglio
 
Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Giovanni Bassi
 
TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?tdc-globalcode
 
Zabbix monitorando o zimbra collaboration 8.8 (1)
Zabbix   monitorando o zimbra collaboration 8.8 (1)Zabbix   monitorando o zimbra collaboration 8.8 (1)
Zabbix monitorando o zimbra collaboration 8.8 (1)PAULO R. DEOLINDO JUNIOR
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
Angular Extreme Performance
Angular  Extreme PerformanceAngular  Extreme Performance
Angular Extreme PerformanceGustavo Costa
 
O que você precisa saber sobre ASP.NET CORE
O que você precisa saber sobre ASP.NET COREO que você precisa saber sobre ASP.NET CORE
O que você precisa saber sobre ASP.NET CORERodrigo Kono
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformanceFelipe Ribeiro
 
Manual Kikrotik Completo
Manual Kikrotik CompletoManual Kikrotik Completo
Manual Kikrotik CompletoPortal GSTI
 
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGustavo Concon
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Deixando o código mais amigável para as próximas gerações
Deixando o código mais amigável para as próximas geraçõesDeixando o código mais amigável para as próximas gerações
Deixando o código mais amigável para as próximas geraçõesfabio perrella
 

Semelhante a GDB e Análise de Bugs (20)

Bricklayer
BricklayerBricklayer
Bricklayer
 
sys._current_frames(), Radiografando seu software em tempo real
 sys._current_frames(), Radiografando seu software em tempo real sys._current_frames(), Radiografando seu software em tempo real
sys._current_frames(), Radiografando seu software em tempo real
 
Criando sua própria nuvem com Raspberry Pi
Criando sua própria nuvem com Raspberry PiCriando sua própria nuvem com Raspberry Pi
Criando sua própria nuvem com Raspberry Pi
 
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017
 
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworksDo Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
 
Quantas Instruções por Ciclo?
Quantas Instruções por Ciclo?Quantas Instruções por Ciclo?
Quantas Instruções por Ciclo?
 
Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)
 
TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?
 
Zabbix monitorando o zimbra collaboration 8.8 (1)
Zabbix   monitorando o zimbra collaboration 8.8 (1)Zabbix   monitorando o zimbra collaboration 8.8 (1)
Zabbix monitorando o zimbra collaboration 8.8 (1)
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
 
Angular Extreme Performance
Angular  Extreme PerformanceAngular  Extreme Performance
Angular Extreme Performance
 
Secomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao ElixirSecomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao Elixir
 
O que você precisa saber sobre ASP.NET CORE
O que você precisa saber sobre ASP.NET COREO que você precisa saber sobre ASP.NET CORE
O que você precisa saber sobre ASP.NET CORE
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
Manual Kikrotik Completo
Manual Kikrotik CompletoManual Kikrotik Completo
Manual Kikrotik Completo
 
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Deixando o código mais amigável para as próximas gerações
Deixando o código mais amigável para as próximas geraçõesDeixando o código mais amigável para as próximas gerações
Deixando o código mais amigável para as próximas gerações
 

Mais de Marcelo Altmann

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
 
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
 
MySQL - Melhores práticas de replicação de dados
MySQL - Melhores práticas de replicação de dadosMySQL - Melhores práticas de replicação de dados
MySQL - Melhores práticas de replicação de dadosMarcelo 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
 

Mais de Marcelo Altmann (13)

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
 
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
 
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
 
MySQL - Melhores práticas de replicação de dados
MySQL - Melhores práticas de replicação de dadosMySQL - Melhores práticas de replicação de dados
MySQL - Melhores práticas de replicação de dados
 
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
 

GDB e Análise de Bugs

  • 1. © 2020 Percona1 Marcelo Altmann GDB & Análise de bugs Software Engineer MySQL Brazil Virtual Meetup 2nd Edition 28/05/2020
  • 3. © 2020 Percona3 Marcelo Altmann ▪ Desenvolvedor @ percona • Engenheiro de Suporte Senior @ percona • Líder Técnico @ percona • MySQL DBA @ IEDR (CCTLD Irlanda) ▪ Tecnologo em Sistemas para Internet ▪ Oracle ACE Associate ▪ blog.marceloaltmann.com ▪ Certificaçoes • OCP, MySQL 5.7 Database Administrator • OCP, MySQL 5.6 Database Administrator • OCP, MySQL 5.6 Developer • OCP, MySQL 5 Database Administrator • OCP, MySQL 5 Developer • OCP, MySQL 5.0/5.1/5.5
  • 4. © 2020 Percona4 We are hiring! ● Database Engineer Remote (South America) https://jobs.lever.co/percona?lever-via=ppuf96MTKk
  • 5. © 2020 Percona5 MySQL está crashando ?!?!?!
  • 8. © 2020 Percona8 Signals ● Definido em signals.h (linux)
  • 9. © 2020 Percona9 Signals ● SIGABRT / 6 - Assertion declaradas no código. ○ ut_a(expressão) / ut_ad(condição) - Deve dar falso. ○ Utilizado para prevenir que erros se propaguem. ● SIGSEGV / 11 - Segmentation Fault ○ Proteção contra acesso inválido de memória. ○ Objeto deletado. ○ Área de memória externo ao programa.
  • 10. © 2020 Percona10 Stack traces ▪ Finger print da execução até o momento do crash. ▪ Se Lê de baixo para cima / Bottom top ▪ Comum entre todas stack traces: • handle_fatal_signal() - Responsável por tratar os sinais que abortam o server - https://github.com/percona/percona-server/blob/8.0/sql/signal_handler.cc • my_print_stacktrace() - Responsável por logar a execução do MySQL que falhou. Pode ser desabilitado via --skip-stack-trace
  • 12. © 2020 Percona12 Symbols ▪ Lista de funções do código fonte ▪ ID em hexadecimal ▪ Aumenta o tamanho do binário. ▪ Instalar o pacote -debuginfo
  • 13. © 2020 Percona13 Symbols ▪nm -Dn /usr/sbin/mysqld > /tmp/symbols.out ▪ Extrair a assinatura em hexadecimal do stack trace: cat /tmp/stack.tmp | awk -F'[' '{print $2}' | awk - F ']' '{print $1}' > /tmp/stack.out
  • 15. © 2020 Percona15 GDB ▪ GNU Debugger ▪ Funciona em várias linguagens ▪ With Great Power, comes great responsibility ▪ Pode ser usado: • Remoto • Interpretando processo - gdb -p PID • Rodando processo - gdb --args bin/mysqld [argumentos] --gdb • Offline (coredump) - gdb bin/mysqld core.PID
  • 16. © 2020 Percona16 GDB ▪ Break point - parar neste ponto quando a execução chegar. ▪ Next - rodar o código até a próxima linha. ▪ Continue - rodar o código até próximo break point. ▪ Step - entrar na função. ▪ Bt - Mostrar Backtrace / Stack trace. ▪ Frame - pular para frame especídico dentro da backtrace.
  • 17. © 2020 Percona17 Poor Man's Profiler - PMP ▪ Agregador de stack traces. ▪ Útil para server com muitas threads ▪ https://poormansprofiler.org/ ▪ Parte do Percona Toolkit - pt-pmp
  • 18. © 2020 Percona18 cscope ▪ Browser para código fonte ▪ Mais otimizado que grep -Ri [texto] =) ▪ https://www.percona.com/blog/2017/09/12/cscope-searching-code-efficiently/ ▪ https://github.com/altmannmarcelo/my_scripts/blob/master/bin/mycscope • Innodb usa .ic • Mensagem de erro são declaradas em .txt (errmsg-utf8.txt, messages_to_clients.txt, messages_to_error_log.txt)
  • 19. © 2020 Percona19 Mutex ▪ Proteção contra acesso simultaneo a hot area. ▪ Vou ler / escrever em variável X mutex_lock(var_mutex); var = 'bla'; mutex_unlock(var_mutex);
  • 20. © 2020 Percona20 Link para gravação https://www.youtube.com/watch?v=WkdWkcDz2Kk
  • 21. © 2020 Percona21 D E M O T I M E ! ! ! Fails in 99.9% of the cases!
  • 22. DATABASE PERFORMANCE MATTERS Database Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance Matters Obrigado!