centos7定時備份mysql傳送郵件

coderliu_cn發表於2024-11-29

前幾天搞伺服器備份發郵件的功能,搞了好長時間都沒調通,想必有很多人和我遇到過一樣的問題,今天分享出來幫大家解決燃眉之急。我不允許還有不會的童鞋出現。

  1. 安裝mailx(郵件服務)

    yum install mailx -y
    
  2. 編輯配置檔案

    vim /etc/mail.rc
    
    
    set from=xxx@qq.com #發信人地址
    set smtp=smtps://smtp.qq.com:465 #qq郵箱伺服器地址
    set smtp-auth-user=xxxx@qq.com #登入qq郵箱的賬號
    set smtp-auth-password=xxx #授權碼,需要從qq郵箱中配置
    set smtp-auth=login
    set ssl-verify=ignore
    set nss-config-dir=/root/.certs #證書地址
    
    
  3. qq郵箱授權碼:登陸後->賬號與安全->安全設定

  4. 證書配置

    mkdir -p /root/.certs
    cd /root/.certs
    echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
    certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
    certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
    certutil -L -d /root/.certs
    certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
    
  5. 測試發郵件

     echo 'hello' |mail -v -s "test" xxx@qq.com
    
  6. mysql匯出指令碼

    mysqldump -u${使用者名稱} -p${密碼} ${庫名} > /xxx/filename.sql
    
  7. 編寫指令碼

    vim /root/mysql_dump_script.sh
    #!/bin/bash
    filename=$(date "+%Y-%m-%d")
    mysqldump -u${使用者名稱} -p${密碼} ${庫名} > /root/backsql/$filename.sql
    cd /root/backsql
    tar czvf $filename.tar.gz $filename.sql
    echo '備份資料庫檔案' |mail -v -s "$filename 資料庫備份" -a  /root/backsql/$filename.tar.gz  xxxx@qq.com
    
  8. 增加許可權

    chmod 777 /root/mysql_dump_script.sh
    
  9. 增加任務

    crontab -e
    0 2 * * * /root/mysql_dump_script.sh #每天2點執行
    

相關文章