Como Recuperar um Banco de Dados MySQL Após Excluir Arquivos ou uma Partição no Ubuntu: RAID 6 e LUKS2

Excluir arquivos ou uma partição inteira de disco no Ubuntu pode levar a uma perda crítica de dados, especialmente se um banco de dados MySQL estiver em execução no servidor. A situação torna-se ainda mais complexa quando o sistema de armazenamento é construído sobre uma matriz RAID 6 e os dados estão adicionalmente protegidos com criptografia LUKS2. Nessas condições, as ferramentas padrão de recuperação nem sempre produzem o resultado esperado, e ações descuidadas podem destruir permanentemente as informações. Neste artigo, analisaremos possíveis cenários de perda de dados, as particularidades do trabalho com RAID 6 e LUKS2 e o processo de recuperação de um banco de dados MySQL após a exclusão acidental de arquivos ou de uma partição de disco.

Como Recuperar um Banco de Dados MySQL Após Excluir Arquivos ou uma Partição no Ubuntu: RAID 6 e LUKS2

Os arquivos de banco de dados MySQL e seus backups em um servidor Linux podem ficar inacessíveis por diversos motivos: exclusão acidental de arquivos, formatação ou exclusão de uma partição, corrupção do sistema de arquivos, falha da matriz RAID, falha de disco ou falha do controlador RAID. A situação torna-se ainda mais complicada se os dados estiverem armazenados em uma partição LUKS2 criptografada.

Hetman RAID Recovery ajuda a reconstruir estruturas de matrizes RAID, localizar partições perdidas, desbloquear LUKS2 se a senha estiver disponível e recuperar arquivos de banco de dados e dumps SQL.

Demonstramos o programa em um computador com Windows. No entanto, o Hetman RAID Recovery também está disponível para Linux e macOS.

Vá para ver
How to Recover Oracle Database 26ai from LVM RAID 6 + LUKS2 via SSH

How to Recover Oracle Database 26ai from LVM RAID 6 + LUKS2 via SSH

Preparando o ambiente de teste e o banco de dados MySQL

Para os testes, usamos um servidor Dell PowerEdge R710 com um controlador PERC H700.

Parâmetro Especificação
Modelo do servidor Dell PowerEdge R710
Formato Rack 2U
Processador Até 2 × Intel Xeon série 5500/5600
RAM DDR3 ECC, até 288 GB (18 slots)
Controlador RAID Dell PERC H700
Tipo de RAID RAID de hardware
Níveis de RAID suportados RAID 0, 1, 5, 6, 10, 50, 60
Configuração da matriz RAID 6
Interface das unidades SAS/SATA, até 6 Gbit/s
Número de baias para unidades Até 6 × 3,5″ ou 8 × 2,5″, dependendo da configuração
Cache do controlador RAID 512 MB ou 1 GB (dependendo do modelo)
Proteção do cache BBU — proteção de cache com bateria
Sistema operacional Ubuntu Server
Criptografia de dados LUKS2 (no nível do Linux, não no controlador RAID)
Sistema de gerenciamento de banco de dados MySQL
Tolerância a falhas do RAID 6 Permite a falha simultânea de até dois discos
Ferramentas de diagnóstico Dell OpenManage, MegaCLI, StorCLI (se compatível)

Para fornecer ao sistema operacional acesso direto a cada disco físico, foram criadas seis matrizes RAID 0 de um único disco no controlador — uma para cada disco. O Ubuntu Server 24.04 foi instalado em uma delas, e as outras quatro foram combinadas em uma matriz MD RAID 6 por software por meio do Cockpit.

Uma tabela de partição GPT e três partições foram criadas na matriz, com ext4 como sistema de arquivos e criptografia LUKS2 selecionada para cada uma delas.

Dispositivo MDRAID

O diretório mysql-data foi colocado na terceira partição e continha dados do banco de dados de teste company_db, arquivos do sistema e logs do MySQL. Foi utilizada a versão MySQL 8.0.46.

O diretório mysql-data com dados do banco de dados de teste company_db

O próprio banco de dados continha as tabelas customers, products e orders, além de uma view, um procedimento armazenado e uma função.

O banco de dados contém as tabelas customers, products e orders

O backup do banco de dados foi criado no MySQL Workbench como um dump SQL e salvo no diretório mysql-backups.

Antes dos testes, os diretórios mysql-data e mysql-backups foram copiados da terceira partição para a segunda. Em seguida, a segunda partição foi excluída por meio do Cockpit, e os arquivos do banco de dados e o dump SQL foram excluídos da terceira partição usando Shift + Delete, ignorando a Lixeira. Isso preparou dois cenários: recuperação de arquivos de uma partição excluída e recuperação de arquivos excluídos de uma partição preservada.

A segunda partição foi excluída por meio do Cockpit

Conectando os discos para análise

No nosso caso, os discos que participavam do RAID 6 foram conectados a um computador Windows por meio de uma estação de acoplamento USB, e o Hetman RAID Recovery foi iniciado para análise.

Para recuperar dados de matrizes RAID com falha, dispositivos NAS e outros sistemas de armazenamento com vários discos.

Além de trabalhar com discos físicos, o programa oferece suporte à análise de imagens completas de disco byte a byte. Essas imagens podem ser criadas diretamente no Hetman RAID Recovery usando a função Salvar disco e armazenadas em outro disco íntegro.

Hetman RAID Recovery: Salvar disco

Isso é especialmente útil se o disco estiver instável, tiver setores defeituosos ou apresentar erros de leitura. A criação de uma imagem preserva os dados legíveis e permite que a cópia seja analisada posteriormente, reduzindo o número de acessos repetidos ao disco problemático.

Se os discos permanecerem no servidor Linux e estiverem legíveis, eles podem ser analisados remotamente. Para isso, conecte-se ao servidor via SSH no Hetman RAID Recovery e obtenha acesso aos seus dispositivos de bloco.

Como recuperar um banco de dados MySQL excluído de RAID 6 + LUKS2

PASSO 1. Detecção automática de partições RAID 6 e LUKS

Imediatamente após a inicialização, o Hetman RAID Recovery detectou automaticamente a configuração MD RAID 6 e reconstruiu sua estrutura para análise.

Para recuperar dados de matrizes RAID com falha, dispositivos NAS e outros sistemas de armazenamento com vários discos.
Hetman RAID Recovery: configuração MD RAID 6

O painel direito exibe os principais parâmetros da matriz: tipo e estado do RAID, ordem e tamanho dos blocos, bem como a lista dos discos participantes com sua sequência, offsets e tamanhos.

Hetman RAID Recovery: configuração MD RAID 6

Na matriz montada, o programa detectou três partições, incluindo a segunda, anteriormente excluída, e identificou criptografia LUKS em todas as três. Antes de inserir a senha, seus sistemas de arquivos não são exibidos — as partições precisam ser desbloqueadas para análise posterior.

A segunda partição é exibida na interface como espaço não alocado marcado como LUKS. Isso significa que o programa reconheceu os metadados do contêiner criptografado no local da partição excluída.

Hetman RAID Recovery: o programa detectou três partições na matriz montada

PASSO 2. Desbloqueio e recuperação de arquivos excluídos

Para iniciar a análise, clique duas vezes na partição necessária. Como ela está criptografada com LUKS2, o programa solicitará que você insira uma senha ou especifique um arquivo de chave. Insira a senha e clique em Desbloquear.

Hetman RAID Recovery: a partição está criptografada com LUKS2

Primeiro, selecione Verificação rápida. Aguarde a conclusão da verificação, após a qual o programa abrirá a estrutura dos diretórios encontrados. Em nosso teste, a verificação rápida encontrou os arquivos necessários na partição excluída.

Se os dados necessários não forem encontrados no seu caso, volte à seleção do tipo de análise e execute a Análise completa, especificando o sistema de arquivos EXT2/3/4.

Hetman RAID Recovery: selecione Verificação rápida

Revise os resultados da verificação. No nosso caso, o programa exibiu o dump SQL backup1.sql, o diretório company_db e os arquivos de tabela do MySQL com a extensão .ibd. O conteúdo do dump SQL pode ser verificado na janela de visualização.

Hetman RAID Recovery: dump SQL backup1.sql, diretório company_db e arquivos de tabela do MySQL

Selecione os arquivos e pastas que deseja recuperar e clique em Recuperar. Escolha um método de salvamento, especifique outro disco físico e mantenha ativada a opção de restaurar a estrutura de diretórios.

Não salve os arquivos encontrados na mesma unidade da qual estão sendo recuperados, para evitar a substituição de outros dados perdidos.

Hetman RAID Recovery: recuperação dos arquivos encontrados

PASSO 3. Restaurando o banco de dados a partir de um dump SQL

A forma mais simples de restaurar o banco de dados é usar o dump SQL recuperado. Ele contém comandos para criar a estrutura do banco de dados e restaurar os dados conforme estavam no momento em que o backup foi criado. Se as opções de exportação apropriadas tiverem sido selecionadas, o dump também incluirá views, procedimentos e funções.

Inicie o MySQL Workbench e conecte-se ao servidor MySQL. Abra o menu Servidor — Importação de Dados, selecione Importar de arquivo autônomo e especifique o arquivo SQL recuperado.

MySQL Workbench: Servidor — Importação de Dados - Importar de arquivo autônomo

Se o diretório inteiro mysql-data com os arquivos de sistema do MySQL foi perdido, primeiro você precisa restaurar a funcionalidade do servidor ou preparar uma nova instância do MySQL. Somente então o dump poderá ser importado por meio do Workbench.

Selecione o esquema de destino ou crie um novo banco de dados company_db e clique em Iniciar importação. Aguarde a conclusão da operação e verifique o log em busca de erros.

MySQL Workbench: criar um novo banco de dados company_db

Atualize a lista de esquemas. O banco de dados agora deve conter as tabelas customers, products e orders. Abra-as e verifique os registros.

MySQL Workbench: tabelas customers, products e orders

PASSO 4. Restaurando o banco de dados a partir de arquivos físicos do MySQL

Se não houver um dump SQL adequado, mas o Hetman RAID Recovery tiver conseguido recuperar o diretório do banco de dados com arquivos de tabela, você pode tentar uma recuperação física.

No nosso caso, o diretório company_db preservou os arquivos customers.ibd, products.ibd e orders.ibd. Cada um deles contém os dados e índices da tabela InnoDB correspondente.

Arquivos customers.ibd, products.ibd e orders.ibd

Simplesmente copiar esses arquivos para o diretório MySQL não é suficiente. O novo servidor ainda não possui definições para as tabelas correspondentes no dicionário de dados. Portanto, a recuperação consiste em duas etapas: primeiro, é necessário recriar a estrutura da tabela e, em seguida, associar a ela os arquivos .ibd recuperados.

Para a recuperação, prepare um servidor operacional com a mesma versão do MySQL. Conecte-se a ele por meio do Workbench e crie um banco de dados vazio.

Conecte-se ao servidor por meio do Workbench e crie um banco de dados vazio

Se o script SQL original com a estrutura estiver preservado, execute os comandos CREATE TABLE nele contidos. As tabelas devem corresponder exatamente às originais, incluindo tipos de coluna, chaves, índices, collation e formato de linha. Não é necessário executar os comandos de inserção de dados — nesta etapa, as tabelas devem permanecer vazias.

PASSO 5. Restaurando a estrutura da tabela a partir de arquivos ibd

Se o script SQL original não estiver disponível, você pode tentar recuperar a estrutura da tabela a partir dos arquivos .ibd. No MySQL 8.0, eles contêm SDI — os metadados do dicionário de dados. O utilitário ibd2sdi é usado para lê-los.

Execute-o para cada arquivo recuperado e salve os resultados em formato JSON. No nosso caso, obtivemos metadados de customers.ibd, products.ibd e orders.ibd, e então usamos jq para inspecionar a definição da tabela customers.

ibd2sdi

Os metadados podem incluir o nome da tabela, a versão do MySQL, o mecanismo de armazenamento, a collation e os parâmetros do tablespace. Eles também contêm as definições das colunas. As informações sobre chaves primárias e exclusivas, índices secundários e relacionamentos com outras tabelas são armazenadas separadamente.

O JSON resultante pode ser analisado manualmente em um editor de texto. Com base nos parâmetros detectados, scripts e conversores especiais podem gerar automaticamente comandos preliminares CREATE TABLE. Para um grande número de tabelas, isso acelera significativamente a recuperação da estrutura.

Os metadados podem incluir o nome da tabela e a versão do MySQL

PASSO 6. Associando os arquivos ibd recuperados

No Workbench, desative temporariamente as verificações de chaves estrangeiras e execute o comando ALTER TABLE … DISCARD TABLESPACE para cada tabela criada. Isso desvincula o tablespace vazio criado e prepara a tabela para a associação do arquivo recuperado.

No Workbench, desative temporariamente as verificações de chaves estrangeiras

Depois disso, copie os arquivos .ibd correspondentes para o diretório do banco de dados no servidor preparado. Após a cópia, não se esqueça de atribuir o proprietário mysql aos arquivos e definir as permissões de acesso necessárias.

Copie os arquivos .ibd correspondentes para o diretório do banco de dados no servidor preparado

Volte ao Workbench e execute ALTER TABLE … IMPORT TABLESPACE para cada tabela. Avisos sobre arquivos .cfg ausentes não são críticos: o MySQL continuará a importação sem validação automática da estrutura. O MySQL registrará os tablespaces recuperados e associará os dados e índices às definições de tabela criadas anteriormente.

Volte ao Workbench e execute ALTER TABLE … IMPORT TABLESPACE

Após uma importação bem-sucedida, reative as verificações de chaves estrangeiras. Atualize a lista de esquemas e verifique o número e o conteúdo dos registros usando consultas SELECT.

Após uma importação bem-sucedida, ative as verificações de chaves estrangeiras

Os arquivos .ibd permitem restaurar tabelas, seus dados e índices. No entanto, views, procedimentos e funções não são armazenados como arquivos separados no diretório company_db. Se não estiverem incluídos no dump SQL, esses objetos deverão ser recriados manualmente.

Após verificar o banco de dados restaurado, recomendamos criar um novo backup no formato de dump SQL.

Conclusão

Usando o Hetman RAID Recovery, foi possível reconstruir automaticamente a estrutura de Linux MD RAID 6 e detectar e desbloquear contêineres LUKS2 usando a senha conhecida. Uma verificação rápida encontrou os arquivos necessários tanto após sua exclusão quanto após a exclusão de uma partição inteira.

O dump SQL recuperado pode ser importado por meio do MySQL Workbench, restaurando a estrutura e os dados do banco de dados ao estado em que o backup foi criado. Se não houver um dump adequado disponível, tabelas InnoDB individuais podem ser recuperadas de arquivos .ibd, recriando primeiro sua estrutura.

Raidel Becerra

Autor: , Escritor técnico

Raidel Arbelay Becerra é um escritor técnico para a Hetman Software e a voz e rosto do Hetman Software: Canal YouTube de recuperação de dados. Escreve artigos aprofundados, tutoriais e resenhas sobre como funciona o software da empresa com todos os tipos de dispositivos de armazenamento.

Mykhailo Miroshnichenko

Editor: , Escritor técnico

Mykhailo Miroshnychenko é um dos principais programadores da Hetman Software. Com base em quinze anos de experiência em desenvolvimento de software, partilha os seus conhecimentos com os leitores do nosso blogue. Para além da programação, Mikhail é um especialista em recuperação de dados, sistemas de ficheiros, dispositivos de armazenamento e matrizes RAID.

Recomendado para você