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.
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
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
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
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
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
• 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
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 / . . .
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 ?
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)
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