中で!includeしたり、直接オプションを渡したりしたとき。
同じパラメータが指定されている場合は、常に後勝ち(後から設定された方で上書き)です。
Linux系のMySQLでは、
/etc/my.cnf -> /etc/mysql/my.cnf -> SYSCONFDIR/my.cnf -> $MYSQL_HOME/my.cnf -> defaults-extra-fileで指定されたファイル -> $HOME/.my.cnf -> 直接渡したオプション
の順番で読み込まれる。
優先順位で考えると、後勝ちなので後ろが一番強い。
SYSCONFDIRはcmakeのオプションで指定するものの、デフォルトは/usr/local/mysql/etcになっていた(5.6.8-rcのsource)
$MYSQL_HOMEは、mysqld_safeがごにょごにょして/usrに置き換えられる場合が多い(CentOS)
さて、実験。
# cat /etc/my.cnf
[mysqld]
innodb_buffer_pool_size = 200M
# cat /usr/my.cnf #MYSQL_HOME/my.cnf
[mysqld]
innodb_buffer_pool_size = 1G
mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size';
+-------------------------+------------+
| Variable_name | Value |
+-------------------------+------------+
| innodb_buffer_pool_size | 1073741824 |
+-------------------------+------------+
1 row in set (0.00 sec)
⇒後勝ち。
# cat /etc/my.cnf
!include /etc/my2.cnf
[mysqld]
innodb_buffer_pool_size = 200M
# cat /etc/my2.cnf
[mysqld]
innodb_buffer_pool_size = 250M
mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size';
+-------------------------+-----------+
| Variable_name | Value |
+-------------------------+-----------+
| innodb_buffer_pool_size | 209715200 |
+-------------------------+-----------+
1 row in set (0.00 sec)
⇒includeして250Mの値を1行目で得た後、3行目で200Mで上書き。
# cat /etc/my.cnf
[mysqld]
innodb_buffer_pool_size = 200M
!include /etc/my2.cnf
# cat /etc/my2.cnf
[mysqld]
innodb_buffer_pool_size = 250M
[mysqld]
innodb_buffer_pool_size = 200M
!include /etc/my2.cnf
# cat /etc/my2.cnf
[mysqld]
innodb_buffer_pool_size = 250M
mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size';
+-------------------------+-----------+
| Variable_name | Value |
+-------------------------+-----------+
| innodb_buffer_pool_size | 262144000 |
+-------------------------+-----------+
1 row in set (0.00 sec)
⇒200Mの値を3行目でincludeして250Mの値で上書き。
ただし、--defaults-fileを指定すると、そのファイル以外のデフォルトファイルは読まなくなる。
他のデフォルトファイルも読ませたい場合は、--defaults-extra-fileで指定すること。
【2012/11/13 14:08】
本家のリンク貼り忘れた。。
http://dev.mysql.com/doc/refman/5.5/en/option-files.html
【2013/05/30 00:10】
MariaDB 5.5.30のINSTALL_SYSCONFDIRは/etcになってた。
/etc/my.cnf -> /etc/mysql/my.cnf -> /etc/my.cnfの順番に読んだりしないのこれ?(調べてない
【2012/11/13 14:08】
本家のリンク貼り忘れた。。
http://dev.mysql.com/doc/refman/5.5/en/option-files.html
【2013/05/30 00:10】
MariaDB 5.5.30のINSTALL_SYSCONFDIRは/etcになってた。
/etc/my.cnf -> /etc/mysql/my.cnf -> /etc/my.cnfの順番に読んだりしないのこれ?(調べてない
0 件のコメント :
コメントを投稿