우선 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 +------------+---------+----------------------------------------------------------------+
댓글 없음:
댓글 쓰기