Em 16 de dezembro de 2011, respondi à pergunta Como você mysqldump tabelas específicas?
Coletei todas as tabelas sem incluir um determinado conjunto de nomes de tabelas.
Usando os mesmos princípios, você pode coletar todos os nomes de banco de dados da tabela de metadados information_schema.schemata
que deseja que o mysqldump'd, criar uma consulta para retornar essa lista e, em seguida, usar essa lista de bancos de dados para formular o comando mysqldump.
DATABASES_TO_EXCLUDE="db1 db2 db3"
EXCLUSION_LIST="'information_schema','mysql'"
for DB in `echo "${DATABASES_TO_EXCLUDE}"`
do
EXCLUSION_LIST="${EXCLUSION_LIST},'${DB}'"
done
SQLSTMT="SELECT schema_name FROM information_schema.schemata"
SQLSTMT="${SQLSTMT} WHERE schema_name NOT IN (${EXCLUSION_LIST})"
MYSQLDUMP_DATABASES="--databases"
for DB in `mysql -ANe"${SQLSTMT}"`
do
MYSQLDUMP_DATABASES="${MYSQLDUMP_DATABASES} ${DB}"
done
MYSQLDUMP_OPTIONS="--routines --triggers"
mysqldump ${MYSQLDUMP_OPTIONS} ${MYSQLDUMP_DATABASES} > MySQLDatabases.sql
Tudo o que você precisa fazer é colocar os bancos de dados nos quais você não deseja que o mysqldump'd DATABASES_TO_EXCLUDE
De uma chance !!!
information_schema
que não está sendo descartado.mysqldump does not dump the INFORMATION_SCHEMA or performance_schema database by default. To dump either of these, name it explicitly on the command line and also use the --skip-lock-tables option. You can also name them with the --databases option. Before MySQL 5.5 mysqldump silently ignores INFORMATION_SCHEMA even if you name it explicitly on the command line.
dev.mysql.com/doc/refman/5.5/en/mysqldump.html