Unix/Solaris10

MySQL 3 컴파일 - 설치단계

ForceCore 2007. 9. 22. 23:32
$ make install
도 끝났다.
/usr/local/mysql3에 설치가 되었다. 두둥!
이제 installing from source tree문서를 벗어나서 보통 소스에서 설치하듯이

./configure
make
make install

단계를 지난 이후의 일을 처리해주면 된다.
http://dev.mysql.com/doc/refman/4.1/en/quick-install.html

조금 달라져야 하는 부분이, mysql3뿐 아니라, mysql5를 동시에 돌리진 않지만 적당한 단계에서는 둘 중 하나를 임의로 켜는 단계가 필요할 것이므로 my.cnf를 분리해서 써야 한다. 그걸 어떻게 할까나.

/usr/local/mysql3/etc/my.cnf를 만들었다. 물론 etc 디렉토리가 없으니 만들어야 함.

$ cp support-files/my-medium.cnf /usr/local/mysql3/etc/my.cnf
my.cnf를 수정해서 [mysqld]섹션의 datadir= 옵션으로 mysql5와는 구분되는 다른 디렉토리를 database directory로 써야 함.

/usr/local/mysql (mysql5이었던 것)을 mysql5로 mv하고,
소프트링크로 /usr/local/mysql을 만들었다. 이 링크는 mysql5나 3를 가리키게 될 것.
/etc/my.cnf는 /usr/local/mysql/etc/my.cnf를 가리키게 했다.

 make install을 root로서 수행했기 때문에 mysql에게 소유권을 넘겨야 함...
datadir로 지정한 곳은 mysql에게 반드시 넘겨야 한다.

보통 설치라면 이제 db를 initialize할 시간... 이지만, 전 서버에서 옮겨온 db 파일이 있으면 필요 없는 단계.

# bash bin/safe_mysqld --user=mysql &
이러면 잘 실행이... 안 될 수 있다 ㄱ-;; 에러로그나 에러메시지를 잘 보고 하나씩 해결해가야 한다.
에러로그가 안 남아서, 설정을 건드려서 남도록 바꿔야 할 것이다 -0-

[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
위 섹션을 추가하면 로그가 남는다.

버전 따라 다르지만, 필자의 경우에는 별 다른 이유 없이 자꾸 mysql이 시작되지 않고 죽어서
로그를 보니까 nohup은 nice의 옵션이 아니라고 어쩌구저쩌구 써있다.
safe_mysqld 스크립트에 버그가 있던 것이다 ㅠㅠ

해결: safe_mysqld 스크립트의 162행 근처를보면
NOHUP_NICENESS="nohup"
if test -w /
then
  NOHUP_NICENESS=`nohup nice 2>&1`
 if test $? -eq 0 && test x"$NOHUP_NICENESS" != x0 && nice --1 echo foo > /dev/null 2>&1
 then
    NOHUP_NICENESS="nice --$NOHUP_NICENESS nohup"
  else
    NOHUP_NICENESS="nohup"
  fi
fi
이런게 있는데 통째로 코멘트 처리해버린다. 리눅스에서의 버그를 고친답시고 넣은 부분인데 솔라리스에선 필요 없다.

init.d 스크립트를 만들 차례.
/usr/local/mysql/share/mysql
여기를 보면, mysql.server가 있다.
이것을 rc3.d에 적절히 소프트링크.
스크립트로 start와 stop이 잘 된다.
이로서 MySQL3 설치 끝.