Бекап, сохранение и восстановление БД MySQL
Небольшая заметка о том, как сделать бекап базы данных MySQL с помощью утилиты mysqldump, а затем восстановить ее. Несмотря на то, что в сети есть множество инструкций и документации на эту тему, я решил добавит эту информацию в свой блог, просто по одной причине, чтобы в очередной раз когда это понадобиться не искать ее по разным сайтам. Возможно кто-то скажет, что за 15 лет администрирования серверов, уж такие то элементарные команды нужно помнить наизусть, но в этом то вся и суть, быть успешным специалистом — это не столько держать все в голове, сколько знать что и как делать, а нужную информацию(как и инструмент) держать под рукой.
Коротко о главном
Резервное копирование в файл:
mysqldump -u root -p database_name > database_name.sql |
Восстановление из файла:
mysql -u root -p database_name < database_name.sql |
Дополнительно
Резервное копирование нескольких баз данных MySQL (применяем флаг —databases и перечисляем название баз данных):
mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql |
Резервное копирование всех баз данных MySQL (применяем флаг —all-databases, без название базы данных):
mysqldump -u root -p --all-databases > all_databases.sql |
Создание сжатой резервной копии базы данных MySQL (передаем вывод на утилиту gzip и сохраняем в файл):
mysqldump database_name | gzip > database_name.sql.gz |
Создать резервную копию с отметкой времени в названии файла (используем вывод утилиты date):
mysqldump database_name > database_name-$(date +%Y%m%d).sql |
Экспорт и импорт базы данных MySQL одной командой (например в случае когда надо сделать копию базы данных):
mysqldump -u root -p database_name | mysql -h remote_host -u root -p new_database_name |
Выполнение MySQL запроса из командной строки:
mysql -u root -p -e "create database database_name"; |
Этих команд достаточно для выполнения большинства задач, при работе с базой данных MySQL из командной строки по SSH.
Bash скрипт для бекапа БД в разные файлы
Замените значение `PASSWORD` на свой пароль.
for i in `mysql -uroot -p`PASSWORD` -e'show databases;' | grep -v information_schema | grep -v Database`; do /usr/bin/mysqldump -uroot -p`PASSWORD` --skip-lock-tables $i | /usr/bin/gzip -c > `date +%Y-%m-%d`-$i.sql.gz; done |
Bash скрипт для восстановления списка БД из разных файлов
#!/bin/bash FILES=./*.sql for f in $FILES do s=${f##*/} s="${s%.*}" mysql -uroot -pPASSWORD $s < $f done |

Автор:






