あれ、MariaDBって{basedir}/etc/my.cnfって読まないのか…?
— ITOH Hiroyukiさん (@i_rethi) 2013年5月29日
…ん? {basedir}/etc/my.cnf、そもそも読んだっけ?
http://dev.mysql.com/doc/refman/5.5/en/option-files.html
ここを読んでも読む気配はなさげ。
そういえば前に調べたな。。
http://yoku0825.blogspot.jp/2012/11/mycnf.html
うーん、{basedir}/etc/my.cnfってのは/usr/local/mysql/etc/my.cnfのことかな?
cmakeするときにデフォルトをいじらなければ、basedirは/usr/local/mysql, sysconfdirは/usr/local/mysql/etcだから結果としては{basedir}/etc/my.cnfになるけど。
MySQL5.6.11の場合/etc/my.cnf /etc/mysql/my.cnf /mnt/s3700/mysql-5.6.11/etc/my.cnf ~/.my.cnf
— ITOH Hiroyukiさん (@i_rethi) 2013年5月29日
でも違いそうだな。。MySQL5.5.30, MariaDB5.5.30とも、mysys/default.cはこんな感じ。
140 - Unix: /etc/順番的には/mnt/s3700/mysql-5.6.11/etcは$MYSQL_HOMEに当たりそうな気がする。
141 - Unix: /etc/mysql/
142 - Unix: --sysconfdir=<path> (compile-time option)
143 - ALL: getenv("MYSQL_HOME")
144 - ALL: --defaults-extra-file=<path> (run-time option)
145 - Unix: ~/
..
1225 errors += add_directory(alloc, "/etc/", dirs);
1226 errors += add_directory(alloc, "/etc/mysql/", dirs);
1227
1228 #if defined(DEFAULT_SYSCONFDIR)
1229 if (DEFAULT_SYSCONFDIR[0])
1230 errors += add_directory(alloc, DEFAULT_SYSCONFDIR, dirs);
1231 #endif /* DEFAULT_SYSCONFDIR */
1232
1233 #endif
1234
1235 if ((env= getenv("MYSQL_HOME")))
1236 errors += add_directory(alloc, env, dirs);
1237
1238 /* Placeholder for --defaults-extra-file=<path> */
1239 errors += add_directory(alloc, "", dirs);
1240
1241 #if !defined(__WIN__)
1242 errors += add_directory(alloc, "~/", dirs);
1243 #endif
$MYSQL_HOMEってmysqld_safeの中であちゃこちゃいじっててよくわかんなくなるんだよな。。
gdbで順番に追ってみる。
まずはMariaDB 5.5.30。
# gdb bin/mysqld .. (gdb) b add_directory Breakpoint 1 at 0xa6bc78: file /home/yoku0825/mariadb-5.5.30/mysys/default.c, line 1117. (gdb) r Starting program: /usr/maria/5.5.30/bin/mysqld .. Breakpoint 1, add_directory (alloc=0x7fffffffe340, dir=0xbff585 "/etc/", dirs=0x19c0458) at /home/yoku0825/mariadb-5.5.30/mysys/default.c:1117 1117 len= normalize_dirname(buf, dir);
まず/etc/を取った。
(gdb) c Continuing. Breakpoint 1, add_directory (alloc=0x7fffffffe340, dir=0xbff58b "/etc/mysql/", dirs=0x19c0458) at /home/yoku0825/mariadb-5.5.30/mysys/default.c:1117 1117 len= normalize_dirname(buf, dir);
次に/etc/mysql/、ここまではハードコードされてる通り。
(gdb) c Breakpoint 1, add_directory (alloc=0x7fffffffe340, dir=0xae3a77 "", dirs=0x19c0458) at /home/yoku0825/mariadb-5.5.30/mysys/default.c:1117 1117 len= normalize_dirname(buf, dir);
あ、sysconfdirとMYSQL_HOME飛ばしてdefaults-extra-fileに行ったぽい。
ああ、MYSQL_HOMEが飛んでるのは多分mysqld_safeを通さずに直接mysqldを叩いてるからか。
(gdb) c Continuing. Breakpoint 1, add_directory (alloc=0x7fffffffe340, dir=0xbff5a2 "~/", dirs=0x19c0458) at /home/yoku0825/mariadb-5.5.30/mysys/default.c:1117 1117 len= normalize_dirname(buf, dir);
でホームディレクトリの.my.cnfを取ると。
(gdb) c Continuing. ..
ここで起動終了。
sysconfdirって定義されてないのね。。
続いてMySQL 5.5.30。
# gdb bin/mysqld .. (gdb) b add_directory Breakpoint 1 at 0x746fa0: file /home/yoku0825/mysql-5.5.30/mysys/default.c, line 1111. (gdb) r Starting program: /usr/mysql/5.5.30/bin/mysqld .. Breakpoint 1, add_directory (alloc=0x7fffffffe2e0, dir=0x9bef03 "/etc/", dirs=0xf68c00) at /home/yoku0825/mysql-5.5.30/mysys/default.c:1111 1111 { (gdb) c Continuing. Breakpoint 1, add_directory (alloc=0x7fffffffe2e0, dir=0x9bef09 "/etc/mysql/", dirs=0xf68c00) at /home/yoku0825/mysql-5.5.30/mysys/default.c:1111 1111 { (gdb) c Continuing. Breakpoint 1, add_directory (alloc=0x7fffffffe2e0, dir=0x9bef15 "/usr/local/mysql/etc", dirs=0xf68c00) at /home/yoku0825/mysql-5.5.30/mysys/default.c:1111 1111 { (gdb) c Continuing. Breakpoint 1, add_directory (alloc=0x7fffffffe2e0, dir=0x90931f "", dirs=0xf68c00) at /home/yoku0825/mysql-5.5.30/mysys/default.c:1111 1111 { (gdb) c Continuing. Breakpoint 1, add_directory (alloc=0x7fffffffe2e0, dir=0x9bef35 "~/", dirs=0xf68c00) at /home/yoku0825/mysql-5.5.30/mysys/default.c:1111 1111 { (gdb) c Continuing.
こっちはsysconfdirが定義されてるぽい。
$ cmake -i mysql-5.5.30/ .. Variable Name: SYSCONFDIR Description: config directory (for my.cnf) Current Value: /usr/local/mysql/etc New Value (Enter to keep current value): .. $ cmake -i mariadb-5.5.30/ ..
やっぱSYSCONFDIRがないね。
いやでもSYSCONFDIRじゃなくてMYSQL_HOMEっぽいんだよな。。
$ diff mysql-5.5.30/scripts/mysqld_safe.sh mariadb-5.5.30/scripts/mysqld_safe.sh ..
ばらばら違い出てくるけど、熱あるしよくわかんない。。
余力があったらまたこんど。。今日はもうだめだ。。
0 件のコメント :
コメントを投稿