linux 導入 導出mysql命令 數據庫備份 還原 shell腳本
備份、導出數據庫
- 導出整個數據庫
mysqldump -u 用戶名 -p 數據庫名 > 導出的文件名
直接在終端中輸入:
mysqldump -u root -p myblog > /home/blog/myblog.sql
- 導出一個表
mysqldump -u 用戶名 -p 數據庫名 表名> 導出的文件名
mysqldump -u root -p myblog user_table> /home/blog/user_table.sql
導入、還原數據庫
- 方法一:
進入mysql數據庫控制臺,如:
mysql -u root -p
mysql>use myblog;
如果導出的時候設置了字符集,還需要設置一下,這里的字符集根你的將要導入的數據庫的字符集一至:
mysql>set names utf8;
然后使用source命令,導入:
source /home/blog/myblog.sql;
- 方法二:
mysql -u 用戶名 -p 數據庫名 < 數據庫名.sql
直接在終端:
mysql -u root -p myblog < /home/blog/myblog.sql
這種方法的缺點不能設置字符集。
shell backup mysql
#!/bin/sh
sqlPath="$destDir/wordpress.sql"
user="dbuser"
password="dbpassword"
dbname="wordpress"
mysqldump -u$user -p$password $dbname > $sqlPath
echo "backup wordpress.sql to $sqlPath finished"
完整的備份wordpress腳本及說明見Github地址.
附上腳本
完整備份wordpress目錄及mysql腳本:
#!/bin/sh
sourceFolder="/home/www/wordpress"
backDir="/var/backup"
folderName="wordpress$(date +%y%m%d)"
destDir="$backDir/$folderName"
if [ ! -d "$destDir" ]; then
echo "$destDir is not exist"
else
rm -rf $destDir
echo "delete dir: $destDir"
fi
mkdir -p $destDir
if [ ! -f "$backDir/$folderName.tar.gz" ]; then
echo "$folderName.tar.gz is not exist"
else
rm -rf "$backDir/$folderName.tar.gz"
echo "delete $backDir/$folderName.tar.gz"
fi
cp -rf $sourceFolder $destDir
echo "copy blog to $destDir finished"
sqlPath="$destDir/wordpress.sql"
user="dbuser"
password="yourdbpassword"
dbname="wordpress"
mysqldump -u$user -p$password $dbname > $sqlPath
echo "backup wordpress.sql to $sqlPath finished"
cd $backDir
tar -zcf $folderName.tar.gz $folderName
echo "tar $destDir complete"
rm -rf $destDir
echo "delete $destDir"