Создать/развернуть дамп MySQL БД

Категория: MySQL

Как веб разработчику, мне часто приходится создавать и разворачивать дампы баз данных, и в основном это MySQL. В данной заметке я оставлю частые задачи по работе с дампами MySQL БД. На вскидку, при развертывании InnoDB таблицы ~ 1GB уходит около получаса. Если вам нужно засечь время создания/восстановления дампа - используйте команду time (time mysql ...).

Создание дампа MySQL базы

Создать полный дамп MySQL:

mysqldump -uroot --all-databases --routines --triggers -p > mysql.dump

Создать и сжать дамп БД:

mysqldump -uroot -proot DATABASE | gzip > ./db.sql.gz

Создать дамп структуры MySQL:

mysqldump -u%user% -p%pass% --no-data db_name > db_name.dump

Сжать SQL дамп:

gzip --best < db_name.sql > db_name.sql.gz

Исключить таблицы юзеров WP:

mysqldump -uUSER -pPASS --ignore-table=blog.wp_users --ignore-table=blog.wp_usermeta blog > blog_without_users.sql

Создать полный дамп БД - каждая БД в отдельном архиве (shell-скрипт):

#!/bin/bash
dblist=`mysql -u%user% -p%pass% -e "show databases" | sed -n '2,$ p'`
for db in $dblist; do
    mysqldump -u%user% -p%pass% --routines --triggers $db | gzip --best > $db.sql.gz
done

Восстановление дампа MySQL БД

Восстановить MySQL дамп:

mysql -uUSER -hlocalhost -pPASS DB_NAME < /path/dump.sql

Восстановить MySQL дамп из zip архива:

unzip -p dump.sql.zip | mysql -u root -p%pass% database%

Восстановить .sql.gz дамп:

gunzip -c dump.sql.gz | mysql -uroot -hlocalhost -p%pass% %database%

Выдернуть конкретную таблицу из общего дампа:

awk '/CREATE TABLE `table_name`/,/UNLOCK TABLES/' db_name.dump

#mysqldump, #db dump, #restore database

категория: MySQL