Thank you for reading this post, don't forget to subscribe!
Резервирование
Дамп всех баз
1 |
mysqldump -u backup -pPASSWORD -A > alldb.sql |
Дамп нескольких баз
1 |
mysqldump -u backup -pPASSWORD -B db1 db2 db3 > db123.sql |
Дамп баз по-таблично
Отдельно сохраняется структура, триггреры, процедуры и события. Все дампы сжимаются и раскладываются по бд/дням
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/bin/sh MYSQL_BACKUP_PATH=/home/admin/www BACKUP_DATE=` date "+%Y-%m-%d"` set mask 077 cd $MYSQL_BACKUP_PATH mkdir $BACKUP_DATE cd $BACKUP_DATE # Просмотр всех наявных БД. Структура БД, триггеры, процедуры, события сохраняются отдельно for MYSQL_DB in $(mysql -u backup -pPASSWORD -S /tmp/mysql.sock -N -e "show databases" | tr -d '|' | sed '/+-----/d; /_schema/d; /mysql/d'); do \ mkdir $MYSQL_DB mysqldump -u backup -pPASSWORD -S /tmp/mysql.sock $MYSQL_DB --no-data --triggers --routines --events > $MYSQL_DB/_structure.sql # Дамп таблиц конкретной БД for MYSQL_TABLE in $(mysql -u backup -pPASSWORD -S /tmp/mysql.sock -N -e "show tables from $MYSQL_DB" | tr -d '|' | sed '/+-----/d'); do \ mysqldump -u backup -pPASSWORD -S /tmp/mysql.sock $MYSQL_DB $MYSQL_TABLE --opt --extended-insert --lock-all-tables > $MYSQL_DB/$MYSQL_TABLE.sql done # Архивирование дампов и раскладка по каталогам tar czf $MYSQL_DB.tgz $MYSQL_DB rm -rf $MYSQL_DB done |
Восстановление
Всех баз
1 |
mysql -u root -pPASSWORD <span class="tag">< all<span class="attribute">db.sql</span></span> |
Конкретной базы
1 |
mysql -u root -pPASSWORD db1 < db1.sql |
Конкретного дампа базы из общего дампа (—all-databases)
1 |
sed -n -e '/CREATE DATABASE.*db2/,/CREATE DATABASE/p' alldb.sql > db2.sql |
Конкретного дампа таблицы из дампа конкретной базы
Скрипт запускается из той же директории, где хранятся сжатые gzip’ом дампы БД
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/bin/sh PATH=/bin:/usr/bin/ ls *.gz | sed 's/\..*//' echo "Enter dump" read DUMPDB gunzip $DUMPDB cat $DUMPDB | awk '/CREATE TABLE/ {print($3)}' | sed -e s/\`//g echo "Enter table" read TABLE cat $DUMPDB | sed "/ SET /d" | awk '/CREATE TABLE `'$TABLE'`/,/UNLOCK TABLES/' > $TABLE.sql |