Need some further understanding of MariaDB/MySQL on ZFS

Miroslav Lachman 000.fbsd at quip.cz
Wed Nov 23 08:36:10 UTC 2016


Morgan Wesström wrote on 2016/11/22 23:15:

> innodb_data_home_dir = /var/db/mysql/innodb
> innodb_log_group_home_dir = /var/db/mysql/innodb/logs
>
> When I start the server the first time the InnoDB folders are correctly
> populated with some default files like innodb/ibdata1 and
> innodb/logs/ib_logfile0. But as soon as I create a new database (foo)
> with InnoDB tables, the server creates a /var/db/mysql/foo folder and
> populates it with ibd and frm files whereas I would've expected it to
> create it as /var/db/mysql/innodb/foo to inherit the correct 16K
> recordsize.
>
> Is this correct? Shouldn't it be created under /var/db/mysql/innodb?
> Have I missed some vital configuration option?

I don't think it works the way you are expecting.

If you have innodb_file_per_table Off, then all InnoDB / XtraDB tables 
are stored in ib_data file(s) in innodb_data_home_dir = /var/db/mysql/innodb
But some metadata (frm files) are stored in /var/db/mysql/databasename/

If you have innodb_file_per_table On, then all tables data are stored in 
/var/db/mysql/databasename/ and only internal InnoDB data are stored in 
/var/db/mysql/innodb/ib_data

https://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_data_home_dir

The common part of the directory path for all InnoDB data files in the 
*system tablespace*. This setting _does not affect the location of 
file-per-table tablespaces when innodb_file_per_table is enabled_. The 
default value is the MySQL data directory. If you specify the value as 
an empty string, you can use absolute file paths in innodb_data_file_path.

Miroslav Lachman




More information about the freebsd-database mailing list