Shell - 脚本案例

题记部分

 

一、节点状态监控脚本(nodeStatusCheck.sh

【脚本名称】nodeStatusCheck.sh

【监控规则】通过ping的方式监控集群节点状态,检查节点是否失联

【实现方式】crontab

【监控频率】*/10 * * * * (每隔十分钟监控一次)

#!/bin/bash

for server in `cat /etc/hosts | grep [主机名前缀] | awk '{print $1}'`
do
    # ping三次自行中断
    ping -c 3 ${server}
    # 如果返回结果不等于0则进行告警
    if [ $? -ne 0 ];then
        echo "`date -R` [WARN] ${server}节点异常" >>./log_nodeStatus_warn.log
        # 也可以在此处调用短信接口,发送短信给运维人员
    fi
done

 

 

二、磁盘使用率监控脚本(nodeDiskPercent.sh

【脚本名称】nodeDiskPercent.sh

【监控规则】通过过滤节点超过阈值的目录的个数,返回主机名以及个数给负责短信告警的脚本使用。

【实现方式】crontab

【监控频率】0 */2 * * * (每隔两小时监控一次)

#!/bin/sh
source /etc/profile


funcation dfCheck(){    
    for server in `cat /etc/hosts | grep [主机名前缀] | awk '{print $2}'`
    do
        result=`ssh ${server} sudo df -h | awk '{print $5}' | sed 's/.$//' | grep -E '[8-9][0-9]|100' | wc -l`;
        echo ${server}:${result}
    done
}

fucation dfReport(){
    dfInfo=dfCheck


}

 

 

三、定时清理内存(缓存)脚本

脚本背景:free -g发现可用内存很少,服务运行异常。

脚本目的:定时清理内存

脚本定时:0 0 * * * sh /home/shell/cleanCache.sh(每天凌晨0点执行一次)

#!/bin/bash

for ip in `cat /etc/hosts | grep node | awk -F ' ' '{print $2}'`
do
    echo $ip
    ssh $ip "sync;free -g;echo 3 > /proc/sys/vm/drop_caches;free -g"
done
date1=`date +"%Y-%m-%d %H:%M:%S"`
echo "Refresh ram cache successfully! ${date1}" >> /root/caches2023.log

sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。将/proc/sys/vm/drop_caches值设为3的作用是清除页缓存、目录项和inode缓存。 这个命令可以释放一些内存,但是需要注意的是,这个命令只会清除缓存,而不会释放物理内存。/proc/sys/vm/drop_caches是一个Linux内核参数,用于控制是否清除缓存。当该参数的值为1时,会清除页缓存、目录项和inode缓存;当该参数的值为0时,不会清除缓存;当该参数的值为2时,会清除页面缓存、目录项和inode缓存。

 

 

四、数据库备份脚本

4.1、mysqlbackup_all_datas.sh

#备份全量脚本 

#---请根据数据库实际参数,修改以下参数 ------- 
MY_user="root"  
MY_pass="123456"  
db_name="harley"  


#1.判断备份路径是否存在,如不存在则创建路径
if [ ! -d "/data" ];then
  mkdir /data
fi 

if [ ! -d "/data/mysql_backup" ];then
  mkdir /data/mysql_backup
fi 

#2.自动删除28天前的备份数据(默认每隔1个星期备份一次)
clear_path="/data/mysql_backup"
find $clear_path -mtime +28 -name "*all_dates*.tar.gz" -exec rm -rf {} \;

#3.定义数据库链接,目标库信息 
MY_conn="-u $MY_user -p$MY_pass" 

#4.定义备份目录,工具,时间,文件名  
BF_dir="/data/mysql_backup"  
time="$(date +"%Y%m%d")"

#5.先导出为.sql脚本
cd $BF_dir
echo  "正进入备份路径,准备备份"
echo  "开始使用mysqldump备份中,请等待"
/data/mysql57/bin/mysqldump  $MY_conn  --databases $db_name > ${db_name}_all_datas_$time.sql
echo  "备份完成,准备压缩,压缩完后会删除源文件"

#6.然后再进行压缩(打包后删除源文件)
/bin/tar zcf ${db_name}_all_datas_$time.tar.gz ${db_name}_all_datas_$time.sql  --remove &> /dev/null

 

4.2、mysqlbackup_basic_data.sh

#备份基础数据脚本 


#---请先修改以下参数 ------- 
MY_user="root"  
MY_pass="123456"  
db_name="harley"  

 
#1.判断备份路径是否存在,如不存在则创建路径
if [ ! -d "/data" ];then
  mkdir /data
fi 

if [ ! -d "/data/mysql_backup" ];then
  mkdir /data/mysql_backup
fi 

#2.自动删除7天前的数据(默认每天备份一次)
clear_path="/data/mysql_backup"
find $clear_path -mtime +7 -name "*basic_date*.tar.gz" -exec rm -rf {} \;

#3.定义数据库链接,目标库信息 
MY_conn="-u $MY_user -p$MY_pass" 

#4.定义备份目录,工具,时间,文件名  
BF_dir="/data/mysql_backup"  
time="$(date +"%Y%m%d")"

#5.先导出为.sql脚本
cd $BF_dir
echo  "正进入备份路径,准备备份"
echo  "开始使用mysqldump备份中,请等待"
/data/mysql57/bin/mysqldump  $MY_conn   $db_name harley_linux  harley_Python   harley_Java > ${db_name}_basic_data_$time.sql                   
echo  "备份完成,准备压缩,压缩完后会删除源文件"

#6.然后再进行压缩(打包后删除源文件)
/bin/tar zcf ${db_name}_basic_data_$time.tar.gz ${db_name}_basic_data_$time.sql  --remove &> /dev/null  

#备份基础库表如下:
#Linux业务表
#harley_linux            linux表    
#harley_Python            Python表
#harley_Java              Java表

 

4.3、clean_mysqlbackup.sh

#清理过期备份数据的脚本 

clear_path="/data/mysql_backup"

find $clear_path -mtime +7 -name "*basic_date*.tar.gz" -exec rm -rf {} \;
find $clear_path -mtime +28 -name "*all_dates*.tar.gz" -exec rm -rf {} \;

 

4.4、定时任务(crontab -e

#这里的意思是每个星期天0:30 执行备份数据库全量的脚本,----这里要输入你放置脚本的路径
30 0 * * 0 /data_back/mysqlbackup_all_dates.sh

#这里的意思是每天02:30 执行备份数据库基础数据的脚本,----这里要输入你放置脚本的路径
30 2 * * * /data_back/mysqlbackup_basic_date.sh

#这里的意思是每天4:00 执行清理过期备份数据的脚本,----这里要输入你放置脚本的路径
0 4 * * * /data_back/clean_mysqlbackup.sh

 

 

 

 

 

 

— 业精于勤荒于嬉,行成于思毁于随 —

posted @ 2023-07-01 00:10  HOUHUILIN  阅读(12)  评论(0编辑  收藏  举报