MySql 數據庫自動備份及數據庫還原

根據網上查找的資料總結,親自測試可用。還原的方法若是有更好的還原留言。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執行成功,沒有錯誤。

相關文章
相關標籤/搜索