前言

对于开发或者运维人员来说,Mysql数据库每张表的数量肯定是要了解下,有助于我们清理无用数据或者了解哪张表比较占用空间。

另外多次统计表的行数,还能发现Mysql表的增量情况,能够预测表未来会有多大的量。

废话不多说,直接带大家写一个简单的Shell小脚本

循环获取数据库名

直接上Shell代码,show databases获取所有的库名。结果有一个我们不想要的,就是Database,这个grep -v掉,轻松获取所有数据库

[root@shijiangeit ~]# mysql -h 127.0.0.1 -uxxx -pxxx -e "show databases;" 2>/dev/null

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| shijiange |

| test |

| wordpress |

+--------------------+

[root@shijiangeit ~]# mysql -h 127.0.0.1 -uxxx -pxxx -e "show databases;" 2>/dev/null |grep -v Database

information_schema

mysql

performance_schema

shijiange

test

wordpress

循环获取所有表

有了库信息,获取所有表就简单了,直接上Shell代码。show tables获取所有表名,其中Tables_in不需要,grep -v掉。

[root@shijiangeit ~]# for onedb in $(mysql -h 127.0.0.1 -uxxx -pxxx -e "show databases;" 2>/dev/null |grep -v Database);do

> echo $onedb

> mysql -h 127.0.0.1 -uxxx -pxxx $onedb -e "show tables" 2>/dev/null

> done

information_schema

+---------------------------------------+

| Tables_in_information_schema |

+---------------------------------------+

| CHARACTER_SETS |

| COLLATIONS |

| COLLATION_CHARACTER_SET_APPLICABILITY |

| COLUMNS |

| COLUMN_PRIVILEGES |

| ENGINES |

| EVENTS |

| FILES |

| GLOBAL_STATUS |

| GLOBAL_VARIABLES |

| KEY_COLUMN_USAGE |

循环统计每张表的行数

取出库名加表名,一个select count(1)统计表的行数,循环统计,直接上Shell代码。

[root@shijiangeit ~]# for onedb in $(mysql -h 127.0.0.1 -uxxx -pxxx -e "show databases;" 2>/dev/null |grep -v Database);do

> for onetab in $(mysql -h 127.0.0.1 -uxxx -pxxx $onedb -e "show tables" 2>/dev/null |grep -v 'Tables_in_');do

> onetablength=$(mysql -h 127.0.0.1 -uxxx -pxxx $onedb -e "select count(1) from $onetab" 2>/dev/null |grep -v 'count')

> echo -e "$onedb.$onetab\t$onetablength"

> done

> done

information_schema.CHARACTER_SETS 40

information_schema.COLLATIONS 219

information_schema.COLLATION_CHARACTER_SET_APPLICABILITY 219

information_schema.COLUMNS 1789

information_schema.COLUMN_PRIVILEGES 0

shijiange.logincount 4

shijiange.member 0

shijiange.user 2097153

test.detect_servers 0

wordpress.wp_commentmeta 0

wordpress.wp_comments 0

wordpress.wp_links 0

wordpress.wp_options 156

变量化,脚本直接用

需要统计哪个Mysql,前面三个变量一改,立马就能统计所有表的大小了。

mysqlhost=127.0.0.1

mysqluser=xxx

mysqlpassword=xxx

for onedb in $(mysql -h $mysqlhost -u$mysqluser -p$mysqlpassword -e "show databases;" 2>/dev/null |grep -v Database);do

for onetab in $(mysql -h $mysqlhost -u$mysqluser -p$mysqlpassword $onedb -e "show tables" 2>/dev/null |grep -v 'Tables_in_');do

onetablength=$(mysql -h $mysqlhost -u$mysqluser -p$mysqlpassword $onedb -e "select count(1) from $onetab" 2>/dev/null |grep -v 'count')

echo -e "$onedb.$onetab\t$onetablength"

done

done

想看哪张表的行数最多?

之前的脚本加个 |sort -nrk 2|less 搞定,超实用的小脚本就这样完成了

[root@shijiangeit ~]# for onedb in $(mysql -h $mysqlhost -u$mysqluser -p$mysqlpassword -e "show databases;" 2>/dev/null |grep -v Database);do

> for onetab in $(mysql -h $mysqlhost -u$mysqluser -p$mysqlpassword $onedb -e "show tables" 2>/dev/null |grep -v 'Tables_in_');do

> onetablength=$(mysql -h $mysqlhost -u$mysqluser -p$mysqlpassword $onedb -e "select count(1) from $onetab" 2>/dev/null |grep -v 'count')

> echo -e "$onedb.$onetab\t$onetablength"

> done

> done | sort -nrk 2

shijiange.user 2097153

information_schema.INNODB_BUFFER_PAGE 8191

performance_schema.events_waits_summary_by_thread_by_event_name 5320

information_schema.INNODB_BUFFER_PAGE_LRU 3453

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持免费资源网。

shell 获取 mysql 行数_一个Shell小脚本精准统计Mysql每张表的行数实现相关推荐

  1. python爬取b站粉丝数_【python爬虫】每天统计一遍up主粉丝数!

    每天统计一遍up主粉丝数! 第一步,爬取up主的粉丝信息 为了方便,这里我把它写成了一个函数 1.首先导入需要的包 requests是必不可少的! import requests as req 想要记 ...

  2. 魔域mysql怎么连接数据库_怪物入包脚本:Navicat for MySQL使用Navi

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 怪物入包脚本: Navicat for MySQL使用Navicat for MySQL连接数据库在 my 数据库中 找到 cq_action ,cq_m ...

  3. 魔域mysql数据库下载_怪物入包脚本:Navicat for MySQL使用Navi

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 怪物入包脚本: Navicat for MySQL使用Navicat for MySQL连接数据库在 my 数据库中 找到 cq_action ,cq_m ...

  4. centos7输入shell找不到命令_反弹shell原理与实现

    什么是反弹shell? 反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端.reverse shell与tel ...

  5. Linux Shell编程(2)——第一个shell程序

    在最简单的情况下,脚本程序不过是存储在一个文件里的系统命令列表.这至少让你执行它 时不必重新按顺序键入相同功能的命令序列. 一个清空/var/log目录下的日志文件的脚本 # Cleanup # 必须 ...

  6. excel转mysql 工具_一个简单的批量excel转mysql工具

    背景:工作中,经常发现需要将excel中的表数据导入到mysql中,实际操作一般都是用navcat,但是使用中也发现navcat只支持单个表导入,对xlsx格式支持不友好.于是写了这么一个导表工具.在 ...

  7. 控制发送的请求条数_一个 HTTP 请求的曲折经历

    关注"逆锋起笔"领取视频教程☞ 程序员进阶必备资源免费送「各种技术!」 ☜ 来源:www.neroht.com/article-detail/18从一个经典的面试题说起,输入URL ...

  8. mysql 用户名 长度_一个 MySQL 用户名长度的坑

    今天使用 PHP 连接一个 MySQL 数据库的时候连不上,提示无权限. 因为 MySQL 是在另外一个机房,首先想到的是防火墙的原因,但使用 MySQL-cli 却能正常连接,遂排除这种可能. 又怀 ...

  9. mysql 消息队列_一个简单的 MySQL 批量事务消息队列

    基于 MySQL 的批量事务消息队列 消息队列本质上是一个存储介质,通常是链表结构,不同的进程或线程可以向消息队列中写入或读取消息.消息队列的使用场景有很多,比如异步处理任务.应用解耦.流量削锋等等. ...

最新文章

  1. pythonurllib模块-Python urllib模块 网络资源访问安装下载
  2. 甲骨文正式发布Java 14(Oracle JDK 14)
  3. 2048游戏C语言代码
  4. 【数据库】PLSQL Developer出现ORA-12541TNS no listener错误解决方法
  5. SAP 电商云 Spartacus UI Quick order 产品搜索结果页面的显示逻辑
  6. python 图片 变清晰_python实现图片变亮或者变暗的方法
  7. thinkphp的增删改查
  8. 关于mysql中select出数据未排序问题
  9. Lottie动画 轻松使用
  10. python数字转换英文26字母_用python实现英文字母和相应序数转换的方法
  11. 【踩坑系列】SpringBoot 项目更换浏览器选项卡的图标
  12. 程序员数学(23)–图形的旋转与中心对称
  13. 投稿状态(status)记录 IEEE wireless communications letters (IEEE WCL)
  14. 您要的FPGA开发软件都在这里
  15. XML shema 约束入门 (2 ) 约束文件加入与说明
  16. 80页4万字政务综合服务平台建设项目方案书(完整版)
  17. html 表情转换器,HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
  18. 正确使用uniapp搭配微信开发者工具自带的骨架屏功能,生成骨架屏
  19. 埋点 神策小程序_神策埋点思路
  20. 编码器-解码器(seq2seq)

热门文章

  1. Heap(堆结构/优先队列)-Swift实现
  2. 实现物体绕不同轴旋转,并可以外部调用的函数
  3. 关于让bootstrap3兼容ie8
  4. 博通的“交钥匙”策略
  5. 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法...
  6. dwz(jui)刷新当前dialog的方法
  7. Spring EL hello world实例
  8. 【转载】OpenCV(C++ 与 Python 的比较)与 MATLAB 的比较
  9. crontab wget命令定时执行thinkphp的控制器实现定时任务
  10. 反思相信谁的评价:一直的坚定的不移的相信自己对自己的评价 相信自己是多么的重要