禅道及其数据库自动备份及短信、邮件通知脚本

简介:

一、添加SMTP服务器

    bin/mail会默认使用本地sendmail发送邮件,而通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail而用外部的smtp服务器发送邮件的目的。

    在需要发送自动报警的服务器上修改如下文件,增加如下两行

1
2
3
4
# vim /etc/mail.rc
 
set  from=doteyplay@126.com smtp=smtp.126.com
set  smtp-auth-user=doteyplay smtp-auth-password=*** smtp-auth=login
1
2
3
4
5
6
7
使用redhat的时候,在 /etc/mail .rc里改了一下外部smtp的设置,就可以使用外部邮箱发邮件了,但在ubuntu下可能没有 /etc/mail .rc这个文件
buntu上:
ubunut上mailx这个命令对应的deb包有bsd-mailx
bsd-mailx对应的配置文件是 /etc/mail .rc跟centos一样
apt-get  install  sendmail
apt-get  install  mailutils
apt-get  install  bsd-mailx

有时,设置完上面的,当echo一卦邮件时,接收邮箱仍然不能接收到邮件,此时可能并不是服务器上设置有问题,而是被反垃圾邮件给做掉了,如果用126的smtp服务器,发给腾讯和sina,就会出现550的错误(在服务器上mail中查看),腾讯说是群发了大量邮件,即使你新申请一个,依然是这个报错。而sina就很直接了“退信原因:外发IP历史信誉度低”,很有可能是之前测试一些什么太多了,所以导致了这个问题。然而直接发给126的就没有问题。所以,单位测试环境有问题,部到线上的时候不一定有问题

    当然,这里的SMTP服务器也可以使用别的,比如QQ的,但是QQ只能发几卦,在测试的时候,总报错:smtp-server: 454 Error: authentication failed, system busy,万恶的TX啊!所以,后来就改126的SMTP服务器了,用起来还是相当不错的。对于邮箱嘛,就用139邮箱吧,因为有短信提醒,同样,在测试的时候,QQ邮箱那个慢呀……

二、禅道自动备份脚本  

1、自动备份脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
      #vim chandao_backup.sh
 
      #!/bin/bash
      #Auto backup for chandao
      #Date: first write on 2014.7.22
      #Vertion: v1.1
 
      date =` date  +%Y-%m-%d`
      tarball= "tar -jcf /opt/backup/chandao-$date.tar.bz2 chandao/"
      user1=13910892224@139.com
      user2=15048088251@139.com
 
      if  [ ! -d  "/opt/backup/"  ];  then
              mkdir  -p  /opt/backup/
      fi
 
      cd  /var/www/html/  && $tarball
      judge=` echo  $?`
 
      if  [ $judge == 0 ]; then
              echo  "backup is ok"  | mail -s  "Auto backup for chandao"  $user1 $user2;
      else
              echo  "backup is failure"  | mail -s  "Auto backup for chandao"  $user1 $user2;
      fi
 
      find  /opt/backup/  - type  f -mtime +30 -name  "*.bz2"  - exec  rm  -rf {} \;

2、赋予脚本执行权限

1
chmod  +x chandao_backup.sh

2、任务计划自动执行

1
2
  #crontab -e
      0 0 * * *  /bin/sh  /opt/scripts/chandao_backup .sh >  /dev/null  2>&1

三、数据库自动备份脚本

1、自动备份脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
     #vim db_backup.sh
 
      #!/bin/bash
      #Auto backup for mariadb
      #Date: first write on 2014.7.22
      #Vertion: v1.1
 
      date =` date  +%Y-%m-%d`
      datadir= "tar -jcf /opt/backup/datadir-$date.tar.bz2 /data"
      #alldb="mysqldump --all-databases > /opt/backup/alldb-$date.sql"
      #zentaodb="mysqldump --databases zentao > /opt/backup/zentao-$date.sql"
      user1=13910892224@139.com
      user2=15048088251@139.com
 
      if  [ ! -d  "/opt/backup/"  ];  then
              mkdir  -p  /opt/backup/
      fi
 
      mysqldump --all-databases >  /opt/backup/alldb- $ date .sql && mysqldump --databases zentao >  /opt/backup/zentao- $ date .sql
      judge=` echo  $?`
 
      if  [ $judge == 0 ]; then
              cd  /opt/backup/  &&  tar  -jcf ALLDB-$ date . tar .bz2 alldb-$ date .sql zentao-$ date .sql --remove-files
              $datadir;
              judge1=` echo  $?`
              if  [ $judge1 == 0 ]; then
                      echo  "Backup is ok!"  | mail -s  "Auto backup for db"  $user1 $user2;
              else
                      echo  "Db is ok but datadir is failure!"  | mail -s  "Auto backup for db"  $user1 $user2;
              fi
      else
              echo  "Backup is failure,because of db backup is faild!"  | mail -s  "Auto backup for db"  $user1 $user2;
      fi
 
      find  /opt/backup/  - type  f -mtime +30 -name  "*.bz2"  - exec  rm  -rf {} \;

2、赋予脚本执行权限     

1
chmod  +x db_backup.sh

3、任务计划自动执行

1
2
#crontab -e
0 0 * * *  /bin/sh  /opt/scripts/db_backup .sh >  /dev/null  2>&1



四、更新脚本版本:

数据库备份脚本v1.2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash
     #Auto backup for mariadb
     #Date: first write on 2014.7.22
     #Vertion: v1.2
 
     date =` date  +%Y-%m-%d`
     user1=13910892224@139.com
     user2=15048088251@139.com
     main(){
             tar  -jcf  /opt/backup/datadir- $ date . tar .bz2  /data ;
             if  [ $? - eq  0 ]; then
                     /usr/local/mysql/bin/mysqldump  --all-databases >  /opt/backup/alldb- $ date .sql;
                     if  [ $? - eq  0 ]; then
                             sleep  2
                             /usr/local/mysql/bin/mysqldump  --databases zentao >  /opt/backup/zentao- $ date .sql;
                             if  [ $? - eq  0 ]; then
                                cd  /opt/backup/
                                tar  -jcf ALLDB-$ date . tar .bz2 alldb-$ date .sql zentao-$ date .sql --remove-files \
                                &&  echo  "Backup is ok!"  | mail -s  "Auto backup for db"  $user2;
                             else
                                echo  "Zentao db backup failure"  | mail -s  "Auto backup for db"  $user2;
                             fi
                     else
                             echo  "All databases backup failure"  | mail -s  "Auto backup for db"  $user2;
                     fi
             else
                     echo  "Datadir backup failure,it's first step"  | mail -s  "Auto backup for db"  $user2;
             fi
 
             find  /opt/backup/  - type  f -mtime +30 -name  "*.bz2"  - exec  rm  -rf {} \;
     }
 
 
     if  [ ! -d  "/opt/backup/"  ];  then
             mkdir  -p  /opt/backup/ ;
             main;
     else
             main;
     fi









本文转自 nmshuishui 51CTO博客,原文链接:http://blog.51cto.com/nmshuishui/1529829,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
前端开发 数据库
会议室管理系统源码(含数据库脚本)
会议室管理系统源码(含数据库脚本)
315 0
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课5 在线备份
本文介绍了如何在PolarDB RAC一写多读集群中进行在线备份,特别针对共享存储模式。通过使用`polar_basebackup`工具,可以将实例的本地数据和共享数据备份到本地盘中。实验环境依赖于Docker容器中用loop设备模拟的共享存储。
563 1
|
关系型数据库 MySQL Linux
实现MySQL数据库的定时自动备份脚本。
拿走,不谢,这个脚本配方(指引)保证你的数据库数据像蛋糕店一样地天天更新,还能确保老旧的蛋糕(数据)不会堆积满仓库。这下可好,数据安全有保障,数据库管理员也能轻松一点,偶尔闲下来的时候,煮杯咖啡,看个剧岂不美哉?别忘了偶尔检查一下你的自动备份是否正常工作,以防万一蛋糕机器出了点小差错。
1019 20
|
存储 关系型数据库 MySQL
利用Cron表达式实现MySQL数据库的定时备份
以上就是如何使用Cron表达式和mysqldump命令实现MySQL数据库的定时备份。这种方法的优点是简单易用,而且可以根据需要定制备份的时间和频率。但是,它也有一些限制,例如,它不能备份MySQL服务器的配置文件和用户账户信息,也不能实现增量备份。如果需要更复杂的备份策略,可能需要使用专门的备份工具或服务。
488 15
|
Java 数据库
jsp CRM客户管理系统(含数据库脚本以及文档)
jsp CRM客户管理系统(含数据库脚本以及文档)
367 10
|
Java 关系型数据库 MySQL
Java汽车租赁系统源码(含数据库脚本)
Java汽车租赁系统源码(含数据库脚本)
747 4
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
472 68
|
关系型数据库 Shell 网络安全
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
SQL 关系型数据库 数据库连接
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
1072 3

热门文章

最新文章