如何 mysqldump 除 mysql 模式之外的所有数据库?

hau*_*lpd 25 mysql mysqldump backup

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

我想排除mysql架构。

我怎样才能做到这一点?

Rol*_*DBA 42

您需要将所有数据库名称收集到一个以空格分隔的列表中。将其用于 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
Run Code Online (Sandbox Code Playgroud)

试一试 !!!

  • 阅读评论总是很可爱:))) (4认同)
  • @TheStoryCoder 它是用英语编写的,但编程语言是 bash :D (3认同)
  • 它说“mysqldump:未知选项'--ignore-database'”不知道为什么,但是当我使用“--ignore-table=information_schema.*”时它起作用了。 (2认同)