Hi!
That ibdata1 isn't shrinking is a particular annoying feature of MySQL which I was struck by. The ibdata1 file can´t actually be shrunk unless you delete all databases, remove the files and reload a dump. But you can configure MySQL so that each table, including its indexes, is stored as a separate file. In that way ibdata1 will not grow as large.
It was a while ago I did this. However, to setup your server to use separate files for each table you need to change my.cnf in order to enable this and you do that by adding:
[mysqld]
innodb_file_per_table=1
http://dev.mysql.com/doc/refman/5.5/en/multiple-tablespaces.html
As you want to reclaim the space from ibdata1 you actually have to delete the file:
- Do a mysqldump of all databases, procedures, triggers etc
- Drop all databases
- Stop mysql
- Delete ibdata1 and ib_log-files
- Start mysql
- Restore from dump
When you start MySQL in step 5 the ibdata1 and ib-log files will be recreated.
Now your fit to go. When you create a new database for analysis, the tables will be located in separate ibd-files, not in ibdata1. As you usually drop the database soon after the ibd files will be deleted.
http://dev.mysql.com/doc/refman/5.1/en/drop-database.html
You have probably seen this:
http://bugs.mysql.com/bug.php?id=1341
Hope this helps!