【发布时间】:2010-06-01 11:29:07
【问题描述】:
如何使用mysqldump 转储某些以公共前缀开头的表?
【问题讨论】:
如何使用mysqldump 转储某些以公共前缀开头的表?
【问题讨论】:
呵呵,这是一种 hack,但它可以工作(使用 bash):
mysqldump -u USER -p DATABASE $(mysql -u USER -p -D DATABASE -Bse "show tables like 'PREFIX%'") > /tmp/DATABASE.out
根据需要更改 ALLCAPS 单词。
【讨论】:
$(...) 在子进程中运行子命令。您收到的错误消息看起来像mysqldump 已发送所有 参数——甚至高达-D,这可能是因为$(...) 未被识别为指示子命令。也许您没有使用bash?如果是这种情况,您需要将$(...) 转换为您的shell 的正确语法。例如,您可能需要将 $(...) 替换为反引号。
您可以创建 backup.sh 脚本:
BACKUP_DIR="/path/to/backups"
DB_HOST="domain.com"
DB_USER="user"
DB_PASS="pass"
PREFIX="phpbb"
TMP_LIST = mysql --host=$DB_HOST --user=$DB_USER --password=$DB_PASS -e "show databases;" | grep $PREFIX
# just get to database name column (may be $1, don't remember)
TMP_LIST = cat $TMP_LIST | awk '{print $2}'
# Getting dbs
mkdir $BACKUP_DIR/tmp
for db in $TMP_LIST ; do
mysqldump --host=$DB_HOST --user=$DB_USER --password=$DB_PASS --opt $db > $BACKUP_DIR/tmp/$db.sql
zip -mj $BACKUP_DIR/tmp/$db.sql.zip $BACKUP_DIR/tmp/$db.sql 2>&1
done
希望对您有所帮助。
【讨论】: