根據網上查找的資料總結,親自測試可用。還原的方法若是有更好的還原留言。mysql
#備份語句:sql
mysqldump -u root -p test01 > yourpath/test01.sql數據庫
#還原語句(解壓,而後把解壓後的.sql還原)bash
tar jxf test20161125110130.tar.bz2
mysql -u root -p[password] test < 20161125110451.sql
測試
1、編輯自動備份腳本:spa
# vi mysqlbak.sh日誌
------------------------------------------------------------------------------------------------crontab
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH
#數據庫用戶名
dbuser='root'
#數據庫用密碼
dbpasswd='數據庫密碼'
#須要備份的數據庫,多個數據庫用空格分開
dbname='test01 test02'
#備份時間
backtime=`date +%Y%m%d%H%M%S`
#日誌備份路徑
logpath='/home/mysqlbak'
#數據備份路徑
datapath='/home/mysqlbak'
#日誌記錄頭部
echo ‘"備份時間爲${backtime},備份數據庫表 ${dbname} 開始" >> ${logpath}/log.log
#正式備份數據庫
for table in $dbname; do
source=`mysqldump -u ${dbuser} -p${dbpasswd} ${table}> ${logpath}/${backtime}.sql` 2>> ${logpath}/mysqllog.log;
#備份成功如下操做
if [ "$?" == 0 ];then
cd $datapath
#爲節約硬盤空間,將數據庫壓縮
tar jcf ${table}${backtime}.tar.bz2 ${backtime}.sql > /dev/null
#刪除原始文件,只留壓縮後文件
rm -f ${datapath}/${backtime}.sql
#刪除七天前備份,也就是隻保存7天內的備份
find $datapath -name "*.tar.bz2" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
echo "數據庫表 ${dbname} 備份成功!!" >> ${logpath}/mysqllog.log
else
#備份失敗則進行如下操做
echo "數據庫表 ${dbname} 備份失敗!!" >> ${logpath}/mysqllog.log
fi
donetable
--------------------------------------------------------------------------------------------------test
2、加權限
chmod +x /home/sh/mysqlbak.sh
3、定時執行腳本
crontab -e
增長:00 00 * * * /bin/bash yourpath/mysqlbak.sh
注:
以上兩個 00 00 *** 爲天天的凌晨自動執行腳本
分 時 日 月 周 命令
M: 分鐘(0-59)。每分鐘用*或者 */1表示
H:小時(0-23)。(0表示0點)
D:天(1-31)。
m: 月(1-12)。
d: 一星期內的天(0~6,0爲星期天)。
另外,測試的時候能夠直接進入sh目錄下執行 # sh sh ./mysqlbak.sh 等執行完了看看 #日誌備份路徑 logpath='/home/mysqlbak' 這個目錄下有沒有備份文件,若是有,則表示sh執行成功,沒有錯誤。