mysqld_safe

DB/MySQL 2012. 1. 18. 23:03

5.4.1. mysqld_safe — MySQL 서버 스타트업 스크립트

mysqld_safe는 유닉스와 NetWare에서 mysqld 서버를 구동 시키는 권장 방법이다.mysqld_safe는 에러가 발생했을 때 서버를 재 구동 시키고 런타임 정보를 에러 로그에 기록하는 것과 같은 안전 기능을 추가로 가지고 있다. NetWare-특성 동작은 이 섹션 후반부에서 다시 하기로 한다.

Note이전 MySQL버전들과의 호환성을 유지하기 위해서, MySQL 바이너리 배포판은 여전히mysqld_safe에 대한 심볼릭 링크로 safe_mysqld를 포함하고 있다하지만이 기능은 향후에 완전히 삭제될 예정이므로 이것에 의존하지 말길 바란다.

디폴트로mysqld_safe는 mysqld-max가 존재하면 이것을 시작하고자 하며그것이 존재하지 않으면 mysqld를 시도한다이러한 동작 구현에 대해서는 잘 숙지해야 한다:

  • 리눅스에서는MySQL-Max RPM은 mysqld_safe의 동작에 의존한다. RPM 은 mysqld-max를 설치하는데이것은 mysqld가 아닌 mysqld_safe를 자동으로 실행 가능하도록 사용한다.
  • 여러분이 mysqld-max 라는 이름의 서버를 포함하고 있는 MySQL-Max 배포판을 설치했고그 다음에 MySQL non-Max으로 업그레이드를 했다면mysqld_safe 는 여전히mysqld-max 서버를 구동 시키려는 시도를 할 것이다만약에 여러분이 이러한 업그레이드를 했다면수동으로 구형 mysqld-max를 삭제해서 mysqld_safe 가 새로운mysqld 서버를 구동 시키게끔 해야 한다.

디폴트 동작을 없애고 여러분이 원하는 서버의 이름을 명확하게 지정하기 위해서는--mysqld 또는 --mysqld-version 옵션을 mysqld_safe에 지정한다또한 –ledir를 사용해서mysqld_safe가 서버를 찾는 디렉토리를 지정하도록 할 수도 있다.

mysqld_safe에 대한 많은 옵션들은 mysqld에 대한 옵션들과 모두 동일하다Section 5.2.1, “mysqld 명령어 옵션을 참조할 것.

명령어 라인에서 mysqld_safe에 지정되는 모든 옵션들은 mysqld에 전달된다만약에mysqld_safe에만 해당되고 mysqld는 지원하지 않는 옵션을 사용하고자 한다면명령어 라인에서 그것들을 지정하지 않으면 된다대신에옵션 파일 그룹의 [mysqld_safe] 안에 그 옵션들을 넣어 둔다Section 4.3.2, “옵션 파일 사용하기를 참조할 것.

mysqld_safe는 옵션 파일에 있는 [mysqld][server], 그리고 [mysqld_safe] 섹션에서 모든 옵션을 읽는다이전 버전과의 호환성을 위해서mysqld_safe는 여러분이 5.0을 설치할 때 [safe_mysqld] 섹션을 [mysqld_safe] 로 재 명명했다고 하더라도 이 섹션도 함께 읽게 된다.

mysqld_safe는 아래의 옵션들을 지원한다:

  • --help

도움말 메시지를 화면에 출력한 다음에 종료한다. ( MySQL 5.0.3에 추가 됨)

  • --autoclose

(NetWare에만 해당됨) NetWare상에서는mysqld_safe는 스크린 존재 (presence)를 제공한다여러분이 mysqld_safe NLM를 셧다운 하면스크린은 디폴트로 사라지지 않는다대신에 사용자 입력용 프롬프트를 보여준다:

*<NLM has terminated; Press any key to close the screen>*

NetWare가 자동으로 스크린을 닫게 하기 위해서는--autoclose옵션을mysqld_safe에 사용한다.

  • --basedir=path

MySQL 설치 디렉토리 경로.                 

  • --core-file-size=size

mysqld가 생성하는 코어 (core) 파일의 크기옵션값은 ulimit –c에 전달 된다.

  • --datadir=path

데이터 디렉토리의 경로.

  • --defaults-extra-file=path

일반적인 옵션 파일과 함께 읽어야 할 옵션 파일의 이름이것이 사용될 경우에는 반드시 명령어 라인 처음에 나와야 한다.

  • --defaults-file=file_name

일반적인 옵션 파일 대신에 읽혀 지는 옵션 파일의 이름만약에 이것을 사용할 경우에는 명령어 라인의 첫 번째 옵션이 되어야 한다.

  • --ledir=path

mysqld_safe가 서버를 찾지 못할 경우이 옵션을 사용하여 서버가 저장되어 있는 디렉토리경로 이름을 가리키도록 한다.

  • --log-error=file_name

에러 로그를 지정한 파일에 기록한다Section 5.12.1, “에러 로그를 참조할 것.

  • --mysqld=prog_name

여러분이 시작하고자 하는 서버 프로그램의 이름 (ledir 디렉토리에 있음). 이 옵션은 여러분이 바이너리 배포판을 사용하고는 있지만 데이터 디렉토리가 바이너리 배포판이 아닌 곳에 있는 경우에 필요하게 된다만약에 mysqld_safe가 서버를 찾지 못할 경우--ledir 옵션을 사용해서 서버가 저장되어 있는 디렉토리 경로 이름을 가리키도록 한다.

  • --mysqld-version=suffix

이 옵션은 --mysqld 옵션과 비슷하지만여러분은 서버 프로그램 이름에 대한 접미사만 지정하면 된다베이스 이름은 mysqld라고 간주한다예를 들면--mysqld-version=max를 사용한다면mysqld_safe는 ledir 디렉토리에 있는 mysqld-max 프로그램을 구동 하기 시작한다--mysqld-version에 대한 인수가 비어 있다면,mysqld_safe는 ledir 디렉토리에 있는 mysqld를 사용한다.

  • --nice=priority

지정한 값에 대한 서버 스케쥴링 우선 순위를 설정하기 위해 nice 프로그램을 사용한다.

  • --no-defaults

어떠한 옵션 파일도 읽지 않는다만약에 이것이 사용될 경우에는 명령어 라인에서 첫 번째 옵션이 되어야 한다.

  • --open-files-limit=count

mysqld가 열 수 있는 파일의 숫자옵션 값은 ulimit –n에 전달 된다이것이 올바르게 동작을 하기 위해서는 root로 mysqld_safe를 구동 시켜야 한다!

  • --pid-file=file_name

프로세스 ID 파일의 경로 이름.

  • --port=port_num

서버가 TCP/IP 연결을 기다릴 때 사용하는 포트 번호포트 번호는 서버가 root시스템 사용자로 구동되지 않는 한 반드시 1024 또는 그 이상 이어야 한다.

  • --socket=path

서버가 로컬 연결을 기다릴 때 사용하는 유닉스 소켓 파일.

  • --timezone=timezone

지정한 옵션 값에 TZ 타임 존 환경 변수를 설정한다올바른 타임 존 지정 포맷에 대해서는 OS 문서를 참고한다.

  • --user={user_name | user_id}

user_name 이름 또는 숫자로 된 사용자 ID user_id를 갖고 있는 사용자로 mysqld서버를 구동 시킨다. (여기에서 사용자 (User)는 시스템 계정을 의미하며그랜트 테이블 안에 있는 MySQL 사용자를 가리키는 것은 아니다.)

옵션 파일에 이름을 주기 위해 --defaults-file 또는 --defaults-extra-option 옵션을 가지고 mysqld_safe를 실행한다면옵션은 반드시 명령어 라인에서 첫번째로 주어져야 한다그렇지 않으면 옵션은 사용되지 않는다예를 들면다음 명령어는 네임드 옵션 파일을 사용하지 않게 된다:

mysql> mysqld_safe --port=port_num --defaults-file=file_name

대신에아래의 명령어를 사용한다:

mysql> mysqld_safe --defaults-file=file_name --port=port_num

일반적인 경우에 mysqld_safe 스크립트는 소스 또는 바이너리 배포판을 설치한 서버를 구동 시키기 위해 작성된다mysqld_safe는 아래의 조건들 중에 하나가 트루 (true)일 것으로 기대한다:

  • 서버와 데이터 베이스는 동작 중인 디렉토리에 관련해서 찾게 된다 (mysqld_safe를 호출한 디렉토리에서). 바이너리 배포판의 경우mysqld_safe는 자신의 동작 디렉토리 밑에서 bin 과 data 디렉토리를 찾는다소스 배포판의 경우libexec 와 var 디렉토리를 찾게 된다만약에 여러분이 MySQL설치 디렉토리에서 mysqld_safe를 실행 시킨다면 이 조건은 일치하게 된다 (예를 들면바이너리 배포판의 경우/usr/local/mysql).
  • 만약에 서버와 데이터 베이스를 동작 중에 있는 디렉토리와 관련해서 찾지 못하게 되면mysqld_safe는 이것들을 절대 경로 이름 (absolute pathname)을 가지고 저장 시키려고 한다전형적인 위치는 /usr/local/libexec 과 /usr/local/var가 된다실제 위치는 배포판이 설치되는 시점에 구성된 값을 가지고 결정된다만약에 MySQL이 서버 구성시에 지정된 위치에 설치되어 있다면 이 조건이 트루 (true)가 된다.

mysqld_safe는 자신의 동작 디렉토리에 관련하여 서버와 데이터 베이스를 찾으려고 시도하기 때문에여러분이 MySQL 설치 디렉토리에서 mysqld_safe를 구동 시키는 한 바이너리 배포판을 어디에도 설치할 수가 있다:

shell> cd mysql_installation_directory
shell> bin/mysqld_safe &

만약에 mysqld_safe가 실패하면비록 MySQL 설치 디렉토리에서 호출을 한 경우라도여러분은 --ledir 와 --datadir 옵션을 지정해서 서버와 데이터 베이스가 저장되어 있는 디렉토리를 가리키도록 할 수 있다.

일반적인 경우에는mysqld_safe 스크립트 수정하지 말도록 한다대신에my.cnf 옵션 파일의 [mysqld_safe] 섹션에 있는 옵션 또는 명령어 라인의 옵션을 사용해서 mysqld_safe를 구성한다드문 경우이긴 하지만mysqld_safe를 직접 편집 해서 서버가 올바르게 구동되도록 해야 할 경우도 있긴 하다하지만이렇게 하게 되면여러분이 수정한 mysqld_safeMySQL을 나중에 업그레이드 할 때 없어지기 때문에복사본을 마리 만들어 두어야 한다.

Posted by linuxism
,