檢查使用共用表空間的表 最近接手一臺新的資料庫機器,發現某些庫某些表沒有ibd文件只有frm文件,而ibdata1文件一共有20G+,估計是使用了共用表空間 存放在ibdata1文件里 於是寫了一個腳本,檢查實例下哪些庫哪些表使用了共用表空間,原理是如果有frm文件而沒有ibd文件就認為是使用了共用 ...
檢查使用共用表空間的表
最近接手一臺新的資料庫機器,發現某些庫某些表沒有ibd文件只有frm文件,而ibdata1文件一共有20G+,估計是使用了共用表空間
存放在ibdata1文件里
於是寫了一個腳本,檢查實例下哪些庫哪些表使用了共用表空間,原理是如果有frm文件而沒有ibd文件就認為是使用了共用表空間
#!/bin/bash # Written by steven # Name: checktablesharespace.sh # Version: v1.0 # Function: 檢查使用共用表空間的表結果存放在/tmp/checkresult.txt # Create Date: 2016-08-27 dbs="school Report appeal bak zabbix" #輸入要檢查的資料庫 dbpath="/data/mysql" #輸入實例所在路徑 >/tmp/checkresult.txt #備份 for db in $dbs do cd ${dbpath}${db} echo --------------${db}--------------- >> /tmp/checkresult.txt for i in `ls *.frm` do p=`echo $i|awk -F'.frm' '{print $1}'` if [ ! -s $p.ibd ] then echo $p >> /tmp/checkresult.txt fi done echo >> /tmp/checkresult.txt done
眾所周知,共用表空間的壞處有很多,比如不能使用表空間傳輸,數據壓縮和加密,重整表空間等等
如有不對的地方,歡迎大家拍磚o(∩_∩)o
本文版權歸作者所有,未經作者同意不得轉載。