SCROLL
Среднее время на прочтение: 2 мин.

Как создать резервную копию и восстановить базы данных MySQL с помощью mysqldump

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

mysqldump — это утилита командной строки, которая используется для создания логической резервной копии базы данных MySQL. Она создает SQL-запросы, которые могут быть использованы для воссоздания объектов и данных базы данных. Команда также может быть использована для создания выходных данных в формате XML, delimited text или CSV.

Синтаксис mysqldump

mysqldump -u [user name] –p [password] [options] [database_name] [tablename] > [dumpfilename.sql]

Описание параметров следующие:

  • -u [user name] — Это имя пользователя для подключения к серверу MySQL.
  • -p [password] — Действительный пароль пользователя MySQL.
  • [options] — Параметры конфигурации для настройки резервного копирования.
  • [database_name] — Имя базы данных, для которой необходимо сделать резервную копию.
  • [tablename] — Необязательный параметр. Если вы хотите создать резервную копию определенных таблиц, то можете указать их имена в команде.
  • < или > — Этот символ указывает, создаем ли мы резервную копию базы данных или восстанавливаем ее. Вы можете использовать > для создания резервной копии и < для ее восстановления
  • [dumpfilename.sql] — Путь и имя файла резервной копии. Как я уже говорил, мы можем создать резервную копию в XML, delimited text или SQL-файле, поэтому мы можем указать расширение файла соответствующим образом.

Создание резервной копии одной базы данных

Например, хотим сделать резервную копию одной базы данных (прим. database1), выполните следующую команду.

mysqldump -u root -p database1 > \tmp\database1_20241027.sql

Создание резервной копии нескольких баз данных или всех баз данных

Например, хотим сделать резервную копию более чем одной базы данных (прим. database1 и database2). Для этого в команду mysqldump необходимо добавить параметр -databases.

mysqldump -u root -p --databases database1 database2 > \tmp\database1_database2_20241027.sql

Аналогично, если хотим сделать резервную копию всех баз данных, необходимо использовать опцию -all-databases в команде mysqldump.

mysqldump -u root -p --all-databases > \tmp\all_databases_20241027.sql

Создание резервной копии структуры базы данных

Если хотим сделать резервную копию структуры базы данных (прим. database1), то в команде mysqldump необходимо использовать параметр -no-data.


mysqldump -u root -p --no-data database1 > \tmp\database1_schema_20241027.sql

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

Если хотим сделать резервную копию определенной таблицы (прим. table1), то после имени базы данных необходимо указать имя таблицы.

mysqldump -u root -p database1 table1 > \tmp\database1_table1_tables_20241027.sql

Если хотим сделать резервную копию более чем одной таблицы (прим. table1 и table2), то необходимо разделять имена таблиц пробелом.

mysqldump -u root -p database1 table1 table2 > \tmp\database1_table1_table2_tables_20241027.sql

Создание резервной копии данных базы данных

Если хотим сделать резервную копию данных без структуры базы данных, то в команде mysqldump необходимо использовать параметр -no-create-info.


mysqldump -u root -p database1 --no-create-info > \tmp\database1_data_only_20241027.sql

Восстановление базы данных

Восстановление базы данных MySQL с помощью mysqldump очень просто. Чтобы восстановить базу данных, необходимо создать пустую базу данных с аналогичным именем восстанавливаемой базы данных.

При восстановлении базы данных вместо mysqldump необходимо использовать mysql, иначе mysqldump не сгенерирует схему и данные.
mysql -u root -p database1 < \tmp\database1_20241027.sql

Восстановление определенной таблицы в базе данных

Например, кто-то удалил таблицу (table2) из базы данных (database1). Вместо того чтобы восстанавливать всю базу данных, мы можем восстановить удаленную таблицу из имеющейся резервной копии.

Шаг #1

Создайте фиктивную базу данных с именем database1_dummy и восстановите резервную копию базы данных database1 на ней.

mysql>
create database database1_dummy;
use database1_dummy;
source \tmp\database1_20241027.sql
Шаг #2

Создайте резервную копию таблицы table2 в файле database1_dummy_table2_20241027.sql.

mysqldump -u root -p database1_dummy table2 > \tmp\database1_dummy_table2_20241027.sql
Шаг #3

Восстановите таблицу table2 из файла database1_dummy_table2_20241027.sql.

mysql>
use database1;
source \tmp\database1_dummy_table2_20241027.sql

Обсуждение

0 комментариев

Нет комментариев.