Цель урока: Освоить стандартный и самый надежный инструмент для создания резервных копий баз данных - утилиту mysqldump. Мы научимся создавать полный "снимок" (дамп) нашей базы в виде SQL-файла и, что не менее важно, научимся восстанавливать базу данных из этого файла в случае сбоя или необходимости переноса.
Часть 1: Теория. Что такое "дамп" и почему это важно?
Представьте, что ваша база данных - это сложный механизм, например, часы. Простое копирование файлов, в которых MariaDB хранит свои данные (в /var/lib/mysql), - это как сфотографировать часы в разобранном виде. Собрать их обратно из такой "копии" будет очень сложно или невозможно.
Дамп (dump) - это не просто копия файлов. Это логическая резервная копия. Утилита mysqldump подключается к серверу баз данных как обычный клиент и "просит" его: "Опиши мне, пожалуйста, все инструкции на языке SQL, которые нужны, чтобы воссоздать эту базу данных с нуля".
Что содержит файл дампа (.sql):
-
SQL-команды CREATE TABLE: Инструкции для создания структуры всех таблиц, их полей, индексов и т.д.
-
SQL-команды INSERT INTO: Инструкции для наполнения этих таблиц всеми вашими данными (пользователями, статьями, товарами).
-
Служебные команды для блокировки таблиц на время вставки, чтобы обеспечить целостность данных.
Преимущества такого подхода:
-
Универсальность: Файл .sql - это простой текстовый файл. Его можно открыть, прочитать и понять. Его можно перенести на другую версию MySQL/MariaDB, на другую операционную систему или даже в другую СУБД (например, PostgreSQL) с некоторыми изменениями.
-
Надежность: Этот метод гарантирует, что вы получите консистентный, целостный снимок вашей базы данных на момент создания дампа.
Часть 2: Практика. Создание резервной копии (mysqldump)
Утилита mysqldump устанавливается вместе с пакетом mariadb-client. Важно: mysqldump - это программа командной строки, она запускается из обычного терминала (bash), а не из консоли MariaDB>.
Базовый синтаксис:
mysqldump -u [пользователь] -p [имя_базы_данных] > [имя_файла.sql]
-
-u [пользователь]: Имя пользователя, у которого есть права на чтение этой базы.
-
-p: Указать, что мы будем вводить пароль. Никогда не пишите пароль прямо в команде (-pПАРОЛЬ), это небезопасно и он сохранится в истории команд.
-
[имя_базы_данных]: Какую именно базу мы хотим сохранить.
-
>: Наш знакомый оператор перенаправления вывода. mysqldump печатает весь SQL-код в стандартный вывод (stdout), а мы перенаправляем этот поток в файл.
-
[имя_файла.sql]: Имя файла, в который будет сохранен дамп.
Шаг 1: Создание дампа нашей тестовой базы
Давайте создадим бэкап базы my_website_db, которую мы создали на прошлом уроке. Мы будем использовать пользователя my_website_user, так как у него есть все необходимые права на эту базу.
Создадим специальный каталог для бэкапов баз данных:
mkdir ~/db_backups
cd ~/db_backups
Выполним команду mysqldump:
mysqldump -u my_website_user -p my_website_db > my_website_db_backup.sql
Система запросит Enter password:. Введите пароль для пользователя my_website_user. Команда выполнится без вывода на экран.
Шаг 2: Проверка результата
Посмотрим, что у нас получилось:
ls -lh
Вы увидите новый файл my_website_db_backup.sql.

Давайте заглянем внутрь него, чтобы убедиться, что это действительно SQL-код:
# less - это удобный просмотрщик для больших файлов
less my_website_db_backup.sql
Вы увидите множество SQL-инструкций, включая CREATE TABLE test_table .... Для выхода нажмите q.
Резервное копирование всех баз данных:
Иногда нужно сделать бэкап всего сервера. Для этого используется root-пользователь и специальная опция --all-databases.
# Выполняется от root-пользователя ОС, пароль не требуется
mysqldump --all-databases > all_databases_backup.sql
Часть 3: Практика. Восстановление из резервной копии
Теперь давайте сымитируем катастрофу и восстановим нашу базу.
Шаг 1: "Катастрофа" - удаляем базу данных
Войдем в консоль MariaDB под root:
mariadb
Необратимо удалим нашу базу данных. Будьте осторожны с этой командой.
DROP DATABASE my_website_db;
Убедимся, что ее больше нет:
SHOW DATABASES;
В списке вы больше не увидите my_website_db.
Выходим из консоли:
exit;
Шаг 2: Восстановление
Процесс восстановления состоит из двух этапов:
-
Создать пустую базу данных с таким же именем.
-
"Залить" в нее содержимое нашего .sql файла.
Синтаксис:
mysql -u [пользователь] -p [имя_пустой_базы_данных] < [имя_файла.sql]
-
Обратите внимание: здесь используется mysql (или mariadb) клиент, а не mysqldump.
-
<: Оператор перенаправления ввода. Мы говорим: "возьми содержимое файла [имя_файла.sql] и передай его на стандартный ввод (stdin) программы mysql". Клиент mysql просто выполнит все SQL-команды из этого файла.
Выполняем восстановление:
-
Сначала нужно войти в mariadb и заново создать пустую базу:
mariadbВнутри консоли:
CREATE DATABASE my_website_db; exit; -
Теперь "заливаем" дамп. Пользователь my_website_user имеет права на запись в эту базу, поэтому мы можем использовать его.
# Убедитесь, что вы находитесь в каталоге ~/db_backups mysql -u my_website_user -p my_website_db < my_website_db_backup.sql -
Введите пароль для my_website_user.
Шаг 3: Финальная проверка
Давайте войдем в базу и посмотрим, восстановилась ли наша тестовая таблица.
mariadb -u my_website_user -p
Внутри консоли:
-- Выбираем нашу базу
USE my_website_db;
-- Смотрим, какие в ней есть таблицы
SHOW TABLES;
Результат:
+-------------------------+
| Tables_in_my_website_db |
+-------------------------+
| test_table |
+-------------------------+
Наша таблица на месте! Восстановление прошло успешно.

Часть 4: Заключение
Резервное копирование - это не опция, а абсолютная необходимость. Сегодня вы освоили самый главный инструмент для этого в мире MySQL/MariaDB. Вы научились:
-
Понимать, что такое логический дамп базы данных и почему он лучше простого копирования файлов.
-
Создавать резервную копию одной или всех баз данных с помощью mysqldump.
-
Восстанавливать базу данных из .sql файла, используя стандартный клиент mysql и перенаправление ввода.
Этот навык - ваша главная страховка от потери данных. Написание скрипта, который автоматически по cron выполняет mysqldump и сохраняет дамп в надежное место - одна из первых задач, которую должен выполнить любой системный администратор.
На следующем, 50-м уроке, мы кратко познакомимся с другим популярным сервером баз данных - PostgreSQL, чтобы вы имели представление об альтернативах и понимали его основные отличия от MySQL/MariaDB.
Перейти к просмотру - УРОК №50.
Промо-код: PROMO15 - скидка 15%!
Введите при оформлении первого заказа на сайте: Hosting-VDS.com


