信息发布→ 登录 注册 退出

SQL运维脚本实战_Shell自动化数据库管理

发布时间:2026-01-09

点击量:
SQL运维脚本实战核心是用Shell固化备份、巡检、慢查分析、空间监控等动作,强调自动判断、安全执行与结果反馈;备份脚本含磁盘检查、校验与自动清理;慢查脚本每小时抓取TOP10并归档清空;空间预警脚本监控大表、碎片率及增长异常;巡检脚本5秒内输出多维度健康状态报告。

SQL运维脚本实战,核心是用Shell脚本把重复、易错的数据库管理动作固化下来,比如备份、巡检、慢查分析、空间监控——不是写个SQL就行,关键在“自动判断+安全执行+结果反馈”。

备份脚本:带校验与自动清理

单纯 mysqldump 不够,要防导出失败、磁盘打满、旧备份堆积。脚本里必须包含:

  • 执行前检查磁盘剩余空间(df -h /backup | awk 'NR==2 {print $5}' | sed 's/%//'),低于15%直接退出并告警
  • 导出后用 mysqlcheck --check --databases 或简单 gzip -t 校验压缩包完整性
  • 按日期命名(如 backup_20250615_1423.sql.gz),并用 find /backup -name "*.sql.gz" -mtime +7 -delete 自动清理7天前文件

慢查询自动抓取与归档

不依赖人工登录看 slow_log 表,用脚本每小时扫描一次:

  • 启用 slow_query_log=ON + long_query_time=1,确保日志格式为 log_output='FILE'
  • 脚本调用 mysqldumpslow -s t -t 10 /var/lib/mysql/slow.log 提取TOP10耗时SQL
  • 把结果追加到当日归档文件(如 /opt/dblog/slow_20250615.log),再清空原 slow.log(echo "" > /var/lib/mysql/slow.log)避免日志膨胀

表空间异常预警脚本

专盯大表、碎片率高、增长过快的表,避免半夜收到“磁盘已满”报警:

  • 用 SQL 查询 information_schema.TABLES,筛选 data_length + index_length > 2GDATA_FREE / (DATA_LENGTH + INDEX_LENGTH) > 0.3 的表
  • 对比前一天的 table_rows,对单日增长超20%的表发企业微信/钉钉通知
  • 输出建议语句:ALTER TABLE xxx ENGINE=InnoDB ROW_FORMAT=DYNAMIC;OPTIMIZE TABLE xxx;(加判断,只对非从库执行)

一键巡检脚本(日常上线前必跑)

整合多个健康指标,5秒内给出“绿/黄/红”状态报告:

  • 连接数:Threads_connected 是否接近 max_connections 的85%
  • 复制延迟:Seconds_Behind_Master 是否持续>30秒(主从架构下)
  • 错误日志关键词扫描:grep -i "error\|warning\|aborted" /var/log/mysqld.log | tail -5
  • 最后输出汇总行:✅ 连接正常|✅ 复制同步|✅ 错误日志干净❌ 连接数过高(当前192/200)
标签:# delete  # 过快  # 压缩包  # 过高  # 就行  # 多个  # 连接数  # 清空  # 多维  # 每小时  # 关键词  # 自动化  # 数据库  # table  # mysql  # var  #   # Error  # print  # echo  # 架构  # sql  # shell脚本  # 钉钉  # ai  # 企业微信  # 微信  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!