source src1 { type = mysql sql_host = localhost sql_user = user sql_pass = password sql_db = database sql_port = 3306 sql_sock = /var/run/mysqld/mysqld.sock sql_query_pre = SET NAMES utf8 sql_query_range = SELECT MIN(idx),MAX(idx) FROM test sql_range_step = 1024 sql_query = \ SELECT idx, type, search \ FROM test \ WHERE idx >= $start AND idx <= $end sql_attr_uint = type sql_ranged_throttle = 0 } source src1throttled : src1 { sql_ranged_throttle = 100 } index test1 { source = src1 path = /usr/local/sphinx/var/data/test1 docinfo = extern mlock = 0 morphology = none min_word_len = 1 charset_type = utf-8 charset_table = min_prefix_len = 0 min_infix_len = 2 enable_star = 1 ngram_len = 1 html_strip = 0 } index test1stemmed : test1 { path = /usr/local/sphinx/var/data/test1stemmed morphology = stem_en } index dist1 { type = distributed local = test1 local = test1stemmed agent = localhost:3313:remote1 agent = localhost:3314:remote2,remote3 agent_connect_timeout = 1000 agent_query_timeout = 3000 } indexer { mem_limit = 256M } searchd { address = 127.0.0.1 port = 3312 log = /usr/local/sphinx/var/log/searchd.log query_log = /usr/local/sphinx/var/log/query.log read_timeout = 5 max_children = 2048 pid_file = /usr/local/sphinx/var/log/searchd.pid max_matches = 10000 seamless_rotate = 1 preopen_indexes = 0 unlink_old = 1 }
2007년 12월 30일 일요일
sphinx test
sphinx.conf 파일(한글도 물론 잘된다!)
2007년 12월 23일 일요일
sphinxSE install
오늘 드디어 미뤄 왔던 mysql에 sphinx-engine을 패치해서 소스 컴파일을 하는 작업을 했다.(이놈의 귀차니즘...)
우선 sphinx를 압축해제 후에 mysqlse/sphinx-version.diff 에 맞는 파일을 mysql 소스 디렉토리에 복사한다.
우선 sphinx를 압축해제 후에 mysqlse/sphinx-version.diff 에 맞는 파일을 mysql 소스 디렉토리에 복사한다.
# patch -p1 < sphinx-version.diff # BUILD/autorun.sh # mkdir sql/sphinxsphinx 소스파일을 sql/sphinx로 복사
# CC=gcc # CFLAGS="-O3 -march=i686 -fomit-frame-pointer -pipe -felide-constructors -fno-exceptions -fno-rtti" # CXXFLAGS="-O3 -march=i686 -felide -constructors -fno-execptions -fno-rtti" # CXXLDFLAGS="" # ./configure --prefix=/usr/local/mysql \ --enable-assembler \ --with-extra-charsets=complex \ --enable-thread-safe-client \ --with-big-tables \ --enable-local-infile \ --with-sphinx-storage-engine \ --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock \ --localstatedir=/usr/local/mysql/data \ --with-user=mysql \ --with-charset=utf8 \ --with-extra-charsets=complex \ --with-mysqld-ldflags=-all-static \ --with-client-ldflags=-all-static (--with-plugins=sphinx in 5.1) # make; make install aclocal: configure.in: 486: macro `AM_PROG_AS' not found in library Can't execute aclocal위와같이 build시 에러가 난다면 automake를 1.9이상으로 업데이트하고 (apt-get install automake1.9) 아래와 같이 automake를 변경한다.
update-alternatives --set automake /usr/bin/automake-1.9yacc.sql 관련 에러가 나면 bison package를 설치하면된다. 이 package는 A parser generator that is compatible with Y 요거란다. :) sphinx/ha_sphinx.cc:273: error: extra qualification ‘CSphSEFilter::’ on member ‘CSphSEFilter’ 이 에러는 확인해본결과 0.9.7 버전에 있는 sphinx 64bit 관련된 버그란다. o.9.7 이상을 사용하던가 아니면 patch를 하면된다. (패치는 못찾았다. --; 아니 귀찮아서 안찾았다.) 이제 문제는 현재 서버에는 ubuntu package로 mysql-server가 설치되어있다. 이미 설치되어있는걸 지우지 않고 mysql server를 하나 더 사용할려고 한다. 대충 찾아본 결과 my.cnf만 실행할때 설정해주면 된다고 한다. 우선 기본적으로 행할 것은
# groupadd mysql # useradd -g mysql -d /dev/null -s /usr/sbin/nologin mysql # /usr/local/mysql/bin/mysql_install_db 로 databases를 생성한다. # mkdir /var/run/mysql # mkdir /data/mysql # mkdir /var/log/mysql # chgrp mysql /var/run/mysql # chmod g+rw /var/run/mysql # chgrp mysql /var/log/mysql # chmod g+rw /var/log/mysql # chown -R root . # chown -R mysql /data/mysql # chgrp -R mysql . # chgrp -R mysql /data/mysql # chown -R root /usr/local/mysql # chown -R mysql /usr/local/mysql/data # chgrp -R mysql /usr/local/mysql이번에 sock 디렉토리를 /usr/local/mysql/tmp로 설정했다.
# mkdir /usr/local/mysql/tmp # chown -R mysql.mysql /usr/local/mysql/tmpmy.cnf파일은 /usr/local/mysql/share/mysql/my-large.cnf 를 my.cnf로 복사해서 사용했다. my.cnf에 추가한 사항은
[client] port = 3307 socket = /usr/local/mysql/tmp/mysql.sock [mysqld] user = mysql port = 3307 pid-file = /usr/local/mysql/tmp/mysql.pid socket = /usr/local/mysql/tmp/mysql.sock default-character-set = utf8스크립트 등록
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql라이브러리 등록
echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf && ldconfig정도 추가했다. 기타 에러가 발생할경우 /usr/local/mysql/data/hostname.err파일을 살펴보면 된다. 실행방법은 mysql -hlocalhost -u사용자 -p -P(설정한포트)로 실행 하면된다. 현재 에러 없이 가장 잘되는 버전은 mysql-5.0.22.tar.gz와 sphinx-0.9.8-svn-r985.tar.gz 이버전 두개를 사용했을때 설치가 잘되었다. mysql-5.1 버전을 사용했을때는 innodb engine이 설치가 되지 않았었다. configure할때 옵션을 추가해야 가능하다.
mysql> show engines; +------------+---------+----------------------------------------------------------------+ Engine Support Comment +------------+---------+----------------------------------------------------------------+ MyISAM DEFAULT Default engine as of MySQL 3.23 with great performance MEMORY YES Hash based, stored in memory, useful for temporary tables InnoDB YES Supports transactions, row-level locking, and foreign keys BerkeleyDB NO Supports transactions and page-level locking BLACKHOLE NO /dev/null storage engine (anything you write to it disappears) EXAMPLE NO Example storage engine ARCHIVE NO Archive storage engine CSV NO CSV storage engine SPHINX YES Sphinx storage engine 0.9.8 ndbcluster NO Clustered, fault-tolerant, memory-based tables FEDERATED NO Federated MySQL storage engine MRG_MYISAM YES Collection of identical MyISAM tables ISAM NO Obsolete storage engine +------------+---------+----------------------------------------------------------------+
피드 구독하기:
글 (Atom)