前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >DBA自动化神器:Aimalinux定时任务+Crontab实现数据库自动巡检

DBA自动化神器:Aimalinux定时任务+Crontab实现数据库自动巡检

作者头像
IT咸鱼
发布2025-05-20 19:00:32
发布2025-05-20 19:00:32
12200
代码可运行
举报
运行总次数:0
代码可运行

#一、为什么需要自动化巡检?

数据库运维中,每日巡检是保障系统稳定的关键。手动巡检耗时且易遗漏,而通过Crontab定时任务配合Shell脚本,可实现:

  • •定时采集数据库性能指标(如连接数、表空间、慢查询)
  • •自动生成巡检报告并邮件通知
  • •异常状态实时预警 核心工具:Aimalinux系统自带的Crontab服务 + 自定义Shell脚本

#二、Crontab基础:小白必学知识点

#1. 什么是Crontab?

Crontab是Linux系统的定时任务守护进程,可精确到分钟级调度任务。任务配置存储在/var/spool/cron/目录,每个用户独立文件(如root用户的文件为/var/spool/cron/root)。

#2. 时间格式:5个星号的含义

代码语言:javascript
代码运行次数:0
运行
复制
* * * * *  

分 时 日 月 周  

  • 特殊符号
    • *:匹配所有值(如*在“分”字段表示每分钟)
    • ,:指定多个时间点(如0,30表示0分和30分)
    • -:范围(如1-5表示1到5点)
    • /:间隔(如*/10表示每10分钟)

#3. 常用命令(Aimalinux实测)

代码语言:javascript
代码运行次数:0
运行
复制
# 编辑当前用户的定时任务(核心命令)  

crontab -e  



# 查看已配置的任务  

crontab -l  



# 删除所有任务(慎用!)  

crontab -r  



# 指定用户(如为mysql用户配置任务)  

crontab -u mysql -e  

注意:首次使用crontab -e时会提示选择编辑器,建议选nanovim


#三、实战:编写数据库巡检脚本

#1. 创建脚本文件

代码语言:javascript
代码运行次数:0
运行
复制
# 进入运维专用目录  

mkdir -p /opt/dba/scripts  

cd /opt/dba/scripts  



# 创建巡检脚本(以Oracle为例)  

vim db_check.sh  

#2. 脚本内容(逐行解析)

代码语言:javascript
代码运行次数:0
运行
复制
#!/bin/bash  



# 定义日志路径  

LOG_DIR="/opt/dba/logs"

LOG_FILE="$LOG_DIR/db_check_$(date +\%Y\%m\%d).log"



# 1. 检查数据库实例状态  

echo"====== 数据库实例状态 ======" >> $LOG_FILE

sqlplus -S / as sysdba <<EOF  

SELECT instance_name, status, TO_CHAR(startup_time, 'YYYY-MM-DD HH24:MI:SS')  

FROM v\$instance;  

EOF >> $LOG_FILE



# 2. 检查表空间使用率  

echo"====== 表空间使用率 ======" >> $LOG_FILE

sqlplus -S / as sysdba <<EOF  

SELECT tablespace_name,  

       ROUND(used_space/(1024*1024),2) "已用(GB)",  

       ROUND(free_space/(1024*1024),2) "剩余(GB)",  

       ROUND(used_percent,2) "使用率%"  

FROM dba_tablespace_usage_metrics;  

EOF >> $LOG_FILE



# 3. 发送邮件(需配置邮件服务)  

mail -s "每日数据库巡检报告" dba-team@company.com < $LOG_FILE

关键点说明

  • sqlplus -S:静默模式执行SQL
  • •v\instance:需转义符号
  • date +\%Y\%m\%d%在Crontab中需转义

#3. 设置脚本权限

代码语言:javascript
代码运行次数:0
运行
复制
chmod +x db_check.sh  


#四、配置Crontab定时任务

#1. 编辑定时任务

代码语言:javascript
代码运行次数:0
运行
复制
crontab -e  

#2. 添加任务(示例:每天凌晨2点执行)

代码语言:javascript
代码运行次数:0
运行
复制
# 每天2:00执行,日志按日期保存  

0 2 * * * /opt/dba/scripts/db_check.sh >> /opt/dba/logs/cron.log 2>&1  

参数解析

  • 0 2 * * *:每天2:00
  • >> /opt/dba/logs/cron.log:追加输出到日志
  • 2>&1:将错误输出重定向到标准输出

#3. 高级配置技巧

  • 多任务并行
代码语言:javascript
代码运行次数:0
运行
复制
# 每小时检查一次连接数  

0 * * * * /opt/dba/scripts/check_connections.sh  

  • 避开高峰期
代码语言:javascript
代码运行次数:0
运行
复制
# 随机延迟0-300秒执行  

0 3 * * * sleep $((RANDOM\%300)) && /opt/dba/scripts/db_check.sh  


#五、测试与排错指南

#1. 手动执行测试

代码语言:javascript
代码运行次数:0
运行
复制
# 直接运行脚本  

sh /opt/dba/scripts/db_check.sh  



# 查看日志  

tail -f /opt/dba/logs/db_check_20250428.log

#2. 模拟Crontab环境

代码语言:javascript
代码运行次数:0
运行
复制
# 使用env -i清除环境变量  

env -i /bin/bash /opt/dba/scripts/db_check.sh  

注意:Crontab执行环境可能与终端不同,需在脚本中设置ORACLE_HOME等变量。

#3. 查看Crontab日志

代码语言:javascript
代码运行次数:0
运行
复制
tail -f /var/log/cron  

日志示例:

代码语言:javascript
代码运行次数:0
运行
复制
Apr2802:00:01 aimalinux CROND[1234]: (root) CMD (/opt/dba/scripts/db_check.sh)  


#六、常见问题与解决方案

#1. 任务未执行

  • 检查项
    • crond服务是否运行:systemctl status crond
    • •脚本路径是否绝对路径(相对路径会失效)
    • •文件权限:确保脚本和日志目录可执行、可写入

#2. 邮件发送失败

  • 配置邮件服务
代码语言:javascript
代码运行次数:0
运行
复制
# 安装mailx  

yum install mailx -y  



# 编辑配置文件  

vim /etc/mail.rc  

# 添加以下内容  

set from=dba@aimalinux.com  

set smtp=smtp://smtp.company.com  

set smtp-auth-user=dba  

set smtp-auth-password=your_password  

#3. 时间不同步

代码语言:javascript
代码运行次数:0
运行
复制
# 同步时间(安装ntp)  

yum install ntp -y  

systemctl start ntpd  

ntpdate pool.ntp.org  

#七、扩展:巡检脚本的更多可能性

  1. 监控慢查询
代码语言:javascript
代码运行次数:0
运行
复制
SELECT sql_id, executions, elapsed_time  

FROM v\$sql

WHERE elapsed_time >1000000;  
  1. 自动清理历史数据
代码语言:javascript
代码运行次数:0
运行
复制
# 保留30天日志  

find /opt/dba/logs -name "*.log" -mtime +30 -execrm {} \;  

通过Crontab+Shell脚本,DBA可轻松实现自动化巡检。本文从零开始详解每一步操作,助你掌握这一运维利器。如有疑问,欢迎留言交流!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT咸鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • #一、为什么需要自动化巡检?
  • #二、Crontab基础:小白必学知识点
    • #1. 什么是Crontab?
    • #2. 时间格式:5个星号的含义
    • #3. 常用命令(Aimalinux实测)
  • #三、实战:编写数据库巡检脚本
    • #1. 创建脚本文件
    • #2. 脚本内容(逐行解析)
    • #3. 设置脚本权限
  • #四、配置Crontab定时任务
    • #1. 编辑定时任务
    • #2. 添加任务(示例:每天凌晨2点执行)
    • #3. 高级配置技巧
  • #五、测试与排错指南
    • #1. 手动执行测试
    • #2. 模拟Crontab环境
    • #3. 查看Crontab日志
  • #六、常见问题与解决方案
    • #1. 任务未执行
    • #2. 邮件发送失败
    • #3. 时间不同步
  • #七、扩展:巡检脚本的更多可能性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档