4.3.2 mysqld_safe - MySQL 서버 시작 스크립트
mysqld_safe는 Unix에서 mysqld 서버를 시작하기 위해 권장되는 방법입니다. mysqld_safe는 오류 발생시 다시 시작하거나 런타임 정보의 오류 로그 파일에 로깅 등 몇 가지 안전 기능을 추가합니다. 에러 로그 내용은이 섹션에서 나중에 설명합니다.
mysqld_safe는 mysqld라는 실행 파일을 시작하려고합니다. 기본 동작을 재정의하고 시작하는 서버의 이름을 명시 적으로 지정하려면 mysqld_safe에 --mysqld
옵션 또는 --mysqld-version
옵션을 지정합니다. --ledir
옵션을 사용하여 mysqld_safe가 서버를 검색 할 디렉토리를 지정할 수도 있습니다.
mysqld_safe의 옵션의 대부분은 mysqld의 옵션과 동일합니다. 섹션 5.1.3 "서버 명령어 옵션" 을 참조하십시오.
mysqld_safe가 이해할 수없는 옵션은 명령 행에 지정된 경우 mysqld에 전달되지만 옵션 파일의 [mysqld_safe]
그룹에 지정된 경우 무시됩니다. 섹션 4.2.6 "옵션 파일 사용" 을 참조하십시오.
mysqld_safe는 옵션 파일의 [mysqld]
[ [server]
, [mysqld_safe]
의 각 섹션에서 모든 옵션을 읽습니다. 예를 들어, [mysqld]
섹션을 다음과 같이 지정하면 mysqld_safe는 --log-error
옵션을 감지하고 사용합니다.
[mysqld] log-error = error.log
하위 호환성을 위해서, mysqld_safe는 [safe_mysqld]
섹션도 읽지 만 [safe_mysqld]
섹션을 [mysqld_safe]
섹션에 이름 변경하는 것을 권장합니다.
mysqld_safe는 다음 옵션을 지원합니다. 또한 옵션 파일을 읽고 섹션 4.2.7 "옵션 파일의 처리에 영향을주는 명령 행 옵션" 에 설명되어 그들을 처리하기위한 옵션도 지원합니다.
표 4.1 mysqld_safe
옵션
형식 | 설명 |
---|---|
--basedir | MySQL 설치 디렉토리 경로 |
--core-file-size | mysqld가 생성 할 수 있어야 코어 파일의 크기 |
--datadir | 데이터 디렉토리 경로 |
--defaults-extra-file | 일반 옵션 파일 이외에 옵션 파일을 읽을 |
--defaults-file | 지명 된 옵션 파일 만 읽을 |
--help | 도움말 메시지를 표시하고 종료 |
--ledir | 서버가 놓여져있는 디렉토리 경로 |
--log-error | 지정된 파일에 오류 로그를 기록 |
--malloc-lib | mysqld에서 사용하는 대체 malloc 라이브러리 |
--mysqld | 시작하는 서버 프로그램 이름 (ledir 디렉토리) |
--mysqld-version | 서버 프로그램 이름 접미사 |
--nice | 서버의 예약 우선 순위를 설정하기 위해 nice 프로그램을 사용 |
--no-defaults | 옵션 파일을 읽지 |
--open-files-limit | mysqld가 열 수있는 파일 수 |
--pid-file | 프로세스 ID 파일의 경로 이름 |
--plugin-dir | 플러그인이 설치되어있는 디렉토리 |
--port | TCP / IP 연결을 수신하는 포트 번호 |
--skip-kill-mysqld | 미아 mysqld 프로세스 kill을 시도하지 |
--skip-syslog | syslog에 오류 메시지를 기록하고 오류 로그 파일을 사용 |
--socket | Unix 소켓 접속을 대기하는 소켓 파일 |
--syslog | syslog에 오류 메시지를 기록 |
--syslog-tag | syslog에 기록 된 메시지의 타구사휘쿠스 |
--timezone | TZ 시간대 환경 변수를 지정된 값으로 설정 |
--user | mysqld를 이름이 user_name 또는 숫자 사용자 ID가 user_id 인 사용자로 실행 |
--help
도움말 메시지를 표시하고 종료합니다.
--basedir=
path
MySQL 설치 디렉토리 경로.
--core-file-size=
size
mysqld에서 만들 수 있어야 코어 파일의 크기. 이 옵션 값은 ulimit -c에 전달됩니다.
--datadir=
path
데이터 디렉토리 경로.
--defaults-extra-file=
path
일반 옵션 파일 이외에 읽는 옵션 파일의 이름. 이를 사용하려면 명령 행의 첫 번째 옵션이어야합니다. 파일이 존재하지 않거나 다른 이유로 액세스 할 수없는 경우 서버 오류로 종료합니다.
--defaults-file=
file_name
일반적인 옵션 파일 대신 읽은 옵션 파일의 이름. 이를 사용하려면 명령 행의 첫 번째 옵션이어야합니다.
--ledir=
path
mysqld_safe가 서버를 찾을 수없는 경우이 옵션을 사용하여 서버가 놓여져있는 디렉토리의 경로 이름을 나타냅니다.
--log-error=
file_name
지정된 파일에 오류 로그를 기록합니다. 섹션 5.2.2 "오류 로그" 를 참조하십시오.
--malloc-lib=[
lib_name
]시스템의
malloc()
라이브러리 대신에 메모리 할당에 사용되는 라이브러리의 이름. 경로 이름을 지정하여 임의의 라이브러리를 사용할 수 있지만, MySQL 5.6에서는 Linux 용 바이너리 MySQL 배포판에 포함 된tcmalloc
라이브러리를 사용할 수 있도록하기위한 바로 가기 형식이 있습니다. 특정 구성에서는 바로 가기 형식이 작동하지 않을 수 있습니다. 이 경우 대신 경로 이름을 지정하도록하십시오.--malloc-lib
옵션은 mysqld가 시작할 때 동적 링크에 영향을주지 로더가 메모리 할당 라이브러리를 검색 할 수 있도록LD_PRELOAD
환경 값을 변경합니다.이 옵션이 지정되지 않거나 값없이 지정된 경우 (
--malloc-lib=
)LD_PRELOAD
는 변경되지 않고tcmalloc
을 사용하는 시도는하지 않습니다.옵션이
--malloc-lib=tcmalloc
과 지정된 경우 mysqld_safe는tcmalloc
라이브러리를/usr/lib
에서 검색 한 다음 MySQLpkglibdir
장소 (예를 들어,/usr/local/mysql/lib
또는 적절한 것 )에서 검색합니다.tmalloc
가 발견 된 경우 해당 경로가LD_PRELOAD
값 앞에 추가되어 mysqld에 전달됩니다.tcmalloc
을 찾을 수없는 경우, mysqld_safe는 에러로 중지됩니다.옵션이
--malloc-lib=
과 지정된 경우 전체 경로가/path/to/some/library
LD_PRELOAD
값 앞에 추가됩니다. 그 경로가 존재하지 않거나 읽을 수없는 파일을 가리키는 경우, mysqld_safe는 에러로 중지됩니다.mysqld_safe가 경로 이름을
LD_PRELOAD
에 추가하는 경우 해당 변수가 이미 가지고있는 기존의 값의 선두에 경로를 추가합니다.
Linux 사용자는 다음 행을
my.cnf
파일에 추가함으로써 바이너리 패키지에 포함 된libtcmalloc_minimal.so
를 사용할 수 있습니다.[mysqld_safe] malloc-lib = tcmalloc
모든 플랫폼에서
tcmalloc
패키지를/usr/lib
에 설치 한 사용자도 이러한 행은 충분합니다. 특정tcmalloc
라이브러리를 사용하려면 전체 경로 이름을 지정합니다. 예 :[mysqld_safe] malloc-lib = / opt / lib / libtcmalloc_minimal.so
--mysqld=
prog_name
ledir
디렉토리에있는 실행하는 서버 프로그램의 이름입니다. MySQL의 바이너리 배포판을 사용하지만, 바이너리 배포판이 아닌 데이터 디렉토리가있는 경우에는이 옵션이 필요합니다. mysqld_safe가 서버를 찾을 수없는 경우,--ledir
옵션을 사용하여 서버의 디렉토리 경로 이름을 나타냅니다.--mysqld-version=
suffix
이 옵션은
--mysqld
옵션과 비슷하지만 서버 프로그램 이름의 접미사 만 지정합니다. 베이스 이름은 mysqld로 간주됩니다. 예를 들어,--mysqld-version=debug
를 사용하면 mysqld_safe는ledir
디렉토리 mysqld-debug 프로그램을 시작합니다.--mysqld-version
인수가 비어있는 경우, mysqld_safe는ledir
디렉토리 mysqld를 사용합니다.--nice=
priority
서버의 예약 우선 순위를 임의의 값으로 설정하려면
nice
프로그램을 사용합니다.--no-defaults
옵션 파일을 읽지 않습니다. 이를 사용하려면 명령 행의 첫 번째 옵션이어야합니다.
--open-files-limit=
count
mysqld가 열 수있는 파일 수. 옵션 값은 ulimit -n에 전달됩니다.
참고이것이 올바르게 기능하기 위해서는, mysqld_safe를
root
로 시작해야합니다.--pid-file=
file_name
프로세스 ID 파일의 경로 이름.
--plugin-dir=
path
플러그인 디렉토리의 경로 이름.
--port=
port_num
서버가 TCP / IP 연결을 대기 할 때 사용하는 포트 번호. 서버가
root
시스템 사용자로 시작되는 경우를 제외하고 포트 번호는 1024 이상으로해야합니다.--skip-kill-mysqld
시작할 때 처리되지 않은 mysqld 프로세스의 강제 종료를 시도하지 않습니다. 이 옵션은 Linux에서만 작동합니다.
--socket=
path
서버가 로컬 연결을 기다릴 때 사용하는 Unix 소켓 파일.
--syslog
,--skip-syslog
--syslog
는 logger 프로그램을 지원하는 시스템에서 오류 메시지가syslog
로 전송되도록합니다.--skip-syslog
는syslog
의 사용을 억제하고 메시지는 오류 로그 파일에 기록됩니다.syslog
가 사용되는 경우daemon.err
syslog 기능 / 중요도가 모든 로그 메시지에 사용됩니다.--syslog-tag=
tag
syslog
에 로깅에서 mysqld_safe 및 mysqld의 메시지는 각각mysqld_safe
및mysqld
식별자를 붙여 기록됩니다. 식별자의 접미사를 지정하려면--syslog-tag=
를 사용합니다. 그러면 식별자는tag
mysqld_safe-
및tag
mysqld-
로 변경됩니다.tag
--timezone=
timezone
TZ
시간대 환경 변수를 지정된 옵션 값을 설정합니다. 정당한 시간대 지정 형식은 운영 체제 설명서를 참조하십시오.--user={
user_name
|user_id
}mysqld 서버를 이름
user_name
또는 숫자 사용자 IDuser_id
를 가진 사용자로 실행합니다. (이 컨텍스트에서 "사용자"는 시스템 로그인 계정이며, 부여 테이블에 나열되어있는 MySQL 사용자가 없습니다.)
mysqld_safe를 --defaults-file
옵션 또는 --defaults-extra-file
옵션으로 시작하여 옵션 파일을 지정하는 경우 해당 옵션은 명령 행에서 지정되는 중 첫 번째 것이어야합니다. 그렇지 않은 경우, 옵션 파일은 사용되지 않습니다. 예를 들어, 다음 명령은 지정된 옵션 파일을 사용하지 않습니다.
mysql> mysqld_safe --port= port_num --defaults-file= file_name
대신 다음 명령을 사용합니다.
mysql> mysqld_safe --defaults-file= file_name --port= port_num
MySQL의 소스 또는 바이너리 배포판은 일반적으로 서버를 약간 다른 위치에 설치되지만 mysqld_safe 스크립트는 어느 쪽에서 설치 한 서버에서도 성공적으로 시작할 수 있도록 작성되어 있습니다. ( 섹션 2.1.5 "설치 레이아웃" 을 참조하십시오.) mysqld_safe는 다음 조건 중 하나가 충족되는 것을 상정하고 있습니다.
서버 및 데이터베이스 작업 디렉토리 (mysqld_safe를 호출 한 디렉토리)에서 상대적으로 검색 할 수. 바이너리 배포판의 경우, mysqld_safe는 작업 디렉토리 아래의
bin
디렉토리와data
디렉토리를 검색합니다. 소스 배포판의 경우,libexec
디렉토리와var
디렉토리를 검색합니다. mysqld_safe를 MySQL 설치 디렉토리 (바이너리 배포판의 경우/usr/local/mysql
)에서 시작하는 경우에는이 조건이 충족되어야합니다.서버 및 데이터베이스 작업 디렉토리에서 상대적으로 감지 할 수없는 경우는 mysqld_safe는 절대 경로 이름으로 검색을 시도합니다. 보통 위치는
/usr/local/libexec
및/usr/local/var
입니다. 실제 위치는 배포 빌드시에 구성 값에서 결정됩니다. 구성시에 지정된 장소에 MySQL이 설치되어 있으면, 이것은 올바른 것입니다.
mysqld_safe는 서버 및 데이터베이스를 작업 디렉토리에서 상대적으로 찾으려고하기 위해 mysqld_safe를 MySQL 설치 디렉토리에서 시작하는 한, MySQL의 바이너리 배포판은 어떤 위치에 설치할 수 있습니다.
shell>cd mysql_installation_directory
shell>bin/mysqld_safe &
mysqld_safe를 MySQL 설치 디렉토리에서 호출해도 실패하는 경우, --ledir
옵션 및 --datadir
옵션을 지정하여 시스템의 서버와 데이터베이스가있는 디렉토리를 지정합니다.
MySQL 5.6.5 이후에서는, mysqld_safe는 sleep 및 date 시스템 유틸리티를 사용하여 현재 부팅까지 여러 번 시작하려고했는지를 판단합니다. 이들이 존재하고 5 회보다 많은 경우는 다시 시작할 때까지 강제로 1 초간 대기시킬 수 있습니다. 이것은 연속적으로 실패하는 경우에 과도하게 CPU를 사용하는 것을 방지하기위한 것입니다. (Bug # 11761530, Bug # 54035)
mysqld_safe를 사용하여 mysqld를 시작하면 mysqld_safe는 자신과 mysqld에서 오류 (및 알림) 메시지가 같은 대상에 보내도록 준비합니다.
이러한 메시지의 출력을 제어하기위한 mysqld_safe 몇 가지 옵션이 있습니다.
--log-error=
: 오류 메시지를 지정된 오류 파일에 기록합니다.file_name
--syslog
: logger 프로그램을 지원하는 시스템에서syslog
에 오류 메시지를 기록합니다.--skip-syslog
: 오류 메시지를syslog
에 기록하지 않습니다. 메시지는 기본 오류 로그 파일 (데이터 디렉토리의
) 또는host_name
.err--log-error
옵션이 지정된 경우에는 지정된 파일에 기록됩니다.
이 옵션이 지정되지 않은 경우 기본값은 --skip-syslog
입니다.
--log-error
와 --syslog
가 모두 지정된 경우 경고가 발행 --log-error
가 우선됩니다.
mysqld_safe가 메시지를 작성하면 알림이 로깅 대상 ( syslog
또는 오류 로그 파일) 및 stdout
으로 보내집니다. 오류 로깅 대상 및 stderr
로 보내집니다.