ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

6 минут чтени€

¬ этом руководстве мы рассказываем, как выполнить резервное копирование и восстановление баз данных MySQL или MariaDB из командной строки с помощью утилиты mysqldump.

‘айлы резервных копий, созданные утилитой mysqldump, представл€ют собой набор операторов SQL, которые можно использовать дл€ воссоздани€ исходной базы данных.  оманда mysqldump также может генерировать файлы в формате CSV и XML. ¬ы также можете использовать утилиту mysqldump дл€ переноса вашей базы данных MySQL на другой сервер MySQL.

Mysqldump

—интаксис команды Mysqldump

ѕрежде чем приступить к использованию команды mysqldump, начнем с обзора основного синтаксиса.

¬ыражени€ утилиты mysqldump имеют следующую форму:

mysqldump [options] > file.sql
  • options - параметры mysqldump
  • file.sql - дамп (резервна€ копи€) файла

ƒл€ использовани€ команды mysqldump сервер MySQL должен быть доступен и запущен.


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

Ќаиболее распространенный вариант использовани€ инструмента mysqldump - резервное копирование одной базы данных.

Ќапример, чтобы создать резервную копию базы данных с именем database_name, использу€ пользовател€ root, и сохранить ее в файл с именем database_name.sql, вы должны выполнить следующую команду:

mysqldump -u root -p database_name > database_name.sql

¬ам будет предложено ввести пароль root. ѕосле успешной аутентификации начнетс€ процесс дампа. ¬ зависимости от размера базы данных процесс может зан€ть некоторое врем€.

≈сли вы вошли в систему как тот же пользователь, которого вы используете дл€ выполнени€ экспорта, и этот пользователь не требует парол€, вы можете пропустить опции -u и -p:

mysqldump database_name > database_name.sql

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

л€ резервного копировани€ нескольких баз данных MySQL одной командой вам нужно использовать параметр --database, за которым следует список баз данных, которые вы хотите сделать резервную копию.  аждое им€ базы данных должно быть разделено пробелом.

mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql

 оманда выше создаст файл дампа, содержащий обе базы данных.


–езервное копирование всех баз данных MySQL

»спользуйте опцию --all-database дл€ резервного копировани€ всех баз данных MySQL:

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

 ак и в предыдущем примере, команда выше создаст один файл дампа, содержащий все базы данных.


–езервное копирование всех баз данных MySQL в отдельные файлы

”тилита mysqldump не предоставл€ет возможность резервного копировани€ всех баз данных в отдельные файлы, но мы легко достигаем этого с помощью простого цикла bash FOR:

for DB in $(mysql -e 'show databases' -s --skip-column-names); do
    mysqldump $DB > "$DB.sql";
done

 оманда выше создаст отдельный файл дампа дл€ каждой базы данных, использу€ им€ базы данных в качестве имени файла.


—оздание сжатой резервной копии базы данных MySQL

≈сли размер базы данных очень большой, рекомендуетс€ сжать вывод. ƒл€ этого просто перенаправьте вывод в утилиту gzip и перенаправьте его в файл, как показано ниже:

mysqldump database_name | gzip > database_name.sql.gz

—оздать резервную копию с отметкой времени

≈сли вы хотите сохранить более одной резервной копии в одном месте, вы можете добавить текущую дату в им€ файла резервной копии:

mysqldump  database_name > database_name-$(date +%Y%m%d).sql

 оманда выше создаст файл в следующем формате database_name-20200223.sql


¬осстановление дампа MySQL

¬ы можете восстановить дамп MySQL с помощью инструмента mysql. ќбщий синтаксис команды выгл€дит следующим образом:

mysqld  database_name < file.sql

¬ большинстве случаев вам необходимо создать базу данных куда вы будете производить импорт. ≈сли база данных уже существует, сначала вам нужно удалить ее.

¬ следующем примере перва€ команда создаст базу данных с именем database_name, а затем импортирует в нее дамп database_name.sql:

mysql -u root -p -e "create database database_name";
mysql -u root -p database_name < database_name.sql

¬осстановление одной базы данных MySQL из полного дампа MySQL

≈сли вы создали резервную копию всех своих баз данных с помощью параметра -all-database и хотите восстановить одну базу данных из файла резервной копии, который содержит несколько баз данных, используйте параметр --one-database, как показано ниже:

mysql --one-database database_name < all_databases.sql

Ёкспорт и импорт базы данных MySQL одной командой

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

mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name

 оманда выше передаст вывод клиенту mysql на удаленном хосте и импортирует его в базу данных с именем remote_database_name. ѕеред выполнением команды убедитесь, что база данных уже существует на удаленном сервере.


јвтоматизаци€ резервного копировани€ с помощью Cron

јвтоматизаци€ процесса резервного копировани€ баз данных так же проста, как создание задани€ cron, которое будет запускать команду mysqldump в указанное врем€.

ѕодробно про cron можно прочитать в нашей статье.

„тобы настроить автоматическое резервное копирование базы данных MySQL с помощью cronjob, выполните следующие действи€:

  1. —оздайте файл с именем .my.cnf в вашем домашнем каталоге пользовател€:
    sudo nano ~/.my.cnf
    
    —копируйте и вставьте следующий текст в файл .my.cnf.
    [client]
    user = dbuser
    password = dbpasswd
    
    Ќе забудьте заменить dbuser и dbpasswd на пользовател€ базы данных и пароль пользовател€.
  2. ќграничьте права доступа к файлу учетных данных, чтобы только ваш пользователь имел к нему доступ, использу€ команду cmod (подробнее про которую можно прочесть тут):
    chmod 600 ~/.my.cnf
    
  3. —оздайте каталог дл€ хранени€ резервных копий при помощи комадны mkdir (про нее тоже есть стать€):
    mkdir ~/db_backups
    
  4. ќткройте ваш пользовательский файл crontab:
    crontab -e
    
    ƒобавьте следующее задание cron, которое будет создавать резервную копию имени базы данных mydb каждый день в 3 часа ночи:
    0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +%Y%m%d).sql	
    
    Ќе забудьте заменить username вашим реальным именем пользовател€. ¬ы также можете создать еще один cron job, чтобы удалить любые резервные копии старше 30 дней:
    find /path/to/backups -type f -name "*.sql" -mtime +30 -delete
    
     онечно, вам нужно настроить команду в соответствии с вашим местоположением резервной копии и именами файлов. „тобы узнать больше о команде find, ознакомьтесь с нашим –уководством по поиску файлов в Linux с помощью командной строки.

«аключение

Ёто руководство охватывает только основы, но оно должно быть хорошим началом дл€ тех, кто хочет научитьс€ создавать и восстанавливать базы данных MySQL из командной строки с помощью утилиты mysqldump. ≈сли вы хотите найти больше материалов про базы данных, то просто наберите sql в нашем поиске!