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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

一、添加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,如需转载请自行联系原作者
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
存储 关系型数据库 MySQL
mysql数据库备份与恢复
MySQL数据库的备份与恢复是确保数据安全性和业务连续性的关键操作。
63 4
|
7天前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
104 68
|
8天前
|
存储 定位技术 数据库
介绍一下数据库的备份和恢复策略
【10月更文挑战第21】介绍一下数据库的备份和恢复策略
|
29天前
|
SQL 关系型数据库 MySQL
|
2月前
|
关系型数据库 MySQL 数据库
Navicat备份数据库
涵盖`Navicat`数据库备份、数据安全及备份策略等主题。文库采用精美主题,提升阅读体验。
32 1
Navicat备份数据库
|
2月前
|
SQL 关系型数据库 MySQL
MySQL数据库中给表添加字段并设置备注的脚本编写
通过上述步骤,你可以在MySQL数据库中给表成功添加新字段并为其设置备注。这样的操作对于保持数据库结构的清晰和最新非常重要,同时也帮助团队成员理解数据模型的变化和字段的具体含义。在实际操作中,记得调整脚本以适应具体的数据库和表名称,以及字段的详细规范。
52 8
|
2月前
|
SQL 数据库 数据安全/隐私保护
如何手动备份数据库?
如何手动备份数据库?
90 1
|
3月前
|
SQL 数据可视化 关系型数据库
成功解决7版本的数据库导入 8版本数据库脚本报错问题
您提供的链接是一篇关于如何解决在MySQL数据库中导入脚本时出现版本兼容性问题的博客文章。文章中提到,如果在MySQL 5.7之前的版本中使用utf8mb4_0900_ai_ci排序规则,会遇到"Unknown collation"错误。解决办法包括升级MySQL版本到8.0或更高,或者更改排序规则为utf8mb4_general_ci或utf8mb4_unicode_ci,并提供了修改SQL脚本的示例。 如果您需要更详细的信息或有其他问题,请告诉我。
|
3月前
|
SQL 数据库
Microsoft SQL Server 2014如何来备份数据库
Microsoft SQL Server 2014如何来备份数据库
289 3
|
3月前
|
关系型数据库 MySQL Shell
MySQL数据库一键安装脚本,适合任何版本
MySQL数据库一键安装脚本,适合任何版本
61 2