Backup e Recuperação de MySQL

MySQLBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a fazer backup e restaurar bancos de dados MySQL usando a ferramenta de linha de comando mysqldump. O mysqldump é uma utilidade crucial para criar backups lógicos, que são essenciais para proteção de dados, recuperação de desastres e migração.

Você praticará o backup de um banco de dados inteiro, o backup de uma única tabela e, em seguida, restaurará ambos a partir dos arquivos de backup. O laboratório o guiará através da simulação de cenários de perda de dados e do uso de seus backups para recuperar os dados, garantindo que você entenda o ciclo completo de backup e recuperação.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 96%. Recebeu uma taxa de avaliações positivas de 89% dos estudantes.

Fazer Backup de um Banco de Dados Inteiro

O primeiro passo na proteção de dados é criar um backup completo. Nesta etapa, você usará o mysqldump para criar um backup completo do banco de dados mydatabase, que foi pré-configurado para você.

Primeiro, abra o terminal. Vamos inspecionar o banco de dados para ver o que ele contém. Conecte-se ao servidor MySQL usando o usuário root.

sudo mysql -u root

Assim que vir o prompt mysql>, mude para o banco de dados mydatabase e visualize suas tabelas.

USE mydatabase;
SHOW TABLES;

Você deverá ver duas tabelas, products e users.

+--------------------+
| Tables_in_mydatabase |
+--------------------+
| products           |
| users              |
+--------------------+
2 rows in set (0.00 sec)

Agora, saia do shell do MySQL para retornar ao terminal.

exit

É hora de fazer o backup do banco de dados inteiro. O comando mysqldump lê o banco de dados e gera as instruções SQL necessárias para recriá-lo. Redirecionaremos essa saída para um arquivo .sql.

Execute o seguinte comando para fazer o backup de mydatabase e salvá-lo em um arquivo chamado mydatabase_backup.sql dentro do diretório /home/labex/backup.

sudo mysqldump -u root mydatabase > /home/labex/backup/mydatabase_backup.sql

Para confirmar que o arquivo de backup foi criado, liste o conteúdo do diretório /home/labex/backup.

ls /home/labex/backup

Você deverá ver seu arquivo de backup listado.

mydatabase_backup.sql

Você criou com sucesso um backup completo do banco de dados.

Fazer Backup de uma Tabela Única

Às vezes, você só precisa fazer backup de uma tabela específica em vez do banco de dados inteiro. Isso é útil para operações menores e direcionadas. Nesta etapa, você fará backup apenas da tabela products.

A sintaxe é semelhante a um backup completo do banco de dados, mas você especifica o nome da tabela após o nome do banco de dados.

Do seu terminal, execute o seguinte comando para fazer o backup da tabela products do mydatabase. O backup será salvo como products_backup.sql.

sudo mysqldump -u root mydatabase products > /home/labex/backup/products_backup.sql

Vamos verificar se o novo arquivo de backup foi criado. Liste o conteúdo do diretório de backup novamente.

ls /home/labex/backup

Você deverá ver agora o backup completo do banco de dados e o backup de tabela única.

mydatabase_backup.sql  products_backup.sql

Você pode inspecionar o conteúdo do arquivo de backup de tabela única para ver que ele contém apenas informações para a tabela products.

cat /home/labex/backup/products_backup.sql

A saída mostrará as instruções SQL para criar e popular apenas a tabela products. Isso confirma que você criou com sucesso um backup direcionado.

Restaurar um Banco de Dados Inteiro

Agora que você tem backups, vamos praticar a restauração deles. Nesta etapa, você simulará um desastre excluindo todo o mydatabase e, em seguida, o restaurará a partir do seu arquivo de backup completo.

Primeiro, vamos remover o banco de dados. A flag -e permite que você execute um único comando SQL diretamente do seu terminal.

sudo mysql -u root -e "DROP DATABASE mydatabase;"

Verifique se o banco de dados foi removido.

sudo mysql -u root -e "SHOW DATABASES;"

Você verá que mydatabase não está mais na lista.

Antes de poder restaurar os dados, você deve criar um banco de dados vazio com o mesmo nome.

sudo mysql -u root -e "CREATE DATABASE mydatabase;"

Agora, restaure o banco de dados redirecionando o arquivo mydatabase_backup.sql como entrada para o cliente mysql.

sudo mysql -u root mydatabase < /home/labex/backup/mydatabase_backup.sql

O comando executará todas as instruções SQL no arquivo de backup, recriando as tabelas e inserindo os dados.

Para verificar a restauração, conecte-se ao MySQL e verifique as tabelas e seu conteúdo.

sudo mysql -u root

No prompt mysql>, execute estes comandos:

USE mydatabase;
SHOW TABLES;
SELECT * FROM users;

Você deverá ver as tabelas products e users novamente, e a tabela users deverá conter seus dados originais.

+--------------------+
| Tables_in_mydatabase |
+--------------------+
| products           |
| users              |
+--------------------+
2 rows in set (0.00 sec)

+----+------------+--------------------------+
| id | name       | email                    |
+----+------------+--------------------------+
|  1 | John Doe   | john.doe@example.com     |
|  2 | Jane Smith | jane.smith@example.com   |
+----+------------+--------------------------+
2 rows in set (0.00 sec)

Saia do shell do MySQL.

exit

Você recuperou com sucesso o banco de dados inteiro de uma falha catastrófica.

Resumo

Neste laboratório, você aprendeu as habilidades essenciais para fazer backup e restaurar bancos de dados MySQL usando a utilidade mysqldump. Você praticou a criação de um backup completo de um banco de dados e um backup direcionado de uma única tabela.

Você também ganhou experiência prática com procedimentos de recuperação, simulando tanto a perda completa do banco de dados quanto a exclusão acidental de uma única tabela. Ao restaurar com sucesso os dados em ambos os cenários, você demonstrou uma compreensão fundamental do ciclo de vida completo de proteção de dados, uma habilidade crítica para qualquer administrador de banco de dados ou desenvolvedor.