How do we determine data_length + index_length as database size in MySQL
This won't be accurate for InnoDB tables. The size on disk is actually bigger than that reported via your query, take a look at :

select * from INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES 


file_size  (which is the logical file size on disk) and 
allocated_size (which is space allocated for this file and can be significantly smaller)
more details here : https://www.percona.com/blog/2016/01/26/finding_mysql_table_size_on_disk/