一個Shell小腳本精準統(tǒng)計Mysql每張表的行數(shù)實現(xiàn)
前言
對于開發(fā)或者運維人員來說,Mysql數(shù)據(jù)庫每張表的數(shù)量肯定是要了解下,有助于我們清理無用數(shù)據(jù)或者了解哪張表比較占用空間。
另外多次統(tǒng)計表的行數(shù),還能發(fā)現(xiàn)Mysql表的增量情況,能夠預測表未來會有多大的量。
廢話不多說,直接帶大家寫一個簡單的Shell小腳本
循環(huán)獲取數(shù)據(jù)庫名
直接上Shell代碼,show databases獲取所有的庫名。結(jié)果有一個我們不想要的,就是Database,這個grep -v掉,輕松獲取所有數(shù)據(jù)庫
[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
循環(huán)獲取所有表
有了庫信息,獲取所有表就簡單了,直接上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 |
循環(huán)統(tǒng)計每張表的行數(shù)
取出庫名加表名,一個select count(1)統(tǒng)計表的行數(shù),循環(huán)統(tǒng)計,直接上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
變量化,腳本直接用
需要統(tǒng)計哪個Mysql,前面三個變量一改,立馬就能統(tǒng)計所有表的大小了。
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
想看哪張表的行數(shù)最多?
之前的腳本加個 |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
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- 監(jiān)控MySQL主從狀態(tài)的shell腳本
- shell腳本一鍵安裝MySQL5.7.29的方法
- mysql常用備份命令和shell備份腳本分享
- shell腳本定時備份MySQL數(shù)據(jù)庫數(shù)據(jù)并保留指定時間
- shell腳本自動化創(chuàng)建虛擬機的基本配置之tomcat--mysql--jdk--maven
- shell腳本實現(xiàn)mysql定時備份、刪除、恢復功能
- 通過Shell腳本批量創(chuàng)建服務器上的MySQL數(shù)據(jù)庫賬號
- 使用shell腳本來給mysql加索引的方法
- 干掉一堆mysql數(shù)據(jù)庫,僅需這樣一個shell腳本(推薦)
- 使用shell腳本每天對MySQL多個數(shù)據(jù)庫自動備份的講解
- MySQL Shell的介紹以及安裝
相關文章
shell 通過makefile傳參給c語言的實現(xiàn)示例
本文主要介紹了shell 通過makefile傳參給c語言的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03用shell腳本在mysql表中批量插入數(shù)據(jù)的方法
這篇文章主要介紹了用shell腳本在mysql表中批量插入數(shù)據(jù)的方法,需要的朋友可以參考下2014-03-03shell 腳本中常用的內(nèi)置變量(Bash 內(nèi)置變量)
在 Bash 解釋器中,內(nèi)置了許多變量,這些變量的功能是解釋器自帶的,我們在編寫shell腳本時如果能靈活的使用它們,對腳本的編寫效率以及差錯大有幫助, 下面一一介紹這些變量,一起看看吧2021-05-05Shell腳本實現(xiàn)自動檢測修改最快的Ubuntu軟件源
這篇文章主要介紹了Shell腳本實現(xiàn)自動檢測修改最快的Ubuntu軟件源,本文先是講解了實現(xiàn)的思路,并給了實現(xiàn)腳本源碼,需要的朋友可以參考下2014-10-10