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_safe가MySQL을 나중에 업그레이드 할 때 없어지기 때문에, 복사본을 마리 만들어 두어야 한다.
'DB > MySQL' 카테고리의 다른 글
mysql user 생성시 ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value (2) | 2012.01.24 |
---|---|
MySQL 시스템 데이터베이스 및 테이블 구조 이해하기 (0) | 2012.01.19 |
MySQL DB 백업/복구 (0) | 2011.10.19 |
MySQL에서 Create Procedure 설명 (0) | 2010.12.21 |
MySQL에서 Create Procedure (0) | 2010.12.21 |