自動備份數據庫並發送附件至郵箱
阿新 • • 發佈:2018-06-14
AR echo 可用性 類型 進行 災難恢復 分離 wifi message
數據庫中數據對一個企業的重要性不用多說. 我公司在數據安全方面的一些做法,以達到拋磚引玉的目的.
1、定期數據備份和更新
定期進行數據備份,可以在數據發生意外損失的情況下進行災難恢復,最大限度地避免損失。並且還要實時通過網絡傳送到備份系統,備份系統則根據日誌對磁盤進行更新。
2、異地備份
遠程數據庫備份:就是在與主數據庫所在生產機相分離的備份機上建立主數據庫的一個拷貝。再次,對於異地數據容災,數據備份不僅僅要求在異地有一份數據拷貝,同時必須保證異地數據的完整性、可用性.
3、建立故障切換機制
公司使用 drbd 等磁盤級別的實時備份, 主從庫數據保持一致, 當主服務器宕機, 從服務器可以接管資源, 繼續對外服務.
下面的筆記就是對數據庫定時備份並以附件的形式發送到郵箱中的腳本.
1、安裝mutt
yum install mutt –y
修改配置信息
vim /root/.muttrc
#如果你想自定義發件人信息,需要進行如下設置
set envelope_from=yes
set realname="liuyishi"
set use_from=yes
set [email protected]
#如果你收到的郵件亂碼,設置以下信息
set charset="utf-8"
set rfc2047_parameters=yes
2、郵件發送
mutt [-hnpRvxz] [-b<地址>][-c<地址>][-f<郵件文件>][-F<配置文件>][-H<郵件草稿>][-i<文件>][-m<類型>] [-s<主題>][郵件地址] [-a<附件>]
mutt發帶附件郵件提示:message file too big
解決辦法:在命令行中設置postfix的message_size_limit的值
postconf -e "message_size_limit=409600000" <== 設置400MB
註:CentOS6以上的版本,附件需添加至命令的最後。
3、郵件接收
接收郵件的郵箱必須設置 [email protected] 為白名單,否則會被郵箱運營商屏蔽。
3.1 編寫自動備份腳本
auto_backup_data.sh腳本如下:
#!/bin/sh
# auto backup mysql data
# liuyishi
# date: 2015-08-15
BACKUP_DIR=/root/databak
Now=$(date +"%Y%m%d")
File=UUWIFI-BAK-$Now.sql
LOGFILE=/root/databak/backup.log
if [ ! -d $BACKUP_DIR ] ;then
mkdir -p $BACKUP_DIR
fi
if [ ! -f $LOGFILE ] ;then
touch $LOGFILE
fi
echo "BACKUP DATE:" $(date +"%Y-%m-%d %H:%M %A") >> $LOGFILE
cd $BACKUP_DIR
mysqldump -uroot -ppassword UUWIFI > $File
if [[ $? == 0 ]]; then
tar czvf ${File}.tgz $File >> $LOGFILE 2>&1
echo "Database Backup Successful!" >> $LOGFILE
echo "MySQL Database" | mutt -s "Database Backup Successful!" [email protected] -a ${BACKUP_DIR}/${File}.tgz >&/dev/null
rm -rf $File
else
echo "Database Backup Fail!" >> $LOGFILE
echo "MySQL Database" | mutt -s "Database Backup Fail!" [email protected]
fi
echo "——————————————————————————————————————————————————" >> $LOGFILE
3.2 編輯定時任務
crontab -e
30 18 * * * /root/databak/auto_backup_data.sh > /dev/null 2>&1
自動備份數據庫並發送附件至郵箱