Цель урока: Освоить стандартный и самый надежный инструмент для создания резервных копий баз данных - утилиту 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: Восстановление

Процесс восстановления состоит из двух этапов:

  1. Создать пустую базу данных с таким же именем.

  2. "Залить" в нее содержимое нашего .sql файла.

Синтаксис:

mysql -u [пользователь] -p [имя_пустой_базы_данных] < [имя_файла.sql]
  • Обратите внимание: здесь используется mysql (или mariadb) клиент, а не mysqldump.

  • <: Оператор перенаправления ввода. Мы говорим: "возьми содержимое файла [имя_файла.sql] и передай его на стандартный ввод (stdin) программы mysql". Клиент mysql просто выполнит все SQL-команды из этого файла.

Выполняем восстановление:

  1. Сначала нужно войти в mariadb и заново создать пустую базу:

    mariadb

    Внутри консоли:

    CREATE DATABASE my_website_db;
    exit;
  2. Теперь "заливаем" дамп. Пользователь my_website_user имеет права на запись в эту базу, поэтому мы можем использовать его.

    # Убедитесь, что вы находитесь в каталоге ~/db_backups
    mysql -u my_website_user -p my_website_db < my_website_db_backup.sql
  3. Введите пароль для 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

авторское право цифровые решения

Помог ли вам данный ответ? 0 Пользователи нашли это полезным (0 голосов)