Linux系統下mysql數據庫備份腳本

在中小型企業中我們經常性的需要定時要備份我們的數據庫文件和系統中的一些重要文件,保證在操作系統應硬盤等問題造成不可恢復性災難時,系統能夠儘量的還原用戶數據。

在當今互聯網環境中系統總是主主備份、主從備份等等方式保證系統的穩定性。在這裏我們就說說最原始的數據備份方式吧!

通過linux的shell腳本我們生成數據庫的備份文件,讓後將備份文件通過SCP遠程複製命令將本地備份文件複製到遠程主機中,保證數據的異地備份。

在文件複製到遠程主機時需要遠程的登錄用戶名和密碼,當然也可以通過設置兩臺主機之間的免密登錄,這樣最大的保證了系統密碼的安全性,在這裏我就直接使用密碼明文的方式來實現備份功能。

大概思路爲:

1、生成備份文件、刪除歷史文件

2、將備份文件複製到遠程主機

3、刪除遠程主機歷史文件

#!/bin/bash

########################################################
#備份保存路徑
backup_dir=/root/mysqlbackup
#mysql用戶名
username=root
#mysql密碼
password=TankB214
#mysql將要備份的數據庫
database_name=edoctor
########################################################

#保存備份個數,備份31天數據
number=31
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`

#如果文件夾不存在則創建
if [ ! -d $backup_dir ]; 
then     
    mkdir -p $backup_dir; 
fi

mysqldump -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql

#寫創建備份日誌
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt

#找出需要刪除的備份
find $backup_dir -mtime +$number -type f -name "*.sql" |xargs rm -rf

sleep 5s
#############################################################
#遠程服務器地址
rmtip=172.16.11.202
rmtport=22
rmtuser=root
rmtpwd=XXXXXXXXXXXX
rmtpath=/home/20181025/
#############################################################
#複製文件到遠程服務器
/usr/bin/expect <<EOF
#設置超時時間
#默認是10秒,如果網絡不好等可以設置爲-1
set timeout 10
#複製文件
spawn scp -P $rmtport $backup_dir/$database_name-$dd.sql $rmtuser@$rmtip:$rmtpath
expect "*assword:"
send "$rmtpwd\r"
send "exit\r"
expect eof
EOF

if [ $? = 0 ]; then
    echo "scp $backup_dir/$database_name-$dd.sql success" >> $backup_dir/log.txt
else
    echo "scp $backup_dir/$database_name-$dd.sql failed" >> $backup_dir/log.txt
fi

#遠程服務器保存的天數
baknum=10
/usr/bin/expect <<EOF
#默認是10秒,如果網絡不好等可以設置爲-1
set timeout 10
spawn ssh -p$rmtport $rmtuser@$rmtip
expect "*assword:"
send "$rmtpwd\r"

expect "Last login*"
send "find $rmtpath -mtime +$baknum -type f -name '*.sql' |xargs rm -rf \r"

expect "#"
send "exit\r"

expect eof
EOF

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章