SELECT table_schema "Data Base Name", sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema ;
El problema surge cuando tenemos una base de datos de la versión 4, ya que en estas versiones MySQL no disponía de Information_schema.
Yo he hecho un pequeño script que parsea la información que proporciona el SHOW TABLE STATUS, de modo que me da un valor aproximado.
El script sería éste:
(lista_basesdatos es una lista con las bases de datos que quiero medir)
#!/bin/bash for i in `cat lista_basesdedatos`; do a=`mysql -u root -D ${i} -e 'show table status\G'|grep Data_l|awk '{print $2}'|(tr '\n' +; echo 0)|bc` b=`mysql -u root -D ${i} -e 'show table status\G'|grep Index_l|awk '{print $2}'|(tr '\n' +; echo 0)|bc` resultado=`echo $a+$b|bc`; echo $i $resultado done