# 이 글도 언제 완성될지 기약없습니다.. 짬짬이 시간나는대로
수정하도록 하죠..
# mysql 실행 스크립트를 들여다보면서 나름대로 정리한
내용입니다.
mysql 을 이해하는데 있어 시작/종료 루틴을 알아두는 것이 여러모로
쓸모가 있다.
시작/종료 루틴을 이해하고 있으면 각종 오류시 원인을 파악하기가
쉽고 그에따라 대처할 수 있는 방법도 쉽게 생각해낼 수 있다.
mysql 서버를 시작하는 것은 아래와 같은 방법들로 할 수 있다.
1. mysqld 데몬을 직접 실행한다.
2. mysqld_safe 스크립트를 사용한다.
3. mysql.server 스크립트를 사용한다. (내부적으로 mysqld_safe 를
실행한다.)
이중 일반적으로 2 번이나 3번의 방법이 많이 사용된다.
3번의 경우는 보통 서버 부팅시 자동실행 방법으로 많이
사용된다.
시작은 mysqld_safe 스크립트를 통해 이루어진다. (4.0 이전까지는
safe_mysqld 이었으며 4.0 이후 하위호환을 위해 여전히 mysqld_safe 의
심볼릭 링크로 존재한다.)
mysqld_safe 스크립트가 하는
역할은
1. 명령줄 옵션들을 파싱해서 실제 mysqld
서버에게 전달하고 mysqld 를 실행
2. mysqld 가 실행되는동안 계속 감시하고
서버가 다운됐을때 자동으로 재시작.
3. mysqld 에서 콘솔에 뿌려지는 모든
메시지들을 파이프를 통해 에러로그에 기록하는 것
의 세가지 역할을 한다.
mysqld_safe 는 실행시 먼저 옵션파일이 존재하는지 찾은뒤
my_print_defaults 유틸을 통해 옵션파일을 적절한 옵션인자로
만들어낸다. 그리고 명령행 옵션들을 파싱한다. (결과적으로 같은
이름의 명령행 옵션이 옵션파일의 옵션값을 덮어쓰게 되므로 명령행에서
주어진 옵션이 최우선권을 가진다.)
그리고 pid 파일이 존재하는지 찾고 만약 있다면 mysqld 데몬이
실행되고 있는지 체크한다.
이때 실행되고 있는 mysqld 가 있다면 "A mysqld process already
exists" 의 에러메시지를 내고 종료한다.
최종적으로 문제가 없다면 mysqld 데몬을 실행시키고 while 루프를
계속 돌면서 mysql 데몬이 죽으면 다시 실행시킨다. 또한 콘솔에
뿌려지는 메시지들을 파이프를 통해 에러로그에 기록한다.
종료는 mysql.server stop 의 명령으로 이루어진다.
(시작 또한 mysql.server start 명령으로 실행할 수 있으나
내부적으로 mysqld_safe 를 실행하므로 차이가 없다.. )
mysql.server 는 start, stop, restart 의 명령을 줄 수가 있고
restart 는 stop -> start 의 방식으로 동작한다.
서버 시작시 별도 옵션을 줄 필요가 없는 경우는
mysql.server start
mysql.server stop
의 두가지 명령만으로 mysql 서버를 시작,종료시키면 된다.
mysqld_safe 나 mysql.server 는 쉘 스크립트 파일이기 때문에
쉘 프로그래밍을 조금만 공부해 보시면 금방 파악할 수
있습니다.
실제 쿼리를 처리하고 DB 를 기록하는 것은 mysqld 에 의해 모두
이루어집니다.
|