Создание дампа MySQL базы данных — полное руководство

Создание дампа MySQL базы данных — полное руководство

Создание дампа MySQL — это один из самых важных процессов при работе с базами данных. Дамп базы данных используется для резервного копирования, переноса сайта на другой сервер, миграции проекта или восстановления данных после ошибок.

В этой статье разберем:

Что такое дамп MySQL

Дамп MySQL — это файл, содержащий SQL-запросы для создания структуры базы данных и восстановления данных.
Обычно дамп имеет формат:

.sql
.sql.gz
.sql.zip

Файл дампа содержит:

  • CREATE TABLE
  • INSERT INTO
  • ALTER TABLE
  • DROP TABLE

Пример содержимого дампа MySQL:

CREATE TABLE users (
 id INT AUTO_INCREMENT,
 name VARCHAR(255),
 email VARCHAR(255),
 PRIMARY KEY (id)
);

INSERT INTO users (name, email) VALUES
('Ivan', 'ivan@mail.ru'),
('Alex', 'alex@mail.ru');

Создание дампа MySQL через mysqldump

Самый популярный способ создания дампа MySQL — использование утилиты mysqldump.
Базовая команда:

mysqldump -u username -p database_name > dump.sql

После выполнения команда попросит ввести пароль.
Пример:

mysqldump -u root -p my_database > backup.sql

После выполнения создастся файл:

backup.sql

Создание дампа MySQL через mysqldump

Если нужно создать дамп только одной таблицы:

mysqldump -u username -p database_name table_name > table.sql

Пример:

mysqldump -u root -p shop_db products > products.sql

Создание дампа всех баз данных

Иногда нужно создать дамп всех баз:

mysqldump -u root -p --all-databases > all_databases.sql

Это удобно для:

  • Резервного копирования сервера
  • Миграции VPS
  • Backup перед обновлением

Создание дампа MySQL с сжатием

Чтобы уменьшить размер файла:

mysqldump -u root -p database_name | gzip > backup.sql.gz

Преимущества:

  • Меньше размер файла
  • Быстрее перенос
  • Экономия места

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

Для больших проектов лучше использовать:

mysqldump -u root -p --single-transaction database_name > backup.sql

Это позволяет:

  • Избежать блокировки таблиц
  • Не останавливать сайт
  • Создать безопасный backup

Создание дампа MySQL через phpMyAdmin

Если нет доступа к консоли, можно использовать phpMyAdmin.
Пошаговая инструкция:

  • Войти в phpMyAdmin
  • Выбрать базу данных
  • Перейти во вкладку «Экспорт»
  • Выбрать «Быстрый» или «Обычный»
  • Нажать «Экспорт»

После этого скачивается файл:

database.sql

Создание дампа MySQL через SSH

Если сервер удаленный — подключаемся:

ssh user@server_ip

Затем выполнить:

mysqldump -u username -p database_name > backup.sql

И скачать файл:

scp user@server:/path/backup.sql

Чтобы не перезаписывать файлы, будем создавать их с указанием даты в имени файла:

mysqldump -u root -p database_name > backup_$(date +%F).sql

Пример файла: backup_2026-04-04.sql

Автоматическое создание дампа MySQL (cron)

Можно настроить автоматические бэкапы.
Открываем cron:

crontab -e

Добавляем задачу:

0 2 * * * mysqldump -u root -pPASSWORD database_name > /backup/db.sql

Это будет:

  • Создавать дамп каждый день
  • В 2 часа ночи
  • Сохранять в папку backup

Создание дампа MySQL с помощью PHP

Иногда нет доступа к SSH или mysqldump, и тогда создание дампа MySQL можно выполнить с помощью PHP. Такой способ часто используется:

  • На shared хостингах
  • В админ панелях
  • При автоматическом резервном копировании
  • В Laravel/WordPress/Bitrix проектах

Создание дампа MySQL через PHP (простой пример)

Пример PHP скрипта для создания дампа базы данных:

$host = 'localhost';
$user = 'username';
$password = 'password';
$database = 'database_name';

$mysqli = new mysqli($host, $user, $password, $database);

$tables = array();
$result = $mysqli->query("SHOW TABLES");

while($row = $result->fetch_row()) {
    $tables[] = $row[0];
}

$return = '';

foreach($tables as $table) {

    $result = $mysqli->query("SELECT * FROM $table");
    $num_fields = $result->field_count;

    $return .= "DROP TABLE IF EXISTS $table;";
    $row2 = $mysqli->query("SHOW CREATE TABLE $table")->fetch_row();
    $return .= "\n\n".$row2[1].";\n\n";

    while($row = $result->fetch_row()) {
        $return .= "INSERT INTO $table VALUES(";

        for($j=0; $j<$num_fields; $j++) {
            $row[$j] = addslashes($row[$j]);
            $row[$j] = str_replace("\n","\\n",$row[$j]);

            if(isset($row[$j])) {
                $return .= '"'.$row[$j].'"';
            } else {
                $return .= '""';
            }

            if($j < ($num_fields-1)) {
                $return .= ',';
            }
        }

        $return .= ");\n";
    }

    $return .= "\n\n";
}

$file = 'backup.sql';
$handle = fopen($file,'w+');
fwrite($handle,$return);
fclose($handle);

echo "Дамп успешно создан";

После запуска скрипта появится файл: backup.sql

Создание дампа MySQL с помощью PDO

Более современный вариант с использованием PDO:

$host = "localhost";
$user = "username";
$pass = "password";
$dbname = "database_name";

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

$tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);

$output = "";

foreach ($tables as $table) {

    $create = $pdo->query("SHOW CREATE TABLE $table")->fetch();
    $output .= $create['Create Table'] . ";\n\n";

    $rows = $pdo->query("SELECT * FROM $table");

    foreach ($rows as $row) {

        $values = array_map(function($value) use ($pdo) {
            return $pdo->quote($value);
        }, array_values($row));

        $output .= "INSERT INTO $table VALUES (" . implode(',', $values) . ");\n";
    }

    $output .= "\n\n";
}

file_put_contents("backup.sql", $output);

echo "Backup created";

А также, можно сделать в конце этого скрипта отправку файла на email. Таким образом, новый дамп базы данных будет приходить сразу на почту.

Когда нужно создавать дамп MySQL

Создание дампа MySQL необходимо при следующих ситуациях:

  • Перед обновлением сайта
  • Перед переносом проекта
  • Перед изменением структуры БД
  • Для резервного копирования
  • Для миграции сервера

Создание дампа MySQL обязательная процедура для любого проекта. Регулярные резервные копии помогут избежать потери данных и быстро восстановить сайт.