Trở lại vào ngày 16 tháng 12 năm 2011, tôi đã trả lời câu hỏi Làm thế nào để bạn (các) bảng cụ thể mysqldump?
Tôi đã thu thập tất cả các bảng không bao gồm một tập hợp các tên bảng nhất định.
Sử dụng các nguyên tắc tương tự, bạn có thể đã thu thập tất cả các tên cơ sở dữ liệu từ bảng siêu dữ liệu information_schema.schemata
mà bạn muốn mysqldump'd, tạo một truy vấn để trả về danh sách đó, sau đó sử dụng danh sách cơ sở dữ liệu đó để tạo lệnh 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
Tất cả những gì bạn cần làm là đưa cơ sở dữ liệu mà bạn không muốn mysqldump'd vào DATABASES_TO_EXCLUDE
Hãy thử một lần !!!
information_schema
nó không bị đổ đi.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/vi/mysqldump.html