有没有办法转储除系统数据库之外的所有mysql数据库?

有没有办法转储除系统数据库之外的所有mysql数据库?,mysql,backup,dump,Mysql,Backup,Dump,我使用mysqldump自动将所有数据库转储到一个文本文件中,并将此转储保存为备份。我使用--all databases选项转储我的数据库,但它也转储我不需要的系统数据库(information_schema、phpmyadmin等) 有没有一种方法可以使用mysqldump转储所有数据库,而不必在命令行中明确命名它们(这样我就不必每次创建新数据库时都修改备份脚本),而忽略所有系统数据库?您可以编写这样的bash脚本。它在转储数据库之前检查数据库的名称 #!/bin/sh DATABASES="

我使用mysqldump自动将所有数据库转储到一个文本文件中,并将此转储保存为备份。我使用--all databases选项转储我的数据库,但它也转储我不需要的系统数据库(information_schema、phpmyadmin等)


有没有一种方法可以使用mysqldump转储所有数据库,而不必在命令行中明确命名它们(这样我就不必每次创建新数据库时都修改备份脚本),而忽略所有系统数据库?

您可以编写这样的bash脚本。它在转储数据库之前检查数据库的名称

#!/bin/sh
DATABASES="$(/lighttpd/local/bin/mysql --user=user --password=pass -Bse 'show databases')"

for db in ${DATABASES[@]}
do
if [ $db == "information_schema" ]
then
continue
fi
echo ${db}-$(date +%m-%d-%y).sql.bz2 is being saved in /backup/mysql
mysqldump --user=user --password=pass $db --single-transaction -R | bzip2 -c > ${db}-$(date +%m-%d-%y).sql.bz2
done

类似的方法,不包括您不想备份的dbs:

user=''
通过=“”
#使用|作为分隔符
排除_dbs='information_schema | mysql | performance_schema'
mysqldump-u“$user”-p“$pass”-databases$(mysql-u$user-p$pass-rs-e'SHOW databases;'| tail-n+1 | grep-v-e'^(“$exclude_dbs')$”| tr'\n'')>databases.sql

以root用户身份输入并在命令行中键入

for DB in $(mysql -Bse 'show databases' | grep -v information_schema); do \
   mysqldump $DB > "/$DB.sql"; \
done

好的,但这意味着我必须在脚本中手动列出系统数据库。有没有一种方法可以通过编程来判断数据库是由系统还是用户创建的?我不知道。My MySQL db只附带了信息模式和MySQL作为系统数据库。如果您想将所有转储文件重新组合到一个大转储中,您可能希望将每个文件连接到另一个,并在最后连接到bzip。