有没有人有一个class轮(命令行),将转储所有数据库分离转储文件,例如
forumdb.dump wikidb.dump etc.
为什么不,仍然是一个长期的class轮虽然:)
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
确保使用正确的mysql root密码replaceXXXX,并且mysqldump中的详细选项也是可选的。
我不相信有一个好的单线,但这是一个脚本片段。 您可能能够适应您的使用情况。 如果你想硬编码你的数据库列表,你可以把它放到一行。 但是我需要一些能够处理数据库添加和删除的东西。
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
可以做到这一点
cd mysql_data_dir ; for d in $(ls -d */ | xargs basename) ; do mysqldump $d > /path/to/dumps/$d.dump; done
基本上列出数据目录中的所有目录,然后转储它们。 如果我没有将任务设置为备份单个文件,我已经完成了上述操作。