DBA BRABOMentoria Técnica para DBAs

Recuperação de dados MySQL e MariaDB

BRABO DATA RECOVERY

Dados MySQL e MariaDB recuperados direto dos arquivos InnoDB, sem mysqld, quando o servidor não sobe e o backup não salva.

Recuperação em nível de página que lê o InnoDB direto. No MySQL 8.0 e 8.4 o dicionário vem do SDI gravado dentro de cada .ibd, então uma tabela é recuperável só com o arquivo dela. No MySQL 5.7 e no MariaDB, sem SDI, o dicionário vem do .frm e do dicionário interno do InnoDB no ibdata1 (SYS_TABLES, SYS_COLUMNS, SYS_INDEXES, SYS_FIELDS), e funciona com os dois, só com o .frm ou só com o ibdata1.

Backup e recuperação

O problema

Quando o caminho normal acabou

O mysqld não sobe nem com innodb_force_recovery 6, o .ibd está com página corrompida, o ibdata1 se perdeu, alguém rodou DELETE ou DROP sem backup recente, ou só sobrou o .ibd de um servidor que não existe mais. Os registros continuam gravados nas páginas do índice clusterizado.

Como entra

Último recurso, sobre cópias

Depois de restore, binlog e réplica. Trabalhamos sobre a cópia do datadir, de preferência com o servidor parado; cópia a quente também é aceita, e o que ainda estava só no buffer pool ou no redo é avisado. O diagnóstico confere o checksum de cada página (crc32, innodb ou full_crc32 do MariaDB) e conta o que é índice, LOB, undo e página livre.

Entrega

O que o serviço faz

  • Diagnóstico de cada página: checksum crc32, innodb e full_crc32, header, LSN e contagem por tipo
  • Dicionário pelo SDI (8.0 e 8.4) ou pelo .frm e ibdata1 (5.7 e MariaDB), inclusive tabelas que moram dentro do ibdata1
  • Formatos COMPACT, DYNAMIC, REDUNDANT e COMPRESSED; colunas INSTANT do MySQL 8 e instant ADD/DROP do MariaDB; particionadas e general tablespace
  • Page compression do MySQL (zlib, lz4) e do MariaDB (PAGE_COMPRESSED)
  • Tablespace cifrado decifrado com a chave do cliente: MySQL ENCRYPTION='Y' pelo keyring e MariaDB ENCRYPTED=YES pelo keyfile do file_key_management
  • Tipos: DECIMAL, DATETIME com fração, ENUM/SET, BIT, JSON binário (sai como texto JSON), BLOB e TEXT fora da página, utf8mb4 e latin1
  • Registros apagados que ainda estão nas páginas, entregues à parte
  • Sem dicionário nenhum: a estrutura da tabela vem de outra fonte (DDL do cliente) e os dados são tipados por ela; kit de carga pelo mysql que confere as contagens

Suporte

Versões e plataformas

MySQL 5.7, 8.0 e 8.4 (validado em 5.7.44 e 8.4.13)MariaDB 10.6 e 11.4Datadir completo, .ibd solto ou ibdata1Linux e Windows

Para quem

Quem chama este serviço

Quem roda MySQL ou MariaDB em produção e perdeu o servidor, o ibdata1 ou uma tabela, sofreu um DELETE indevido, tem páginas corrompidas, ou precisa abrir tablespaces cifrados de um ambiente que não sobe mais.

BRABO DATA RECOVERY · MySQL e MariaDB

Dados MySQL e MariaDB recuperados direto dos arquivos InnoDB, sem mysqld, quando o servidor não sobe e o backup não salva.