2009년 7월 18일 토요일

mysqld 부팅순서

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

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

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