Создание дампа MySQL базы данных — полное руководство
Создание дампа MySQL — это один из самых важных процессов при работе с базами данных. Дамп базы данных используется для резервного копирования, переноса сайта на другой сервер, миграции проекта или восстановления данных после ошибок.
В этой статье разберем:
- Что такое дамп MySQL
- Как создать дамп MySQL через mysqldump
- Создание дампа через phpMyAdmin
- Создание дампа через ssh
- Автоматическое создание дампов CRON
- Создание дампа MySQL с помощью PHP
- Когда нужно создавать дамп 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 обязательная процедура для любого проекта. Регулярные резервные копии помогут избежать потери данных и быстро восстановить сайт.