2009년 7월 18일 토요일

mysqld 부팅순서

기동할 때 설정 문제등으로 MySQL이 정지한 경우 문제해결의 힌트가 될지 모르겠다.

mysqld기동후 클라이언트로부터의 접속대기 상태로 되기까지에는 다음의 처리가 순서대로 이루어진다.

  1. bin_log스레드 작성
  2. 호스트명 해결
  3. my.cnf읽어들이기
  4. 커맨드라인 옵션을 읽어들인다. my.cnf에서 읽어들인 옵션값을 커맨드라인에서 부여한 값으로 overwrite한다.
  5. 각종 변수 초기화
  6. 표준 캐릭터셋 설정. 사용가능한 캐릭터셋 리스트를 얻는다. charsets/Index.xml파일을 읽어들인다.
  7. 시그널 접수 준비
  8. datadir 확인
  9. mysqld실행 계정 체크와 세팅
  10. Query Cache버퍼준비
  11. .err파일 오픈
  12. 각종 로그파일(update-log, bin_log등) 오픈
  13. InnoDB등 각 스토리지엔진 초기화
  14. 네트워크 준비
  15. PID파일 작성
  16. 권한 테이블 읽어들이기
  17. UDF 읽어들이기
  18. STATUS초기화
  19. slave 서버 준비
  20. 만약 --bootstrap옵션이 지정되었다면 표준입력으로부터 SQL문을 읽어들이고 실행하고 종료
  21. 만약 --init-file=옵션이 지정되었다면 지정된 파일을 읽어들이고 query를 실행.
  22. Shutdown 스레드 생성
  23. Maintenance 스레드 생성(mysqladmin커맨드를 위한 스레드)
  24. 서버 기동 메세지를 표준에러나 .err파일에 기록. 서버 버전이나 소켓파일이름, 포트 번호등을 출력
  25. 클라이언트로의 접속대기. Waiting for connections 메세지 출력