Seção 1: Introdução
Restaurar uma única tabela de um backup completo do MySQL é uma habilidade valiosa, especialmente quando apenas uma única tabela é comprometida, e o restante do banco de dados está intacto. Neste artigo, vamos discutir como extrair uma tabela específica de um backup completo e restaurá-la.
Seção 2: Entendendo o backup completo
Um backup completo do MySQL contém todas as instruções SQL necessárias para reconstruir todo o banco de dados. No entanto, se apenas uma tabela específica precisa ser restaurada, não é eficiente restaurar todo o banco de dados. Para isso, precisamos extrair a tabela específica do backup completo.
Seção 3: Extraindo a tabela do backup
Podemos usar as ferramentas de linha de comando grep
, sed
e awk
no Linux para extrair uma tabela específica de um arquivo de backup completo. Vamos supor que temos um backup completo e queremos extrair a tabela customers
.
# Obtemos a linha de início da tabela que desejamos extrair.
start=$(grep -n -m 1 'Table structure for table `customers`' backup.sql | cut -d ":" -f 1)
# Obtemos a linha de fim usando o comando 'awk'.
end=$(awk -v start=$start '/UNLOCK TABLES;/ {if (NR > start) {print NR; exit}}' backup.sql)
# Agora usamos o 'sed' para extrair as linhas de início a fim no arquivo de backup e direcionamos para o novo arquivo .sql.
sed -n "$start,$end p" backup.sql > customers.sql
O comando acima irá extrair a estrutura da tabela customers
e suas linhas de dados associadas do arquivo de backup completo.
Seção 4: Restaurando a tabela
Depois de extrair a tabela do arquivo de backup, a restauração é simples.
# Primeiro, acesse o MySQL.
mysql -u username -p
# Selecione o banco de dados.
mysql> USE database_name;
# Restaure a tabela.
mysql> source /path/to/customers.sql;
Note que o método acima assume que cada seção de tabela no seu arquivo de dump está encapsulada por ‘Table structure for table customers
‘ e ‘UNLOCK TABLES;’. Se não for esse o caso, o método pode não funcionar corretamente. Este é apenas um exemplo simplificado e a maneira exata pode variar dependendo do conteúdo exato do seu arquivo de dump.