Импорт, или экспорт mysql баз данных с прогресс баром

Прогресс импорта, или экспорта mysql баз данных можно наблюдать с помощью консольного “Pipe Viewer”, или pv. Импорт pv /path/to/sqlfile.sql | mysql -uUSERNAME -pPASSWORD -D DATABASE_NAME Экспорт Для начала нам нужно узнать полный размер экспортируемых баз данных. Это можно посмотреть в таблице information_shema: 1 2 3 4 5 6 7 8 9 SELECT Data_BB / POWER(1024,1) Data_KB, Data_BB / POWER(1024,2) Data_MB, Data_BB / POWER(1024,3) Data_GB FROM ( SELECT SUM(data_length) Data_BB FROM information_schema.tables WHERE table_schema IN ('DATABASE_NAME') ) A; После этого можем использовать получившийся общий размер для мониторинга прогресса экспорта: 1 mysqldump -uUSERNAME -pPASSWORD DATABASE_NAME | pv -s 9999M > DATABASE_NAME.sql На этом всё. Оригинал взят на сайте dubbs.github.io

13 квітня 2016 · 1 хвилина · 107 слів · dimetrius

Как разделить полный дамп mysql на отдельные базы

Как-то пришлось мне восстанавливать всего то несколько баз из полного бэкапа mysql, который содержал в себе все базы. Довольно долго сканировал интернет и кое что нашлось. Ниже будет приведён код скрипта, который мне в этом очень помог. Но, отработал он у меня корректно только на linux, на freebsd что-то у него не получалось. Cкрипт предназначен для разрезания MySQL-дампа с несколькими базами на отдельные базы. Файлы именуются по принципу: название_базы.номер_в_общем_дампе.sql Использование ./db_split.sh файл_дампа.sql каталог_куда_складывать_дампы Скрипт 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #!/bin/bash # By Rain ;) # Создан 2008-04-01 # Изменен 2008-04-17: добавлено описание # Изменен 2008-04-18: добавлено удаление "USE DATABASE" в начале дампов # Изменен 2009-06-08: переписал с использованием awk # Проверка передачи переменных (да-да, примитивно, но надо ж ему хоть что-то проверять? :)) [ -z "$2" ] && echo "Error: directory is not set" && exit 1 [ ! -d "$2" ] && echo "Error: $2 not a directory" && exit 1 # Весь процесс awk '/^CREATE DATABASE/{nodb+=1; print "Processing DB "nodb"..."}; {print >> "'$2'/"nodb".sql"}' "${1}" echo -e "Renaming dumps..." ls -1 ${2}/*.sql | while read file do dumpname="$(head -n1 "${file}" | sed -re "s/^CREATE DATABASE|[\` ;]//g" -e "s@/\\*[\!a-zA-Z0-9_ ]*\*\/@@g")" sed -i -n '/^CREATE DATABASE/,/^USE/!p' "${file}" # Конечно, вряд ли окажутся 2 базы с одним именем, но кто знает... [ ! -e "${file%/*}/${dumpname}.sql" ] && mv "${file}" "${file%/*}/${dumpname}.sql" done echo "All done" Не забываем сделать скрипт исполняемым chmod +x ./db_split.sh ...

13 квітня 2016 · 2 хвилин · 254 слів · dimetrius