2010-06-22 73 views

回答

2

您可能想看看下面的文章中提出的shell腳本:由陽光瓦利亞

腳本:

#!/bin/bash 
db=$1 
if [ "$db" = "" ]; then 
echo "Usage: $0 db_name" 
exit 1 
fi 
mkdir $$ 
cd $$ 
clear 
for table in `mysql $db -e 'show tables' | egrep -v 'Tables_in_' `; do 
echo "Dumping $table" 
mysqldump --opt -Q $db $table > $table.sql 
done 
if [ "$table" = "" ]; then 
echo "No tables found in db: $db" 
fi 
+0

感謝的,工作,,, – mabuzer 2010-06-22 06:11:09

0

這裏是一個Linux命令行備份YOURDATABASENAME中的所有表以分隔特定路徑中的文件:

您必須用適當的值替換YOURDATABASENAMEYOURPATH

for I in $(mysql --database=YOURDATABASENAME -e 'show tables' -s --skip-column-names); do mysqldump YOURDATABASENAME $I | gzip > "/YOURPATH/YOURDATABASENAME/$I.sql.gz"; done 

我將此作爲計劃的cron作業來每日備份所有表。

注意:如果您使用的是Linux命令行,則必須將具有全局特權的用戶添加到數據庫的[email protected]而不需要密碼。否則,您將不得不按如下所示向腳本添加用戶和密碼選項,但這需要每個表的密碼!

for I in $(mysql -u MYSQLUSERNAME -p --database=YOURDATABASENAME -e 'show tables' -s --skip-column-names); do mysqldump -u MYSQLUSERNAME -p YOURDATABASENAME $I | gzip > "/YOURPATH/YOURDATABASENAME/$I.sql.gz"; done