题记部分

一、节点状态监控脚本(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 function 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

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

Shell - 脚本案例的更多相关文章

  1. shell脚本案例分享 - 业务系统日志自定义保留或删除需求

    需求说明:  线上某些业务系统的日志不定期产生, 有的每天产生, 有的好几天才产生, 因为系统只有在用的时候才产生日志,日志文件均存放在以当天日期命名的目录下. 当日志目录越来越多时就需要处理, 由此 ...

  2. shell脚本 案例

    1,写一个循环,ping整个子网的ip.   使用while循环 #!/bin/bash  ip=223  while [ "$ip" -ne "239" ] ...

  3. shell脚本案例

    1.MySQL数据库备份脚本,下面的脚本是Mysql全量备份+异地备份 一般Mysql数据库备份会采用在MYSQL从库上执行全量备份+增量备份方式.在从库备份避免Mysql主库备份的时候锁表造成业务影 ...

  4. 非交互式shell脚本案例-实现自主从oracle数据库获取相关数据,并在制定目录生成相应规则的文件脚本

    get_task_id 脚本内容 #!/usr/bin/expect#配置登陆数据库的端口set port 22#配置登陆数据库的ip地址set oracleip 10.0.4.41#配置数据库实例名 ...

  5. 【Shell脚本案例】案例6:查看网卡实时流量

    一.背景 监控,对服务器查看实时流量 了解服务器的数据传输量 二.说明 1.获取网络流量 ifconfig查看网卡就能看到数据包传输情况 2.可以使用工具查看 iftop cat /proc/net/ ...

  6. 【Shell脚本案例】案例5:找出CPU/内存率占用高的进程

    一.背景 找出占用高的进程 使用脚本编写找出占用CPU的进程 二.分析 1.查看进程 top 输入后按C,就可以列出 其他: ps aux 2.思路 awk进行排序,如top10 即ps aux |a ...

  7. 【Shell脚本案例】案例3:批量创建100个用户并设置密码

    一.背景 新入职员工创建用户 二.常规操作 useradd zhangsan ls /home/ password zhangsan 三.考虑问题 1.实现自动输入密码,将其存到文件中 passwor ...

  8. 【Shell脚本案例】案例1:服务器系统配置初始化

    〇.目录 一.背景 新购买10台服务器,并安装Linux系统 目的:对操作系统进行配置的初始化 二.需求 1.设置时区并同步时间 2.禁用selinux安全机制 3.关闭防火墙(清空防火墙的默认策略, ...

  9. 30个关于Shell脚本的经典案例(下)

    本文目录 21.从FTP服务器下载文件 22.连续输入5个100以内的数字,统计和.最小和最大 23.将结果分别赋值给变量 24.批量修改文件名 25.统计当前目录中以.html结尾的文件总大 26. ...

  10. 采用shell脚本定时清理Tomcat日志

    1 Shell脚本案例 删除超过30天的日志文件 #!/bin/bash log_path=/mnt/software/apache-tomcat-.M22/logs d=`date +%Y-%m-% ...

随机推荐

  1. 腾讯云 TStor 私有云存储获统信+海光/兆芯官方认证

    腾讯云 TStor 是一款分布式存储产品,致力于解决私有云.混合云下的各类存储需求.产品紧跟国内信创生态,持续加强自主可控能力.目前,TStor 已经支持国内主流国产操作系统和硬件,如中标麒麟操作系统 ...

  2. git gitignore文件不生效

    配置了 .gitigore 文件不生效,是刚开始将那些过滤的文件加到了版本控制.后续增加的,没有进入到版本控制 解决办法就是从版本控制移除,重新更新下gitignore文件 执行以下命令: 根据情况自 ...

  3. Spirng Data JPA 之Specification中and、or的使用

    项目中,有的地方存值以逗号分隔的方式来存储,但查询的时候是需要满足单个值或者多个值条件查询,因此用到Specification中and.or组合使用,此文用来记录,以防后用. 描述:parentCod ...

  4. iaas,saas,paas,daas区别:

    iaas,saas,paas,daas区别: Iaas(Infrastructure as a server):基础设施即服务,是基础层.PaaS(Platform as a Server):平台即服 ...

  5. 使用P6Spy监控你的Spring boot数据库操作

    引言 最近换了号称最快的HikariDataSource,由于没有了SQL监控,加之于Mybaits默认输出日志之拙计.遂用此物,与之相仿还有log4jdbc,比较活跃度后选择了P6Spy. 版本 P ...

  6. 【转载】 《SpringBoot2.0 实战》系列-集成Quartz定时任务(持久化到数据库)

    https://blog.csdn.net/HXNLYW/article/details/95055601 一.增加依赖 我们使用的spring-boot-starter-quartz,所以不用显示指 ...

  7. jacoco代码覆盖率报告分析

    一.目的 对Jacoco代码覆盖率统计维度.报告字段说明.报告详细分析描述.并为精准测试.健壮性测试提供指导. 二.Jacoco代码覆盖率统计维度 Jacoco是从代码指令(Instructions, ...

  8. P10936 导弹防御塔 题解

    题目链接 题目大意 城堡有 m 个敌人.n 个能发射导弹的防御塔.导弹的速度固定,都为 v.导弹需要 T1 秒发射,T2 分钟冷却,还需要防御塔到敌人距离的 dis/v 的时间.给定防御塔和敌人的坐标 ...

  9. Qt编写可视化大屏电子看板系统32-模块10大屏地图

    一.前言 大屏地图模块采用浏览器模块+echart组件,Qt自带了webkit或者webengine模块,其中在win上mingw编译器的Qt5.6以后的版本,没有了浏览器模块,这个就需要用第三方的浏 ...

  10. [转]E1接口介绍

    E1 通道本来设计用来传输电话的,每个 E1(带宽 2.048M)可以传 30 路电话,后来扩大的应用范围,可以用作传网络,串口等不同的业务:E1 是一个基本的传输单元,其最终还是通过光纤来传输的,如 ...