1. 程式人生 > >自動備份數據庫並發送附件至郵箱

自動備份數據庫並發送附件至郵箱

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

自動備份數據庫並發送附件至郵箱