Как сделать резервную копию базы/таблицы в MySQL

  • 05.05.2019
  • 10 610
  • 5
  • 06.05.2019
  • 10
  • 8
  • 2
Как сделать резервную копию базы/таблицы в MySQL

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

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

Бэкап БАЗЫ (БАЗ) данных

Для создания резервных копий баз данных MySQL из терминала Linux, существует специальная утилита mysqldump, которая устанавливается вместе с сервером. Ниже рассмотрим несколько различных примеров, используя которые можно делать резервные копии как целых баз, так и необходимых таблиц в конкретной базе.

Создаем резервную копию ОДНОЙ базы

mysqldump -u root -p database_name > database_name_backup.sql

-u root - аргумент, означающий, что мы будем подключаться к MySQL серверу под учетной записью root (может быть любая учетная запись, имеющая необходимые права на нужную таблицу).
-p - аргумент, означающий, что необходимо ввести пароль для авторизации (т.е. доступ для данного пользователя без пароля - не разрешен). В случае, когда пароль не требуется, данный аргумент можно упустить.
database_name - это имя базы данных, резервную копию которой мы делаем.
database_name_backup.sql - это название бекапа, который будет создан. Создается он в текущем каталоге из которого вы запускаете данную команду. Если вам необходимо сохранить резервную копию в какой-либо определенный каталог, то можно сразу указать путь до этого каталога, написав вместо database_name_backup.sql, /tmp/database_name_backup.sql. Таком образом, резервная копия будет создана в каталоге /tmp

Создаем резервную копию НЕСКОЛЬКИХ баз

В случае, когда необходимо одной командой создать бекапы для нескольких баз данных, можно воспользоваться следующей командой:

mysqldump -u root -p --databases database_name_1 database_name_2 database_name_3 > databases_backup.sql

--databases - аргумент, указывающий, что далее будут перечислены базы данных, резервные копии которых мы хотим сделать.
database_name_1 database_name_2 database_name_3 - имена баз данных, резервные копии которых мы хотим сделать. Разделяются пробелом.

Создаем резервную копию ВСЕХ баз

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

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

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

Если вы получаете ошибку "mysqldump: 1044 Access denied when using LOCK TABLES", то скорей всего вы пытаетесь делать резервную копию не под учетной записью root, а под какой то другой, у которой недостаточно прав на системные базы данных, вроде sys и mysql, либо другие. Поэтому, необходимо выдать нужные права пользователю на все базы, подробней об этом можно прочитать в данной статье: Ошибка: mysqldump: 1044 Access denied when using LOCK TABLES, либо делать резервные копии с помощью учетной записи root.

Бэкап ТАБЛИЦЫ (ТАБЛИЦ) из определенной базы данных

Создаем резервную копию ОДНОЙ таблицы из базы

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

mysqldump -u root -p database_name table_name > table_name_backup.sql

table_name - это имя таблицы, резервную копию которой мы хотим сделать и которая находится в базе данных database_name.

Создаем резервную копию НЕСКОЛЬКИХ таблиц из базы

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

mysqldump -u root -p database_name table_name_1 table_name_2 table_name_3 > tables_backup.sql

table_name_1 table_name_2 table_name_3 - это названия таблиц, резервные копии которых мы хотим сделать. В нашем примере данные таблицы находятся в базе данных database_name.

Была ли эта статья Вам полезна?

Комментарии к статье (5)

    • Гость

    Предлагается делать бекап баз без остановки сервера,ну вообще никак. man

      • AJIekceu4

      Зачем останавливать работу сервера для создания обычного бекапа? Если у вас там какие-либо очень чувствительные данные, то это не значит что всем остальным надо останавливать работу mysql сервера в их ситуации при создании бекапа

    • Гость

    Слишком мало информации.

      • AJIekceu4

      Точно также и в этом комментарии слишком мало информации, чтобы понять, чего не хватает в статье.

      • Аноним

      Не знаю, все очень понятно, сделал резервку базы без проблем.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.