Slide 1

Slide 1 text

Backup Online no MySQL com Percona Xtrabackup Marcelo Altmann 1/10/2022 Apoio:

Slide 2

Slide 2 text

Marcelo Altmann ● Desenvolvedor C++ no Time de MySQL (PS/PXC/PXB) na Percona ● Bug Escalation Committee ● Na Percona desde 2016 ● 6 certificações MySQL ● Oracle ACE ● Palestrante (Brasil, Inglaterra, Irlanda, Estados Unidos)

Slide 3

Slide 3 text

Marcelo Altmann ● Code Contributor

Slide 4

Slide 4 text

Agenda ● Overview ● Funcionamento Básico (backup, prepare, incremental) ● Novas funcionalidades

Slide 5

Slide 5 text

Percona Xtrabackup - Overview ● Open Source - 100% de graça ● https://github.com/percona/percona-xtrabackup ● Backup físico (MySQL & Percona Server / XtraDB Cluster) ● Online - Não bloqueia escritas ● Possibilita Backups: ○ Full ○ Incremental ○ Differential

Slide 6

Slide 6 text

Percona Xtrabackup - Overview ● Backup Compactado ● Backup Criptografado ● Backup local ● Streaming - xbstream ( https://bit.ly/xbstream-format ) ● Upload para cloud (S3, Azure, GCP, Swift) - xbcloud

Slide 7

Slide 7 text

InnoDB - Componentes

Slide 8

Slide 8 text

InnoDB - Layout das tabelas em disco

Slide 9

Slide 9 text

InnoDB - Layout das tabelas em disco Last Sequence Number(LSN) Número de bytes escritos até o momento. Utilizado como identificador de versão de páginas / blocos (Não é MVCC).

Slide 10

Slide 10 text

InnoDB - Layout das tabelas em disco

Slide 11

Slide 11 text

InnoDB - Redo Log (WAL)

Slide 12

Slide 12 text

InnoDB - Redo Log (WAL)

Slide 13

Slide 13 text

InnoDB - Buffer Pool

Slide 14

Slide 14 text

InnoDB - Escrita

Slide 15

Slide 15 text

InnoDB - Escrita

Slide 16

Slide 16 text

InnoDB - Escrita

Slide 17

Slide 17 text

InnoDB - Escrita

Slide 18

Slide 18 text

Xtrabackup - Backup

Slide 19

Slide 19 text

Xtrabackup - Backup

Slide 20

Slide 20 text

Xtrabackup - Backup

Slide 21

Slide 21 text

Xtrabackup - Backup

Slide 22

Slide 22 text

Xtrabackup - Backup

Slide 23

Slide 23 text

Xtrabackup - Prepare

Slide 24

Slide 24 text

Xtrabackup - Incremental ● Utiliza como base o LSN do último checkpoint do full ( 50 ) ● Redo follow thread (igual ao full)

Slide 25

Slide 25 text

Xtrabackup - Incremental ● INSERT INTO tabela1 VALUES (...)

Slide 26

Slide 26 text

Xtrabackup - Incremental ● UPDATE tabela1 SET ...

Slide 27

Slide 27 text

Xtrabackup - Incremental - Page Tracking ● Suporte adicionado na versão 8.0.27-19 ● Funciona como componente ao lado do servidor ● Cria um mapeamento direto para as páginas que foram alteradas após um LSN ● PXB recebe direto do servidor a lista completa das páginas com “deltas”

Slide 28

Slide 28 text

Xtrabackup - Incremental - Page Tracking ● Teste com 1% de páginas modificadas em dataset de 100G ● Sem Page Tracking = 5 minutos ● Com Page Tracking = 30 segundos ● --backup mais rápido = menos redo log para aplicar = -- prepare mais rápido

Slide 29

Slide 29 text

Xtrabackup - Keyring Components ● MySQL TDE - Transparent Data Encryption ● Cada entidade (Tabela, Redo, Undo, Double Write, Binlog) possui um par de chaves no seu cabeçalho. ● Essas chaves são utilizadas para criptografar os dados. ● As chaves são armazenadas criptografadas nas entidades. ● O keyring component fornece a chamada Master Key, responsável por descriptografar o par de chaves de cada entidade.

Slide 30

Slide 30 text

Xtrabackup - Keyring Components ● 8.0.27-19 - Adicionado suporte a KMIP (Key Management Interoperability Protocol) ● Open Standard Protocol desenvolvido pela OASIS - Organização focada em desenvolvimento de padrões de segurança ● Hashicorp Vault Enterprise - KMIP Secrets ● IBM ● Outras

Slide 31

Slide 31 text

Xtrabackup - Keyring Components ● 8.0.28-20 - Adicionado suporte a KMS (AWS Key Management Service) ● Disponível como serviço na AWS ● Similar ao Keyring File, porém as chaves são guardadas criptografadas em disco.

Slide 32

Slide 32 text

Xtrabackup - Log Redesign ● 8.0.28-20 - Log output re-criado ● Utiliza o mesmo layout de mensagens que o servidor ● Possibilita uma melhor leitura

Slide 33

Slide 33 text

Xtrabackup - Log Redesign

Slide 34

Slide 34 text

Xtrabackup - Log Redesign

Slide 35

Slide 35 text

Xtrabackup - Azure Blob Storage ● 8.0.27-19 - Adicionado suporte ao Azure Blob Storage ao xbcloud ● Possibilita fazer upload de backups locais direto para Azure ● S3 / Google Cloud / Swift

Slide 36

Slide 36 text

Xtrabackup - ZSTD ● 8.0.30-23 - Adicionado suporte de compressão ZSTD (Zstandard) ● Algoritmo de compressão de dados desenvolvido no Facebook ● Em comparação com LZ4 consegue compression ratio superior.

Slide 37

Slide 37 text

Xtrabackup - ZSTD

Slide 38

Slide 38 text

Xtrabackup - ZSTD

Slide 39

Slide 39 text

Xtrabackup - Smart Memory Estimation ● 8.0.30-23 - Adicionado suporte a Smart Memory Estimation ● Usado para fazer tunning do Buffer Pool durante --prepare (ajustar o padrão) ○ 512 páginas para dados das tabelas. ○ O restante é utilizado para agrupar registros do redo log. ○ Se a memória estiver cheia, se considera estes dados um batch. ○ O batch é aplicado e o agrupamento de registros continua até que se conclua todos os registros.

Slide 40

Slide 40 text

Xtrabackup - Memory Estimation ● Padrão é 128M ● Não é suficiente para a maioria dos casos ● Pode ser ajustado utilizando --use-memory

Slide 41

Slide 41 text

Xtrabackup - Memory Estimation

Slide 42

Slide 42 text

Xtrabackup - Roadmap ● MySQL 8.0.30 - Redo Log Redesign ● MyRocks Incremental Backups - #1272 ● Xtrabackup / XBstream / XBCloud - FIFO datasink para redes com largura de banda superior a 1 Gbps. ● Melhorar usabilidade para restore seletivo de tabelas.

Slide 43

Slide 43 text

Perguntas? Estamos contratando

Slide 44

Slide 44 text

Apoio: Obrigado!