mysql 常用运维脚本

监控性能

查看当前连接数和慢查询:

#!/bin/bash
# 查看当前连接数
CONNECTIONS=$(mysql -u root -p'your_password' -e "SHOW STATUS LIKE 'Threads_connected';" | grep Threads_connected | awk '{print $2}')
echo "当前连接数:$CONNECTIONS"

# 查看慢查询
SLOW_QUERIES=$(mysql -u root -p'your_password' -e "SHOW VARIABLES LIKE 'slow_query_log';" | grep slow_query_log | awk '{print $2}')
if [ "$SLOW_QUERIES" == "ON" ]; then
  echo "慢查询已开启,请检查日志!"
else
  echo "慢查询未开启。"
fi

自动化清理

数据库运行久了,难免会产生大量日志和临时数据。定期清理是必不可少的。比如,清理超过7天的二进制日志:

#!/bin/bash
# 清理7天前的二进制日志
mysql -u root -p'your_password' -e "PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);"
echo "已清理7天前的二进制日志。"

用户管理

管理数据库用户权限是运维的常见任务。通过脚本可以批量创建用户或修改权限。比如,创建一个只读用户:
这个脚本可以快速完成用户管理,减少手动操作的繁琐

#!/bin/bash
# 创建只读用户
USER="readonly_user"
PASSWORD="secure_password"
DATABASE="your_database"

mysql -u root -p'your_password' -e "CREATE USER '$USER'@'localhost' IDENTIFIED BY '$PASSWORD';"
mysql -u root -p'your_password' -e "GRANT SELECT ON $DATABASE.* TO '$USER'@'localhost';"
mysql -u root -p'your_password' -e "FLUSH PRIVILEGES;"
echo "只读用户 $USER 创建成功!"

日志分析

MySQL的日志文件包含了大量有价值的信息,但手动分析费时费力。通过脚本可以快速提取关键信息。比如,分析错误日志中的常见问题:

#!/bin/bash
# 分析MySQL错误日志
LOG_FILE="/var/log/mysql/error.log"
ERRORS=$(grep -i "error" $LOG_FILE | wc -l)
echo "错误日志中发现了 $ERRORS 条错误记录。"

表优化

随着数据量的增加,数据库表可能会变得臃肿,影响查询性能。通过脚本可以定期优化表

#!/bin/bash
# 优化所有表
DATABASE="your_database"
TABLES=$(mysql -u root -p'your_password' -e "SHOW TABLES FROM $DATABASE;" | grep -v "Tables_in")

for TABLE in $TABLES; do
  mysql -u root -p'your_password' -e "OPTIMIZE TABLE $DATABASE.$TABLE;"
  echo "优化表 $TABLE 完成!"
done

主从同步监控

在主从复制环境中,监控同步状态非常重要。以下脚本可以检查主从同步是否正常:

#!/bin/bash
# 检查主从同步状态
SLAVE_STATUS=$(mysql -u root -p'your_password' -e "SHOW SLAVE STATUS\G" | grep "Seconds_Behind_Master")

if [ -z "$SLAVE_STATUS" ]; then
  echo "主从同步未启用或配置错误!"
else
  echo "主从同步状态:$SLAVE_STATUS"
fi

死锁检测

死锁是数据库运行中的常见问题,可能导致业务中断。通过脚本可以定期检测并解决死锁

#!/bin/bash
# 检测死锁
DEADLOCKS=$(mysql -u root -p'your_password' -e "SHOW ENGINE INNODB STATUS\G" | grep "LATEST DETECTED DEADLOCK")

if [ -n "$DEADLOCKS" ]; then
  echo "检测到死锁:$DEADLOCKS"
else
  echo "未检测到死锁。"
fi

自动扩容

在高并发场景下,数据库可能需要动态扩容。以下脚本可以根据负载自动调整连接数:

#!/bin/bash
# 动态调整最大连接数
MAX_CONNECTIONS=$(mysql -u root -p'your_password' -e "SHOW VARIABLES LIKE 'max_connections';" | grep max_connections | awk '{print $2}')
CURRENT_CONNECTIONS=$(mysql -u root -p'your_password' -e "SHOW STATUS LIKE 'Threads_connected';" | grep Threads_connected | awk '{print $2}')

if [ $CURRENT_CONNECTIONS -gt $((MAX_CONNECTIONS * 80 / 100)) ]; then
  mysql -u root -p'your_password' -e "SET GLOBAL max_connections = $((MAX_CONNECTIONS + 50));"
  echo "最大连接数已调整为 $((MAX_CONNECTIONS + 50))。"
fi

数据一致性检查

在分布式环境中,数据一致性是一个重要问题。以下脚本可以检查主从数据库的数据是否一致:
这个脚本可以帮助你确保数据的完整性和一致性。

#!/bin/bash
# 检查主从数据一致性
MASTER_DATA=$(mysql -u root -p'your_password' -e "SELECT COUNT(*) FROM your_table;" -h master_host)
SLAVE_DATA=$(mysql -u root -p'your_password' -e "SELECT COUNT(*) FROM your_table;" -h slave_host)

if [ "$MASTER_DATA" == "$SLAVE_DATA" ]; then
  echo "主从数据一致。"
else
  echo "主从数据不一致!"
fi
Linux常用运维脚本是指在Linux系统中,常用的用于自动化运维工作的脚本。这些脚本能够简化运维人员的工作,提高工作效率。 其中常用运维脚本包括: 1. 定时任务脚本:通过cron工具,可以定期执行特定的任务,如备份数据、清理临时文件等。 2. 系统监控脚本:通过脚本监控系统的CPU使用率、内存使用率、磁盘空间等指标,并将监控结果进行汇总和报警。 3. 日志分析脚本:通过脚本分析系统的日志,如Apache、Nginx的访问日志、系统日志等,提取有用的信息,帮助发现问题和优化系统。 4. 安全加固脚本:通过脚本自动化执行一些安全加固措施,如修改默认密码、禁止root远程登录等,提高系统的安全性。 5. 配置管理脚本:通过脚本自动化管理和部署系统的配置文件,如nginx、MySQL的配置文件等,简化配置的操作过程。 6. 系统备份脚本:通过脚本定期备份系统的重要数据和配置文件,保证数据的安全性和系统的可恢复性。 7. 系统部署脚本:通过脚本自动化执行系统的部署过程,如安装系统依赖、配置环境变量等,简化系统部署的流程。 8. 故障自愈脚本:通过脚本自动监测系统的状态,如服务的运行状态、进程的运行情况等,当监测到故障时,自动执行相应的修复措施,提高系统的稳定性。 这些运维脚本的使用能够减少重复劳动,提高运维效率,同时也能够帮助发现和解决系统的问题,保证系统的稳定性和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值