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

Backup para MySQL

Backup para MySQL

Nesta apresentação mostramos as melhores práticas para se fazer backup, abordando temas como Disaster recovery, Point in time recovery, backup físcio vs lógico, backup incremental vs diferencial.

Marcelo Altmann

September 23, 2020
Tweet

More Decks by Marcelo Altmann

Other Decks in Technology

Transcript

  1. © 2020 Percona 1 Marcelo Altmann Backup para MySQL Software

    Engineer MySQL Brazil Virtual Meetup 23/07/2020
  2. © 2020 Percona 3 Marcelo Altmann ▪Desenvolvedor @ percona •

    Engenheiro de Suporte Senior @ percona • Líder Técnico @ percona • MySQL DBA @ IEDR (CCTLD Irlanda) ▪Tecnologo em Sistemas para Internet @ Feevale ▪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
  3. © 2020 Percona 5 Por que fazer backup? Motivo ▪Segurança

    dos dados ▪Provisionar replicas ▪Testar software em ambientes de homologação / teste ▪Point in time recovery ▪Disaster recovery • Corrupção de dados • Invasão do banco / sistema • Bugs no software • Falhas de hardware
  4. © 2020 Percona 6 Por que fazer backup? Objetivo ▪Estar

    preparado para o maior leque de possibilidades ▪Minimizar Downtime
  5. © 2020 Percona 8 Replicação como backup? Sim ▪Crashes ▪Corrupção

    física ▪Falhas de hardware • CPU • Disco • RAM • Rede
  6. © 2020 Percona 9 Replicação como backup? Não ▪Bugs na

    aplicação ▪Database hackeada ▪Erro operacional
  7. © 2020 Percona 10 Replicação como backup? Não ▪Erro operacional

    • DROP sem WHERE • Ambiente de produção?!?!?! Achei que estava conectado no DEV
  8. © 2020 Percona 11 Lógico ▪Estrutura e dados salvos em

    plain-text ▪CREATE DATABASE / TABLE / INSERT INTO … ▪Pode ser usado facilmente para restore seletivo ▪Não carrega fragmentação / corrupção ▪Recria toda a estrutura física do arquivo no disco. ▪Restore mais lento ▪Ferramentas: mysqldump / my[dumper|loader] / mysqlpump
  9. © 2020 Percona 12 Físico ▪Cópia física do arquivos do

    banco ▪Restore rápido ▪Um pouco mais complicado para restore seletivo ▪Corrupção e Fragmentação são levadas a frente ▪Ferramentas: Percona Xtrabackup / MEB / MariaBackup / snapshot / rsync
  10. © 2020 Percona 13 Diferencial ▪Cópia completa do banco ▪Cada

    cópia diferencial contém todos os dados desde o backup completo • Segunda: Completo • Terça: Diferencial desde segunda • Quarta: Diferencial desde segunda • Quinta: Diferencial desde segunda
  11. © 2020 Percona 14 Diferencial ▪Restore evento na quinta feira:

    • Completo de segunda • Diferencial tirado na quinta
  12. © 2020 Percona 15 Incremental ▪Cópia completa do banco ▪Cada

    cópia incremental contém os dados desde o último backup • Segunda: Completo • Terça: incremental desde segunda • Quarta: incremental desde terça • Quinta: incremental desde quarta
  13. © 2020 Percona 16 Incremental ▪Restore evento na quinta feira:

    • Completo tirado na segunda • Aplicar incremental de terça no completo de segunda • Aplicar incremental de quarta no backup segunda+terça • Aplicar incremental de quinta no backup segunda+terça+quarta
  14. © 2020 Percona 19 Compactar ▪Ocupar menos espaço (pode se

    guardar mais backups) ▪Quando feito stream, requer menos tráfego de rede ▪Aumenta o tempo tanto de backup quanto restore ▪PXB (qpress): • xtrabackup --backup --compress \ --parallel=4 --compress-threads=4 --target-dir=/backup/ ▪Zip / gzip / bzip / . . .
  15. © 2020 Percona 20 Criptografar ▪Mantém o backup seguro a

    acessos indesejados ▪Openssl / GPG ▪PXB • xtrabackup --backup --parallel=4 --encrypt-threads=4 --encrypt=AES256 \ --encrypt-key-file=/data/backups/keyfile --target-dir=/data/backups • xtrabackup --parallel=4 --decrypt=AES256 \ --encrypt-key-file=/data/backups/keyfile --target-dir=/data/backups
  16. © 2020 Percona 25 Armazenar ▪Onde armazenar os backups? •

    Mesmo servidor? • Mesmo datacenter? • Mesma região ?
  17. © 2020 Percona 26 Armazenar ▪Onde armazenar os backups? •

    Mesmo servidor? • Mesmo datacenter? • Mesma região ? ▪Qual tipo / magnitude de desastre natural meus dados devem sobreviver?
  18. © 2020 Percona 27 A T E N Ç Ã

    O ! ! ! I M P O R T A N T E ! ! !
  19. © 2020 Percona 29 Restaurar ▪Parte mais importante de uma

    estratégia de backup ▪Ter backup e não testar o restore é o mesmo que não ter backup! ▪Consigo restaurar ? ▪Qual o processo para restaurar? • Copiar da origem e mandar pro destino • Descriptografar / descompactar / preparar / subir a base ▪Quanto tempo leva ?
  20. © 2020 Percona 31 Validar o backup ▪Validar que o

    backup realmente tem os dados que deve ter ▪Restaurar o backup em um servidor/vm/container zerado ▪Configurar o servidor como slave do master original • Quanto tempo leva para ficar em sincronia? ▪Meu dado está consistente? ▪Rodar pt-table-checksum ▪Testar PITR (Point In Time Recovery)
  21. © 2020 Percona 33 Backup de logs binarios ▪Possibilita restaurar

    o banco de dados a um ponto específico no passado • DELETE sem WHERE • Aplicação corrompeu/destruiu dados ▪Mysqlbinlog • mysqlbinlog --read-from-remote-server --stop-never --raw ▪Maxscale binlog server
  22. © 2020 Percona 35 Período de retenção ▪Quanto tempo no

    passado deve conseguir voltar meus dados? ▪Como armazenar este dado • Mídias devagar ▪Esteja preparado para restaurar
  23. DATABASE PERFORMANCE MATTERS Database Performance Matters Database Performance Matters Database

    Performance Matters Database Performance Matters Database Performance Matters Obrigado!