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.
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
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.