Содержимое статьи:
В данной статье мы рассмотрим примеры того, как можно сделать резервную копию (бэкап, 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
.