web-dev-qa-db-fra.com

Comment puis-je mysqldump toutes les bases de données à l'exception du schéma mysql?

Je veux sauvegarder les 200+ bases de données sur un serveur MySQL vers all-dbs.sql.

Je souhaite exclure le schéma mysql.

Comment puis je faire ça?

22
haulpd

Vous devez collecter tous les noms de base de données dans une liste délimitée par des espaces. Utilisez cela pour 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

Essayez-le !!!

36
RolandoMySQLDBA