
Мне нужно экспортировать около 20 баз данных на сервере MySql, которые содержат около 100 различных баз данных. Возможно ли экспортировать список имен баз данных в отдельные файлы с помощью консольной команды? (конечно, в Linux).
решение1
echo "show databases" | mysql -N | while read db
do
mysqldump ${db} > ${db}.sql
done
Вы можете использовать grep
для удаления нежелательных баз данных, таких как mysql
иinformation_schema
решение2
Создайте текстовый файл с именем каждой базы данных, резервную копию которой вы хотите создать, на отдельной строке.
например
db1
reports
Тогда используйте такой скрипт
#!/bin/bash
ERRORS=0
while read db
do
echo "Processing $db"
mysqldump -u root -p365576dx "$db" >"$db".sql
EXITSTATUS=$?
if [ "$ERRORS" -eq "0" -a "$EXITSTATUS" -ne "0" ]
then
ERRORS="$EXITSTATUS"
fi
done<dbstodump
if [ "$ERRORS" -ne "0" ]
then
echo "Errors occurred see above for details"
exit 1
fi
решение3
Самым простым решением будет простой цикл for прямо в командной строке. В моих примерах я хочу экспортировать базы данных cars
, animals
и computers
.
for db in cars animals computers ; do mysqldump -uuser -ppassword "$db" > "$db.sql" ; done