#!/bin/bash
#週日全備,周一到週六增備,每次增備完都將增備應用到全備上
#將可以表示每天週幾的數字定義為乙個變數
zhouji=$(date +"%w")
#因為考慮到萬一在備份的時候資料庫崩掉,所以建兩個備份目錄
if ! ls /backup/perfect &>/dev/null
then
mkdir -p /backup/perfect
fiif ! ls /backup1/perfect &> /dev/null
then
mkdir -p /backup1/perfect
fi#建立乙個檔案,將備份的過程重定向進去
if ! ls /tmp/guocheng &> /dev/null
then
touch /tmp/guocheng
fi#定義乙個函式,為備份成功或失敗之後的操作
caozuo1()
')if [[ $jieguo = "completed ok!" ]]
then
echo "$(date +"%y-%m-%d")日的備份已成功"|mail -s "備份" [email protected]
echo "$(date +"%y-%m-%d")日的備份已成功" >> /tmp/jieguo
else
echo "$(date +"%y-%m-%d")日的備份失敗,請檢視原因"|mail -s "備份" [email protected]
echo "$(date +"%y-%m-%d")日的備份失敗,請檢視原因" >> /tmp/jieguo
exit 10fi}
#定義乙個函式,為應用備份成功或失敗之後的操作
caozuo2()
')if [[ $jieguo = "completed ok!" ]]
then
echo "$(date +"%y-%m-%d")日的備份已應用"|mail -s "應用" [email protected]
echo "$(date +"%y-%m-%d")日的備份已應用" >> /tmp/jieguo
else
echo "$(date +"%y-%m-%d")日的備份應用失敗,請檢視原因"|mail -s "應用" [email protected]
echo "$(date +"%y-%m-%d")日的備份應用失敗,請檢視原因" >> /tmp/jieguo
exit 11fi}
#定義乙個函式,為備份的操作
beifen()
')elif (( $zhouji == 6 ))
then
if (( $(ls /$1/increment/ | wc -l) ==0 ))
then
#在全備的基礎上做增備
innobackupex --incremental --incremental-basedir=/$1/perfect/ --user=root --password=123 /$1/increment/ &> /tmp/guocheng
caozuo1
sleep 2
#將增量的目錄名設定為乙個變數
qidian1=$(ls -l /$1/increment/ | tail -n -1 | awk '')
#在上一次增備的基礎上做增備
innobackupex --incremental --incremental-basedir=/$1/increment/$qidian2/ --user=root --password=123 /$1/increment/ &> /tmp/guocheng
caozuo1
sleep 2
#將本次增量的目錄定義乙個變數
qidian3=$(ls -l /$1/increment/ | tail -n -1 | awk '')
else
if (( $(ls /$1/increment/ | wc -l) ==0 ))
then
#在全備的基礎上做增備
innobackupex --incremental --incremental-basedir=/$1/perfect/ --user=root --password=123 /$1/increment/ &> /tmp/guocheng
caozuo1
sleep 2
#將增量的目錄名設定為乙個變數
qidian1=$(ls -l /$1/increment/ | tail -n -1 | awk '')
#在上一次增備的基礎上做增備
innobackupex --incremental --incremental-basedir=/$1/increment/$qidian2/ --user=root --password=123 /$1/increment/ &> /tmp/guocheng
caozuo1
sleep 2
#將本次增量的目錄定義乙個變數
qidian3=$(ls -l /$1/increment/ | tail -n -1 | awk '')
if (( $(ls /backup/perfect/ | wc -l ) == 0 )) && (( $(ls /backup1/perfect/ | wc -l ) == 0 )) && (( $zhouji != 0 ))
then
#當兩個全備備份目錄都是是空的時候,不管是星期幾,都要進行全備,其他的按照計畫來,這樣就保證了在第一次全備不是星期天的時候也可以進行全備
innobackupex --no-timestamp --user=root --password=123 /backup/perfect &> /tmp/guocheng
caozuo1
elif (( $(ls /backup/perfect/ | wc -l ) == 0 )) && (( $zhouji == 0 ))
then
beifen backup backup1
elif (( $(ls /backup/perfect/ | wc -l ) != 0 )) && (( $zhouji != 0 ))
then
beifen backup backup1
elif (( $(ls /backup1/perfect/ | wc -l ) == 0 )) && (( $zhouji == 0 ))
then
beifen backup1 backup
elif (( $(ls /backup1/perfect/ | wc -l ) != 0 )) && (( $zhouji != 0 ))
then
beifen backup1 backup
else
echo "兩個備份檔案都不是空的,請至少清空乙個"
echo "兩個備份檔案都不是空的,請至少清空乙個" | mail -s "備份檔案" [email protected]
fi[root@server jiaoben]# cat huifu.sh
#!/bin/bash
huifu1()
huifu2()
zhuangtai=$(netstat -tnulp|grep 3306 | awk '' | awk -f'/' '')
mysql_pid=$(netstat -tnulp|grep 3306 | awk '' | awk -f'/' '')
if [[ -z $zhuangtai ]]
then
huifu2
else
kill -9 $mysql_pid
huifu2
fisleep 2
chown -r mysql:mysql /data/
service mysqld start &>> /tmp/guocheng
if netstat -tnulp|grep 3306 &>> /tmp/guocheng
then
echo "重啟成功" >> /tmp/guocheng
else
echo "重啟失敗,請手動恢復資料庫" >> /tmp/guocheng
資料庫恢復
如果有備份,直接從備份恢復即可。否則,借助第三方工具log explorer log explorer 解壓縮密碼 www.heibai.net 序號產生器產生的是註冊碼,是兩個 用解壓縮密碼解開後,壓縮包裡也有乙個序號產生器的 開啟log explorer file attach log file...
資料庫恢復
3.中斷的事務 3.2 undo redo日誌恢復 4.檢查點技術 查詢和更新資料庫時,由於某些問題 故障 發生可能會導致資料庫被破壞或影響資料庫中資料的一致性。資料庫恢復技術將資料庫從錯誤狀態恢復到某個一致狀態,它是資料庫可靠性的保證。事務故障 內部原因 介質故障 物理原因 系統故障 其他原因 存...
資料庫恢復
若選用prod1為catalog目錄庫 sqlplus sys oracle prod1 as sysdba create user catalog identified by oracle grant connect,recovery catalog owner to catalog alter ...