資料庫恢復指令碼

2021-10-23 14:20:53 字數 4038 閱讀 2134

#!/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 ...