Резервное копирование и восстановление MySQL с помощью mysqldump

4 минуты чтения
Средний рейтинг статьи — 4.9

Резервное копирование баз данных — критически важная задача для любого разработчика, администратора или DevOps-инженера. В случае с MySQL и MariaDB одной из самых простых и надёжных утилит для этого является mysqldump.

В этой статье рассмотрим, как создать бэкап и восстановить данные из дампа, а также полезные опции mysqldump и практические советы.

Что такое mysqldump

mysqldump — это CLI-инструмент, который поставляется вместе с MySQL. Он создаёт текстовый дамп базы данных в виде SQL-скрипта: с командами CREATE, INSERT, DROP, LOCK,что позволяет воссоздать структуру и данные базы на другом сервере.

Как сделать резервную копию

1. Бэкап одной базы данных

mysqldump -u username -p database_name > backup.sql
  • -u — пользователь базы данных
  • -p — запрашивает пароль
  • database_name — имя вашей базы
  • backup.sql — куда сохранить дамп

2. Бэкап нескольких баз

mysqldump -u username -p --databases db1 db2 db3 > multi_backup.sql

3. Бэкап всех баз на сервере

mysqldump -u username -p --all-databases > full_backup.sql

4. Бэкап только структуры (без данных)

mysqldump -u username -p --no-data database_name > structure_only.sql

Как восстановить базу данных

1. Создайте новую базу (если нужно)

CREATE DATABASE new_database;

Или через CLI:

mysql -u username -p -e "CREATE DATABASE new_database"

2. Восстановление из дампа

mysql -u username -p new_database < backup.sql

Обратите внимание: в дампе может быть CREATE DATABASE, тогда база создастся автоматически — проверьте файл перед импортом.

Полезные параметры mysqldump

ОпцияНазначение
--single-transactionИспользуется для создания консистентного бэкапа без блокировки таблиц
--no-dataЭкспорт только структуры, без данных
--skip-lock-tablesНе блокировать таблицы во время дампа (важно для InnoDB)
--routinesВключить экспорт хранимых процедур и функций
--triggersВключить экспорт триггеров
--compressСжимает данные при передаче через сеть

Советы и лучшие практики

  • Используйте --single-transaction для InnoDB, чтобы избежать блокировок.
  • Автоматизируйте бэкапы через cron или systemd timer.
  • Храните дампы не только локально: используйте облако (S3, GCS) или удалённый сервер.
  • Шифруйте архивы с чувствительными данными перед отправкой в сеть.
  • Используйте gzip/xz/zstd для сжатия:
mysqldump -u user -p db | gzip > db_backup.sql.gz

Пример скрипта для автоматизации

#!/bin/bash
 
DATE=$(date +%F)
DB_NAME=\"your_database\"
BACKUP_DIR=\"/var/backups/mysql\"
USER=\"root\"
PASS=\"your_password\"
 
mkdir -p $BACKUP_DIR
 
mysqldump -u $USER -p$PASS $DB_NAME | gzip > \"$BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz\"

Заключение

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

4 минуты чтения
Средний рейтинг статьи — 4.9

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний