2010年10月20日水曜日

mysql + senna インストール

どうも、僕です。

MySQL+sennaで全文検索対応させるためインストールした時にトラブったのでメモ。
あ、原因はわからないままなのですが、、、
環境はKVM上でのCentOS5.5です。(KVMはLDAP認証でそれが怪しいと思っているのですが、、)


まずmecabをインスコ。(今回はmecab-0.98.tar.gz/mecab-ipadic-2.7.9-20070801.tar.gz)
http://sourceforge.net/project/showfiles.php?group_id=177856からmecab(本体)とmecab-ipadic(辞書)を落としてきます。
mecabは
# ./configure --prefix=/usr --with-charset=utf8
でmecab-ipadicは
# ./configure --prefix=/usr --with-charset=utf8
でmake & make install します。

同様にsennaも(今回はsenna-1.1.5.tar.gz)
http://sourceforge.jp/projects/senna/files/からソースを落としてきて
# ./configure --prefix=/usr
でインスコします。

最後にtrittonを(今回はtritonn-1.0.12-mysql-5.0.87.tar.gz)
http://sourceforge.jp/projects/tritonn/releases/からソースGETし
# ./configure  --prefix=/usr/local/mysql --with-charset=sjis --with-extra-charsets=complex --with-mysql-user=mysql --without-bench --enable-assembler --with-mysqld-ldflags=-all-static --without-docs --with-senna --with-mecab CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti"
でインストールしました。

ここから通常のmysqlインストールと同じ作業を行います。
# groupadd mysql
# useradd -d /usr/local/mysql -g mysql mysql
# chown -R mysql:mysql /usr/local/mysql
# /usr/local/mysql/bin/mysql_install_db --user=mysql
ここでコケました。
内容は
   1 101019 20:51:13  mysqld started
2 101019 20:51:13 - mysqld got signal 11 ;
3 This could be because you hit a bug. It is also possible that this binary
4 or one of the libraries it was linked against is corrupt, improperly built,
5 or misconfigured. This error can also be caused by malfunctioning hardware.
6 We will try our best to scrape up some info that will hopefully help diagnose
7 the problem, but since we have already crashed, something is definitely wrong
8 and this may fail.
9
10 key_buffer_size=0
11 read_buffer_size=262144
12 max_used_connections=0
13 max_connections=100
14 threads_connected=0
15 It is possible that mysqld could use up to
16 key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = 76800 K
17 bytes of memory
18 Hope that's ok; if not, decrease some variables in the equation.
19
20 thd=(nil)
21 Attempting backtrace. You can use the following information to find out
22 where mysqld died. If you see no messages after this, something went
23 terribly wrong...
24 Cannot determine thread, fp=0xbf908e38, backtrace may not be correct.
25 Stack range sanity check OK, backtrace follows:
26 0x80eab85
27 0x85fdd5
28 0x854f70
29 0x856cc0
30 0x85e67d0 31 0x85e69b6
32 0x80e9bef
33 0x80ef2f0
34 0x85a2398
35 0x8048131
36 New value of fp=(nil) failed sanity check, terminating stack trace!
37 Please read http://dev.mysql.com/doc/mysql/en/using-stack-trace.html and follow instructions on how to resolve the stack trace. Resolved
38 stack trace is much more helpful in diagnosing the problem, so please do
39 resolve it
40 The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
41 information that should help you find out what is causing the crash.
42
43 This crash occured while the server was calling initgroups(). This is
44 often due to the use of a mysqld that is statically linked against glibc
45 and configured to use LDAP in /etc/nsswitch.conf. You will need to either
46 upgrade to a version of glibc that does not have this problem (2.3.4 or
47 later when used with nscd), disable LDAP in your nsswitch.conf, or use a
48 mysqld that is not statically linked.
49 101019 20:51:13 mysqld ended
といったもの。
/etc/my.cnfを作ってメモリ少なくして実行してもダメ、出力されたログをトレースしても意味不明。「何かがクラッシュしたぜ」としか出てこない。
気になるのは最後の文章
  43 This crash occured while the server was calling initgroups(). This is
44 often due to the use of a mysqld that is statically linked against glibc
45 and configured to use LDAP in /etc/nsswitch.conf. You will need to either
46 upgrade to a version of glibc that does not have this problem (2.3.4 or
47 later when used with nscd), disable LDAP in your nsswitch.conf, or use a
48 mysqld that is not statically linked.
なにやらLDAPを使わないようにしてみたら?的なアドバイスが出る。
ただしサーバ管理者は俺じゃないのであきらめる、、、。



とりあえず解決方法は、mysqlユーザになってやる!です。
# su mysql -
$ /usr/local/mysql/bin/mysql_install_db
これで難なくできちゃいました。
またその後mysqlデーモンをrootで立ち上げようとすると
# service mysql start
Starting MySQL.Manager of pid-file quit without updating file [失敗]
とか出ちゃう。
# /usr/local/mysql/bin/mysqld_safe &
Starting mysqld daemon with databases from /usr/local/mysql/var
STOPPING server from pid file /usr/local/mysql/var/xxxxx.mysql.pid
101020 10:45:20 mysqld ended

[1] +done ./bin/mysqld_safe
となぜか起動しない。
起動スクリプトなど確認したが、そのスクリプトがうまく解読できない、、、。ソース読んでると意味不明の実装がされてたりするし、、

これも
# service mysql start --user=root
または
# /usr/local/mysql/bin/mysqld_safe --user=root &
とやると起動できる。



sennaのバグなのか、KVM上でのOSの問題なのか、LDAP認証の問題なのか引き続き調査しまぁぁぁぁぁす。

0 件のコメント: