Use this query:
SELECT CEILING(TotalInnoDBBytes*1.6/POWER(1024,3)) RIBPS FROM
(SELECT SUM(datalength+indexlength) TotalInnoDBBytesFROM information_schema.tables WHERE engine='InnoDB') A;
This will give you the RIBPS, Recommended InnoDB Buffer Pool Size based on all InnoDB Data and Indexes with an additional 60%.
SELECT (PagesData*PageSize)/POWER(1024,3) DataGB FROM
(SELECT variable_value PagesDataFROM informationschema.globalstatus
WHERE variablename='Innodbbufferpoolpages_data') A,(SELECT variable_value PageSize
FROM informationschema.globalstatusWHERE variablename='Innodbpage_size') B;
This will give you how many actual GB of memory is in use by InnoDB Data in the InnoDB Buffer Pool at this moment.
This might also be useful:
SELECT engine, count() tables, concat(round(sum(table_rows)/1000000,2),'M') rows, concat(round(sum(data_length)/(102410241024),2),'G') data, concat(round(sum(index_length)/(102410241024),2),'G') idx, concat(round(sum(data_length+index_length)/(10241024*1024),2),'G') totalsize, round(sum(indexlength)/sum(data_length),2) idxfrac
FROM information_schema.TABLES GROUP BY engineORDER BY sum(datalength+indexlength) DESC LIMIT 10;