Search code examples
mysqlinnodb

Innodb; multiple data directories


I have a requirement to store two Innodb database files on separate partitions. (one database on raid0 for speed, the other on raid1 for stability)

From what I've read, the only way to accomplish this is by using innodb_file_per_table and symlinking .ibd and .frm files wherever-they-may-live to the configured mysql storage directory (/var/lib/mysql on my system), where the ibdata1 file must live (for table metadata).

Is this the only way to accomplish the split?

Is there an innodb analog to myisam's TABLE/INDEX DIRECTORY?


Solution

  • I just wrote a blog post on this today: http://www.mysqlperformanceblog.com/2010/12/25/spreading-ibd-files-across-multiple-disks-the-optimization-that-isnt/

    You don't want to do the symlinking thing - and InnoDB does not support DATA DIRECTORY/INDEX DIRECTORY.

    You actually need stability of the data system wide for InnoDB. Let's say -

    • You have critical tables A,B,C.
    • Non-critical tables are D,E,F.
    • If you relocated D,E,F to /mnt/RAID0, and you lost this volume, InnoDB will actually not allow you to access tables A,B,C any more either.
    • Unless it can access all your data, InnoDB will refuse to start.

    If you have two very different data requirements, you need two installs of MySQL ;)