linux 定时记录mysql主从同步延迟、telnet/ping网络连通情况

linux 定时记录mysql主从同步延迟

#!/bin/bash

# 配置部分
MYSQL_USER="root"
MYSQL_PASS="123456"
MYSQL_HOST="127.0.0.1"
MYSQL_PORT=3306

# 输出目录
OUTPUT_DIR="/path/to/logs"

# 如果目录不存在则创建
mkdir -p "${OUTPUT_DIR}"

# 无限循环,每隔30秒执行一次
while true
do
    # 获取当前时间
    NOW=$(date +"%Y-%m-%d %H:%M:%S")

    # 获取今天的日期,用于生成文件名
    TODAY=$(date +"%Y-%m-%d")

    # 日志文件名
    OUTPUT_FILE="${OUTPUT_DIR}/mysql_delay_log_${TODAY}.txt"

    # 查询Seconds_Behind_Master
    DELAY=$(mysql -u${MYSQL_USER} -p${MYSQL_PASS} -h${MYSQL_HOST} -P${MYSQL_PORT} -e "SHOW SLAVE STATUS\G" 2>/dev/null | grep 'Seconds_Behind_Master' | awk '{print $2}')

    # 如果查询不到,标记为N/A
    if [ -z "$DELAY" ]; then
        DELAY="N/A"
    fi

    # 写入文件
    echo "${NOW}    Seconds_Behind_Master: ${DELAY}" >> "${OUTPUT_FILE}"

    # 等待30秒
    sleep 30
done

telnet/ping网络连通情况

#!/bin/bash

# 配置部分
TELNET_HOST="110.22.33.2"
TELNET_PORT=443

PING_HOST1="www.baidu.com"
PING_HOST2="www.baidu.com"

INTERVAL=30
OUTPUT_DIR="/path/to/logs"

mkdir -p "${OUTPUT_DIR}"

while true
do
    NOW=$(date +"%Y-%m-%d %H:%M:%S")
    TODAY=$(date +"%Y-%m-%d")

    LOG_FILE="${OUTPUT_DIR}/check_log_${TODAY}.log"

    # Telnet检测
    nc -z -w3 ${TELNET_HOST} ${TELNET_PORT} >/dev/null 2>&1
    if [ $? -eq 0 ]; then
        TELNET_STATUS="OK"
    else
        TELNET_STATUS="FAIL"
    fi

    # Ping检测函数
    ping_check() {
        local host=$1
        local result=$(ping -c 1 -W 3 $host 2>/dev/null)
        if [ $? -eq 0 ]; then
            echo "$result" | grep 'rtt min' | awk -F '/' '{print $5" ms"}'
        else
            echo "TIMEOUT"
        fi
    }

    PING1_STATUS=$(ping_check ${PING_HOST1})
    PING2_STATUS=$(ping_check ${PING_HOST2})

    # 写日志
    echo "${NOW} TELNET ${TELNET_HOST}:${TELNET_PORT}=${TELNET_STATUS} PING1 ${PING_HOST1}=${PING1_STATUS} PING2 ${PING_HOST2}=${PING2_STATUS}" >> "${LOG_FILE}"

    # 清理超过3天的日志
    find "${OUTPUT_DIR}" -name "check_log_*.log" -mtime +2 -delete

    sleep ${INTERVAL}
done

如果运行报错:
在这里插入图片描述
原因:Windows(或用 Windows 编辑器)里写的脚本,保存时带了 Windows 的换行符(CRLF),导致脚本的第一行
#!/bin/bash 变成了 #!/bin/bash^M
执行

sed -i 's/\r//' check_mysql_delay.sh

去除 ^M

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我想出去玩-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值