题记部分

一、节点状态监控脚本(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. openEuler欧拉部署Jenkins

    一.系统优化 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 二.安装Jenkins dnf -y install docker ...

  2. RAG实践 - AI 知识库问答功能的建设

    最近在工作中构建了一套自动的基于文档中心为数据集构建知识库 AI 问答的系统,来提升用户体验和技术支持效率,分享一下在实现过程中的技术选型和架构设计. 背景 先说下背景,我们公司的产品 FinClip ...

  3. 我的c语言笔记

    1. 进制转换 二进制.八进制和十六进制向十进制转换都非常容易,就是"按权相加".如:1010.1101 = 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + ...

  4. c# WPF convert photo to Sketch effects

    using the online website https://imagetosketch.com/ <Window x:Class="WpfMosaic.PhotoSketchWi ...

  5. c# Progress<T>

    c# Progress<T> 用于显示进度........主要是利用IProgress<T> 的Report(T)方法: private void BtnDownload_Cl ...

  6. 一点区块链资料-copy

    1. 场景描述 (1)今天找资料,无意中看到15年底-16年初弄的关于区块链的资料,当时写了个交流汇报区块链的ppt,感觉挺好的,共享下,希望能帮助朋友们理解区块链. (2)背景:15年底,老板从朋友 ...

  7. Spring Boot 如何使用拦截器、过滤器、监听器

    过滤器的使用 首先需要实现 Filter接口然后重写它的三个方法 init 方法:在容器中创建当前过滤器的时候自动调用 destory 方法:在容器中销毁当前过滤器的时候自动调用 doFilter 方 ...

  8. 分布式Session解决方案详解

    4种分布式session解决方案 cookie和session的区别和联系 cookie是本地客户端用来存储少量数据信息的,保存在客户端,用户能够很容易的获取,安全性不高,存储的数据量小session ...

  9. Java技术栈总结-提升

    1 java基础: 1.1 算法 1.1 排序算法:直接插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序 1.2 二叉查找树.红黑树.B树.B+树.LSM树(分别有对应 ...

  10. 第三章 (Nginx+Lua)Redis/SSDB安装与使用

    目前对于互联网公司不使用Redis的很少,Redis不仅仅可以作为key-value缓存,而且提供了丰富的数据结果如set.list.map等,可以实现很多复杂的功能:但是Redis本身主要用作内存缓 ...