我想将MySQL服务器上的所有200多个数据库备份到all-dbs.sql

我要排除mysql模式。是吗?

评论

毫无疑问,这是骗子!投票关闭并向用户指出原始答案。

#1 楼

您需要将所有数据库名称收集到一个空格分隔的列表中。将其用于mysqldump

MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
#
# Collect all database names except for
# mysql, information_schema, and performance_schema
#
SQL="SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN"
SQL="${SQL} ('mysql','information_schema','performance_schema')"

DBLISTFILE=/tmp/DatabasesToDump.txt
mysql ${MYSQL_CONN} -ANe"${SQL}" > ${DBLISTFILE}

DBLIST=""
for DB in `cat ${DBLISTFILE}` ; do DBLIST="${DBLIST} ${DB}" ; done

MYSQLDUMP_OPTIONS="--routines --triggers --single-transaction"
mysqldump ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS} --databases ${DBLIST} > all-dbs.sql


尝试一下!!!

评论


仅对于此处阅读与我处于相似位置的任何人-您也可以转储所有内容并从转储文件中手动删除mysql模式,以节省编写/运行脚本的时间

–伦纳德·查利斯(Leonard Challis)
15年7月2日在11:27

“为什么我们应该关心实现一个简单的--ignore-database参数,看看这个小脚本,它就可以了。”

–Gras Double
15年8月28日在4:45



它说mysqldump:未知选项'--ignore-database'不知道为什么,但是当我使用--ignore-table = information_schema。*时,它起作用了。

–侯赛因·贝吉斯(Hussain Behestee)
2015年11月13日在9:38

阅读评论总是很可爱:)))

–伊万·尼科霍夫(Ivan Nikolchov)
16年5月25日在7:01

@TheStoryCoder用英语写,但是编程语言是bash:D

– Denys Vitali
16年6月27日在13:35