2011-01-20 59 views
20

我想知道我怎麼可以得到下面的文件,MySQL轉儲所有數據庫並在導入時創建(或重新創建)它們?

mysqldump -h server -u root -p --all-databases > all_dbs.sql 

自動創建尚未創建,導入時的任何數據庫。另外,如果數據庫已經存在,它應該重新創建它(覆蓋舊數據庫)。

這可能嗎?謝謝!

+3

我只是用「的mysql -u

\n Exiting... 

根-p Garrett 2011-01-20 16:10:49

+0

嘿加勒特,請張貼你的答案作爲答案,這樣,其他人有同樣的問題將能夠看到。參見[FAQ](http://stackoverflow.com/faq)。 – fredley 2011-01-20 16:26:17

回答

36
Export: mysqldump -u root -p --all-databases > all_dbs.sql 
Import: mysql -u root -p < all_dbs.sql 
7

出口:

mysqldump -uroot -p --all-databases > alldb.sql 

查找的文檔的mysqldump。您可能需要使用一些在評論中提到的選項:

mysqldump -uroot -p --opt --all-databases > alldb.sql 
mysqldump -uroot -p --all-databases --skip-lock-tables> alldb.sql 

導入:

mysql -u root -p < alldb.sql 

我只是找到了一個新的解決方案:

創建一個bash腳本。它將每個數據庫備份到不同的文件中

#!/bin/bash 

USER="zend" 
PASSWORD="" 
#OUTPUT="/Users/rabino/DBs" 

#rm "$OUTPUTDIR/*gz" > /dev/null 2>&1 

databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database` 

for db in $databases; do 
    if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then 
     echo "Dumping database: $db" 
     mysqldump -u $USER -p$PASSWORD --databases $db > `date +%Y%m%d`.$db.sql 
     # gzip $OUTPUT/`date +%Y%m%d`.$db.sql 
    fi 
done 
1

不使用「mysql」命令導出數據。請改用「mysqldump」。

我來管理,只有保存在服務器:執行 「的MySQL --user =用戶名 - 密碼= passord> somefile.sql」 後