zoukankan      html  css  js  c++  java
  • 自动备份数据库并发送附件至邮箱

    38580ced88c34c2dbd80adeb449200b3-db.jpg

    数据库中数据对一个企业的重要性不用多说. 我公司在数据安全方面的一些做法,以达到抛砖引玉的目的.

    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 from=liuyishi@outlook.com
    
    #如果你收到的邮件乱码,设置以下信息
    
    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、邮件接收

    接收邮件的邮箱必须设置 liuyishi@outlook.com 为白名单,否则会被邮箱运营商屏蔽。

    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!" 2990329440@qq.com -a ${BACKUP_DIR}/${File}.tgz >&/dev/null
    
     rm -rf $File
    
      else
    
     echo "Database Backup Fail!" >> $LOGFILE
    
     echo "MySQL Database" | mutt -s "Database Backup Fail!" 2990329440@qq.com
    
    fi
    
    echo "——————————————————————————————————————————————————" >> $LOGFILE
    

    3.2 编辑定时任务

    crontab -e
    
    30 18 * * * /root/databak/auto_backup_data.sh > /dev/null 2>&1
    
  • 相关阅读:
    设计模式
    jQuery回到顶部插件jQuery GoUp
    CentOS7+Tomcat 生产系统部署
    iOS 时间戳转换为时间
    iOS开发系列--Swift 3.0
    IOS
    iOS之宏定义#define
    #define和预编译指令
    iOS宏定义的使用与规范
    ios十进制、十六进制字符串,byte,data等之间的转换
  • 原文地址:https://www.cnblogs.com/liuyishi/p/9180832.html
Copyright © 2011-2022 走看看