Резервное копирование и восстановление MySQL

MySQLBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы научитесь создавать резервные копии и восстанавливать базы данных MySQL с помощью утилиты командной строки mysqldump. mysqldump является важнейшим инструментом для создания логических резервных копий, которые необходимы для защиты данных, аварийного восстановления и миграции.

Вы попрактикуетесь в создании резервной копии всей базы данных, резервной копии отдельной таблицы, а затем в восстановлении обеих из файлов резервных копий. Лабораторная работа проведет вас через симуляцию сценариев потери данных и использование ваших резервных копий для восстановления данных, гарантируя, что вы понимаете полный цикл резервного копирования и восстановления.

Создание резервной копии всей базы данных

Первым шагом в защите данных является создание полной резервной копии. На этом этапе вы будете использовать mysqldump для создания полной резервной копии базы данных mydatabase, которая была предварительно настроена для вас.

Сначала откройте терминал. Давайте проверим базу данных, чтобы увидеть, что она содержит. Подключитесь к серверу MySQL, используя пользователя root.

sudo mysql -u root

Как только вы увидите приглашение mysql>, переключитесь на базу данных mydatabase и просмотрите ее таблицы.

USE mydatabase;
SHOW TABLES;

Вы должны увидеть две таблицы: products и users.

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

Теперь выйдите из оболочки MySQL, чтобы вернуться в терминал.

exit

Пришло время сделать резервную копию всей базы данных. Команда mysqldump считывает базу данных и выводит SQL-инструкции, необходимые для ее воссоздания. Мы перенаправим этот вывод в файл .sql.

Выполните следующую команду, чтобы создать резервную копию mydatabase и сохранить ее в файл с именем mydatabase_backup.sql в каталоге /home/labex/backup.

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

Чтобы подтвердить создание файла резервной копии, выведите содержимое каталога /home/labex/backup.

ls /home/labex/backup

Вы должны увидеть ваш файл резервной копии в списке.

mydatabase_backup.sql

Вы успешно создали полную резервную копию базы данных.

Создание резервной копии отдельной таблицы

Иногда вам нужно сделать резервную копию только определенной таблицы, а не всей базы данных. Это полезно для небольших, целенаправленных операций. На этом этапе вы создадите резервную копию только таблицы products.

Синтаксис аналогичен полному резервному копированию базы данных, но вы указываете имя таблицы после имени базы данных.

Из терминала выполните следующую команду, чтобы создать резервную копию таблицы products из базы данных mydatabase. Резервная копия будет сохранена как products_backup.sql.

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

Давайте проверим, был ли создан новый файл резервной копии. Снова выведите содержимое каталога резервных копий.

ls /home/labex/backup

Теперь вы должны увидеть как полную резервную копию базы данных, так и резервную копию отдельной таблицы.

mydatabase_backup.sql  products_backup.sql

Вы можете просмотреть содержимое файла резервной копии отдельной таблицы, чтобы убедиться, что он содержит только информацию для таблицы products.

cat /home/labex/backup/products_backup.sql

Вывод покажет SQL-инструкции для создания и заполнения только таблицы products. Это подтверждает, что вы успешно создали целенаправленную резервную копию.

Восстановление всей базы данных

Теперь, когда у вас есть резервные копии, давайте попрактикуемся в их восстановлении. На этом этапе вы смоделируете катастрофу, удалив всю базу данных mydatabase, а затем восстановив ее из файла полной резервной копии.

Сначала удалим базу данных. Флаг -e позволяет выполнить одну SQL-команду непосредственно из терминала.

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

Проверьте, что база данных удалена.

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

Вы увидите, что mydatabase больше нет в списке.

Прежде чем вы сможете восстановить данные, вы должны создать пустую базу данных с тем же именем.

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

Теперь восстановите базу данных, перенаправив файл mydatabase_backup.sql в качестве входных данных для клиента mysql.

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

Команда выполнит все SQL-инструкции из файла резервной копии, воссоздав таблицы и вставив данные.

Чтобы проверить восстановление, подключитесь к MySQL и проверьте таблицы и их содержимое.

sudo mysql -u root

В приглашении mysql> выполните следующие команды:

USE mydatabase;
SHOW TABLES;
SELECT * FROM users;

Вы снова должны увидеть таблицы products и users, а таблица users должна содержать свои исходные данные.

+--------------------+
| 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)

Выйдите из оболочки MySQL.

exit

Вы успешно восстановили всю базу данных после катастрофического сбоя.

Резюме

В этой лабораторной работе вы освоили основные навыки резервного копирования и восстановления баз данных MySQL с использованием утилиты mysqldump. Вы попрактиковались в создании полной резервной копии базы данных и целенаправленной резервной копии отдельной таблицы.

Вы также получили практический опыт процедур восстановления, смоделировав как полную потерю базы данных, так и случайное удаление отдельной таблицы. Успешно восстановив данные в обоих сценариях, вы продемонстрировали фундаментальное понимание полного жизненного цикла защиты данных, что является критически важным навыком для любого администратора баз данных или разработчика.