Bạn có thể sử dụng --ignore-table quyền mua. Vì vậy, bạn có thể làm
mysqldump -u USERNAME -pPASSWORD DATABASE --ignore-table=DATABASE.table1 > database.sql
Không có khoảng trắng sau -p
(đây không phải là lỗi đánh máy).
Để bỏ qua nhiều bảng, hãy sử dụng tùy chọn này nhiều lần, tùy chọn này được ghi nhận là hoạt động vì ít nhất là phiên bản 5.0 .
Nếu bạn muốn có một cách thay thế để bỏ qua nhiều bảng, bạn có thể sử dụng một tập lệnh như sau:
#!/bin/bash
PASSWORD=XXXXXX
HOST=XXXXXX
USER=XXXXXX
DATABASE=databasename
DB_FILE=dump.sql
EXCLUDED_TABLES=(
table1
table2
table3
table4
tableN
)
IGNORED_TABLES_STRING=''
for TABLE in "${EXCLUDED_TABLES[@]}"
do :
IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${TABLE}"
done
echo "Dump structure"
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} --single-transaction --no-data --routines ${DATABASE} > ${DB_FILE}
echo "Dump content"
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} ${DATABASE} --no-create-info --skip-triggers ${IGNORED_TABLES_STRING} >> ${DB_FILE}