У кого-нибудь есть один лайнер (командная строка), который будет сбрасывать все базы данных в отдельные файлы дампа, например.
forumdb.dump
wikidb.dump
etc.
Не думаю, что есть хороший однострочный текст, но вот фрагмент скрипта. Возможно, вы сможете адаптировать это к своему использованию. Если вы хотите жестко запрограммировать свой список баз данных, вы, вероятно, можете сделать его однострочным. Но мне нужно было что-то, что могло бы обрабатывать добавление и удаление базы данных.
OPTIONS="--verbose --lock-tables --flush-logs"
BACKUPDATE=`date +"%y%m%d%H"`
DBSQL="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA where SCHEMA_NAME!='information_schema' \
AND SCHEMA_NAME!='performance_schema' order by SCHEMA_NAME"
# retrieve list of databases
DBS=`/usr/bin/mysql --defaults-extra-file=/etc/mysql/credentials.cnf --batch \
--skip-column-names --execute "$DBSQL"`
# cleat it up a bit
DBS=`echo $DBS | tr -d '\n' | sed -e "s/ \+/ /g"`
# backup each database into a separate file
for DB in $DBS; do
/usr/bin/mysqldump --defaults-extra-file=/etc/mysql/credentials.cnf ${OPTIONS} $DB > /backup_${DB}_${BACKUPDATE}
done
Почему бы и нет, хотя лайнер еще длинный :)
mkdir mysql-all-dumps ; for x in `mysql -u root -pXXXXXXXX -e "SHOW DATABASES;" | tr -d "| " | grep -vE '(Database|information_schema)'` ; do mysqldump -v -u root -pXXXXXXXXX $x > mysql-all-dumps/$x.sql ; done
Убедитесь, что вы заменили XXXX правильным паролем root mysql, а параметр verbose в mysqldump также является необязательным.
могу сделать это
cd mysql_data_dir ; for d in $(ls -d */ | xargs basename) ; do mysqldump $d > /path/to/dumps/$d.dump; done
В основном перечислите все каталоги в каталоге данных, а затем просто сбросьте их. Я сделал это в крайнем случае, если бы у меня не было заданий для резервного копирования отдельных файлов.