Loading...
MySQL 9.5 Reference Manual 9.5의 6.3.2 mysqld_safe — MySQL Server Startup Script의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
mysqld_safe는 Unix에서 mysqld 서버를 시작하는 권장 방법입니다. mysqld_safe는 오류 발생 시 서버를 재시작하고, 실행 시간 정보를 에러 로그에 기록하는 등의 안전 기능을 추가합니다. 에러 로깅에 대한 설명은 이 섹션의 뒷부분에 나옵니다.
참고
일부 Linux 플랫폼에서, RPM 또는 Debian 패키지로 설치한 MySQL에는 서버 시작과 종료를 관리하기 위한 systemd 지원이 포함됩니다. 이러한 플랫폼에서는 mysqld_safe가 필요 없으므로 설치되지 않습니다. 자세한 내용은 Section 2.5.9, “Managing MySQL Server with systemd”를 참조하십시오.
서버 관리를 위해 systemd를 사용하는 플랫폼에서
mysqld_safe를 사용하지 않는다는 것은,
옵션 파일에서
[mysqld_safe] 또는
[safe_mysqld] 섹션을 사용하는 것이
지원되지 않으며 예기치 않은 동작을 초래할 수 있음을 의미합니다.
mysqld_safe는
mysqld라는 이름의 실행 파일을 시작하려고 시도합니다.
기본 동작을 재정의하고 실행하려는 서버의 이름을 명시적으로 지정하려면,
mysqld_safe에
--mysqld 또는
--mysqld-version 옵션을 지정하십시오.
또한 --ledir를 사용하여
mysqld_safe가 서버를 찾을 디렉터리를 지정할 수 있습니다.
mysqld_safe의 많은 옵션은 mysqld의 옵션과 동일합니다. Section 7.1.7, “Server Command Options”를 참조하십시오.
mysqld_safe가 알 수 없는 옵션은
커맨드라인에서 지정된 경우에는
mysqld에 전달되지만,
옵션 파일의 [mysqld_safe] 그룹에 지정된 경우에는 무시됩니다.
Section 6.2.2.2, “Using Option Files”를 참조하십시오.
mysqld_safe는
옵션 파일의
[mysqld], [server], [mysqld_safe]
섹션에서 모든 옵션을 읽습니다. 예를 들어 다음과 같이
[mysqld] 섹션을 지정하면
mysqld_safe는
--log-error 옵션을 찾아 사용합니다:
1[mysqld] 2log-error=error.log
하위 호환성을 위해,
mysqld_safe는
[safe_mysqld] 섹션도 읽지만,
최신 구성을 위해서는 이러한 섹션 이름을
[mysqld_safe]로 변경해야 합니다.
mysqld_safe는 아래 표에 설명된 대로 커맨드라인과 옵션 파일에서 옵션을 허용합니다. MySQL 프로그램에서 사용하는 옵션 파일에 대한 정보는 Section 6.2.2.2, “Using Option Files”를 참조하십시오.
Table 6.7 mysqld_safe Options
| Option Name | Description |
|---|---|
| --basedir | Path to MySQL installation directory |
| --core-file-size | Size of core file that mysqld should be able to create |
| --datadir | Path to data directory |
| --defaults-extra-file | Read named option file in addition to usual option files |
| --defaults-file | Read only named option file |
| --help | Display help message and exit |
| --ledir | Path to directory where server is located |
| --log-error | Write error log to named file |
| --malloc-lib | Alternative malloc library to use for mysqld |
| --mysqld | Name of server program to start (in ledir directory) |
| --mysqld-safe-log-timestamps | Timestamp format for logging |
| --mysqld-version | Suffix for server program name |
| --nice | Use nice program to set server scheduling priority |
| --no-defaults | Read no option files |
| --open-files-limit | Number of files that mysqld should be able to open |
| --pid-file | Path name of server process ID file |
| --plugin-dir | Directory where plugins are installed |
| --port | Port number on which to listen for TCP/IP connections |
| --skip-kill-mysqld | Do not try to kill stray mysqld processes |
| --skip-syslog | Do not write error messages to syslog; use error log file |
| --socket | Socket file on which to listen for Unix socket connections |
| --syslog | Write error messages to syslog |
| --syslog-tag | Tag suffix for messages written to syslog |
| --timezone | Set TZ time zone environment variable to named value |
| --user | Run mysqld as user having name user_name or numeric user ID user_id |
| Option Name | Description |
|---|
| Property | Value |
|---|---|
| Command-Line Format | --help |
help 메시지를 출력한 후 종료합니다.
| Property | Value |
|---|---|
| Command-Line Format | --basedir=dir_name |
| Type | Directory name |
MySQL 설치 디렉터리의 경로입니다.
| Property | Value |
|---|---|
| Command-Line Format | --core-file-size=size |
| Type | String |
mysqld가 생성할 수 있어야 하는 코어 파일의 크기입니다. 옵션 값은 ulimit -c에 전달됩니다.
참고
innodb_buffer_pool_in_core_file
변수를 사용하면, 이를 지원하는 운영 체제에서
코어 파일의 크기를 줄일 수 있습니다. 자세한 내용은
Section 17.8.3.7, “Excluding or Including Buffer Pool Pages from Core Files”를
참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --datadir=dir_name |
| Type | Directory name |
데이터 디렉터리의 경로입니다.
| Property | Value |
|---|---|
| Command-Line Format | --defaults-extra-file=file_name |
| Type | File name |
일반적인 옵션 파일에 추가로 이 옵션 파일을 읽습니다.
파일이 존재하지 않거나 접근할 수 없으면
서버는 에러와 함께 종료합니다.
_file_name_이 절대 경로명이 아니면
현재 디렉터리를 기준으로 해석됩니다.
이 옵션을 사용하는 경우 커맨드라인의
첫 번째 옵션이어야 합니다.
이 옵션 및 기타 옵션 파일 관련 옵션에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --defaults-file=file_name |
| Type | File name |
지정된 옵션 파일만 사용합니다. 파일이 존재하지 않거나
접근할 수 없으면 서버는 에러와 함께 종료합니다.
_file_name_이 절대 경로명이 아니면
현재 디렉터리를 기준으로 해석됩니다.
이 옵션을 사용하는 경우 커맨드라인의
첫 번째 옵션이어야 합니다.
이 옵션 및 기타 옵션 파일 관련 옵션에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --ledir=dir_name |
| Type | Directory name |
mysqld_safe가 서버를 찾을 수 없을 경우, 이 옵션을 사용하여 서버가 위치한 디렉터리의 경로명을 지정하십시오.
이 옵션은 옵션 파일이 아니라 오직 커맨드라인에서만
허용됩니다. systemd를 사용하는 플랫폼에서는
MYSQLD_OPTS 값 안에 이 값을 지정할 수 있습니다.
Section 2.5.9, “Managing MySQL Server with systemd”를
참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --log-error=file_name |
| Type | File name |
에러 로그를 지정된 파일에 기록합니다. Section 7.4.2, “The Error Log”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --mysqld-safe-log-timestamps=type |
| Type | Enumeration |
| Default Value | utc |
| Valid Values | system<br>hyphen<br>legacy |
이 옵션은
mysqld_safe가 생성하는 로그 출력의
타임스탬프 형식을 제어합니다. 허용되는 값은 다음과 같습니다.
다른 값을 지정하면,
mysqld_safe는
경고를 기록하고 UTC 형식을 사용합니다.
UTC, utc
ISO 8601 UTC 형식입니다 (서버의
--log_timestamps=UTC와 동일).
기본값입니다.
SYSTEM, system
ISO 8601 로컬 시간 형식입니다 (서버의
--log_timestamps=SYSTEM과 동일).
HYPHEN, hyphen
YY-MM-DD h:mm:ss 형식으로,
MySQL 5.6용
mysqld_safe에서 사용되는 형식입니다.
LEGACY, legacy
YYMMDD hh:mm:ss 형식으로,
MySQL 5.6 이전의
mysqld_safe에서 사용되던 형식입니다.
| Property | Value |
|---|---|
| Command-Line Format | --malloc-lib=[lib-name] |
| Type | String |
시스템 malloc() 라이브러리 대신 사용할
메모리 할당 라이브러리의 이름입니다.
옵션 값은 다음 디렉터리 중 하나여야 합니다:
/usr/lib,
/usr/lib64,
/usr/lib/i386-linux-gnu,
/usr/lib/x86_64-linux-gnu.
--malloc-lib 옵션은
LD_PRELOAD 환경값을 수정하여
동적 링킹에 영향을 주고,
mysqld 실행 시
로더가 메모리 할당 라이브러리를 찾을 수 있도록 합니다:
옵션을 지정하지 않았거나,
값 없이 지정한 경우
(--malloc-lib=),
LD_PRELOAD는 수정되지 않으며
tcmalloc을 사용하려는 시도가 이루어지지 않습니다.
MySQL 8.0.21 이전에는
--malloc-lib=tcmalloc로 옵션을 지정하면,
mysqld_safe는
/usr/lib에서 tcmalloc 라이브러리를 찾습니다.
tcmalloc이 발견되면,
그 경로명을
mysqld용
LD_PRELOAD 값의 맨 앞에 추가합니다.
tcmalloc을 찾지 못하면,
mysqld_safe는
에러와 함께 중단합니다.
MySQL 8.0.21부터는
tcmalloc은
--malloc-lib 옵션의
허용 값이 아닙니다.
옵션을
--malloc-lib=/path/to/some/library와 같이 지정하면,
해당 전체 경로가
LD_PRELOAD 값의 맨 앞에 추가됩니다.
전체 경로가 존재하지 않거나 읽을 수 없는 파일을 가리키면,
mysqld_safe는
에러와 함께 중단합니다.
mysqld_safe가
LD_PRELOAD에 경로명을 추가하는 경우,
이미 존재하는 값이 있다면 그 앞에 경로를 추가합니다.
참고
서버를 systemd로 관리하는 시스템에서는
mysqld_safe를 사용할 수 없습니다.
대신 /etc/sysconfig/mysql에서
LD_PRELOAD를 설정하여 할당 라이브러리를 지정하십시오.
Linux 사용자는 /usr/lib에
tcmalloc 패키지가 설치된 모든 플랫폼에서
libtcmalloc_minimal.so 라이브러리를 사용할 수 있으며,
my.cnf 파일에 다음과 같은 행을 추가하면 됩니다:
1[mysqld_safe] 2malloc-lib=tcmalloc
특정 tcmalloc 라이브러리를 사용하려면,
해당 라이브러리의 전체 경로명을 지정하십시오. 예:
1[mysqld_safe] 2malloc-lib=/opt/lib/libtcmalloc_minimal.so
| Property | Value |
|---|---|
| Command-Line Format | --mysqld=file_name |
| Type | File name |
시작하려는 서버 프로그램의 이름입니다
(ledir 디렉터리 안에 있어야 합니다).
이 옵션은 MySQL 바이너리 배포판을 사용하지만
데이터 디렉터리가 바이너리 배포판 외부에 있을 때 필요합니다.
mysqld_safe가 서버를 찾을 수 없으면,
--ledir 옵션을 사용하여
서버가 위치한 디렉터리의 경로명을 지정하십시오.
이 옵션은 옵션 파일이 아니라 오직 커맨드라인에서만
허용됩니다. systemd를 사용하는 플랫폼에서는
MYSQLD_OPTS 값 안에 이 값을 지정할 수 있습니다.
Section 2.5.9, “Managing MySQL Server with systemd”를
참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --mysqld-version=suffix |
| Type | String |
이 옵션은
--mysqld 옵션과 유사하지만,
서버 프로그램 이름의 suffix만 지정합니다.
베이스 이름은 mysqld로 가정됩니다.
예를 들어,
--mysqld-version=debug를 사용하면
mysqld_safe는
ledir 디렉터리에서
mysqld-debug 프로그램을 시작합니다.
--mysqld-version의 인수가
비어 있으면,
mysqld_safe는
ledir 디렉터리의
mysqld를 사용합니다.
이 옵션은 옵션 파일이 아니라 오직 커맨드라인에서만
허용됩니다. systemd를 사용하는 플랫폼에서는
MYSQLD_OPTS 값 안에 이 값을 지정할 수 있습니다.
Section 2.5.9, “Managing MySQL Server with systemd”를
참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --nice=priority |
| Type | Numeric |
nice 프로그램을 사용하여 서버의
스케줄링 우선순위를 지정된 값으로 설정합니다.
| Property | Value |
|---|---|
| Command-Line Format | --no-defaults |
| Type | String |
어떠한 옵션 파일도 읽지 않습니다.
프로그램 시작이 옵션 파일에서 읽은
알 수 없는 옵션 때문에 실패하는 경우,
--no-defaults를 사용하여
이들을 읽지 않도록 할 수 있습니다.
이 옵션을 사용하는 경우 커맨드라인의
첫 번째 옵션이어야 합니다.
이 옵션 및 기타 옵션 파일 관련 옵션에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --open-files-limit=count |
| Type | String |
mysqld가 열 수 있어야 하는 파일의 개수입니다. 옵션 값은 ulimit -n에 전달됩니다.
참고
이 기능이 제대로 동작하려면
mysqld_safe를
root로 시작해야 합니다.
| Property | Value |
|---|---|
| Command-Line Format | --pid-file=file_name |
| Type | File name |
mysqld가 프로세스 ID 파일에 사용할 경로명입니다.
| Property | Value |
|---|---|
| Command-Line Format | --plugin-dir=dir_name |
| Type | Directory name |
플러그인 디렉터리의 경로명입니다.
| Property | Value |
|---|---|
| Command-Line Format | --port=number |
| Type | Numeric |
서버가 TCP/IP 연결을 대기할 때 사용할
포트 번호입니다. 서버를
root 운영 체제 사용자가 시작하지 않는 한,
포트 번호는 1024 이상이어야 합니다.
| Property | Value |
|---|---|
| Command-Line Format | --skip-kill-mysqld |
시작 시 떠돌이 mysqld 프로세스를 kill하려고 시도하지 않습니다. 이 옵션은 Linux에서만 동작합니다.
| Property | Value |
|---|---|
| Command-Line Format | --socket=file_name |
| Type | File name |
로컬 연결을 대기할 때 서버가 사용할 Unix 소켓 파일입니다.
| Property | Value |
|---|---|
| Command-Line Format | --syslog |
| Deprecated | Yes |
| Property | Value |
|---|---|
| Command-Line Format | --skip-syslog |
| Deprecated | Yes |
--syslog는
logger 프로그램을 지원하는 시스템에서
에러 메시지를 syslog로 전송합니다.
--skip-syslog는 syslog 사용을 억제하고,
메시지를 에러 로그 파일에 기록합니다.
syslog를 에러 로깅에 사용하는 경우,
모든 로그 메시지에는 daemon.err
facility/severity가 사용됩니다.
이러한 옵션을 사용하여
mysqld 로깅을 제어하는 것은
deprecated입니다. 시스템 로그에 에러 로그 출력을 기록하려면
Section 7.4.2.8, “Error Logging to the System Log”의
지침을 사용하십시오. facility를 제어하려면
서버의
log_syslog_facility
시스템 변수를 사용하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --syslog-tag=tag |
| Deprecated | Yes |
syslog로 로깅할 때,
mysqld_safe와
mysqld에서 나오는 메시지는
각각 mysqld_safe와
mysqld identifier로 기록됩니다.
identifier에 suffix를 지정하려면
--syslog-tag=tag를 사용하십시오.
이 옵션은 identifier를
mysqld_safe-tag와
mysqld-tag로 변경합니다.
이 옵션을 사용하여
mysqld 로깅을 제어하는 것은
deprecated입니다. 대신 서버의
log_syslog_tag
시스템 변수를 사용하십시오.
Section 7.4.2.8, “Error Logging to the System Log”을
참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --timezone=timezone |
| Type | String |
TZ 타임존 환경 변수를
지정된 옵션 값으로 설정합니다.
허용되는 타임존 지정 형식은
운영 체제 문서를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | `--user={user_name |
| Type | String |
| Type | Numeric |
mysqld 서버를
이름이 _user_name_이거나
숫자 사용자 ID가 _user_id_인 사용자로 실행합니다.
(여기서 “user”는 MySQL grant 테이블에 나오는
MySQL 사용자가 아니라 시스템 로그인 계정을 의미합니다.)
mysqld_safe를 실행할 때
옵션 파일 이름을 지정하기 위해
--defaults-file 또는
--defaults-extra-file 옵션을 사용하는 경우,
해당 옵션은 커맨드라인의 첫 번째 옵션이어야 하며,
그렇지 않으면 옵션 파일이 사용되지 않습니다.
예를 들어, 다음 커맨드는 지정된 옵션 파일을 사용하지 않습니다:
1mysql> mysqld_safe --port=port_num --defaults-file=file_name
대신 다음 커맨드를 사용하십시오:
1mysql> mysqld_safe --defaults-file=file_name --port=port_num
mysqld_safe 스크립트는 일반적으로 소스 또는 바이너리 배포판에서 설치된 서버를 시작할 수 있도록 작성되어 있으며, 이러한 배포 유형은 서버를 다소 다른 위치에 설치하는 경향이 있습니다. (자세한 내용은 Section 2.1.5, “Installation Layouts”를 참조하십시오.) mysqld_safe는 다음 조건 중 하나가 참이라고 가정합니다:
서버와 데이터베이스를
mysqld_safe가 호출된
작업 디렉터리를 기준으로 찾을 수 있습니다.
바이너리 배포판의 경우,
mysqld_safe는
작업 디렉터리 아래에서 bin과 data 디렉터리를 찾습니다.
소스 배포판의 경우에는
libexec와 var 디렉터리를 찾습니다.
이 조건은 MySQL 설치 디렉터리
(예: 바이너리 배포판의 경우 /usr/local/mysql)에서
mysqld_safe를 실행하면
충족됩니다.
서버와 데이터베이스를 작업 디렉터리를 기준으로 찾을 수 없으면,
mysqld_safe는
절대 경로명을 사용하여 이들을 찾으려 시도합니다.
일반적인 위치는
/usr/local/libexec와
/usr/local/var입니다.
실제 위치는 배포판이 빌드될 때 설정된 값에서
결정됩니다. MySQL이 구성 시 지정된 위치에 설치된 경우,
이 값은 올바른 값이어야 합니다.
mysqld_safe는 자신의 작업 디렉터리를 기준으로 서버와 데이터베이스를 찾으려 하기 때문에, MySQL 바이너리 배포판은 어디에든 설치할 수 있으며, MySQL 설치 디렉터리에서 mysqld_safe를 실행하기만 하면 됩니다:
1cd mysql_installation_directory 2bin/mysqld_safe &
MySQL 설치 디렉터리에서 실행했음에도
mysqld_safe가 실패하는 경우,
--ledir와
--datadir 옵션을 지정하여
시스템에서 서버와 데이터베이스가 위치한 디렉터리를
명시하십시오.
mysqld_safe는 sleep과 date 시스템 유틸리티를 사용하여 초당 몇 번 서버 시작을 시도했는지 판단하려고 합니다. 이러한 유틸리티가 존재하고 초당 시도 횟수가 5회를 초과하면, mysqld_safe는 다시 시작하기 전에 1초 전체를 기다립니다. 이는 반복되는 실패 상황에서 CPU 사용률이 과도해지는 것을 방지하기 위한 것입니다. (Bug #11761530, Bug #54035)
mysqld_safe를 사용하여 mysqld를 시작하면, mysqld_safe는 자신과 mysqld에서 나오는 에러(및 notice) 메시지가 같은 대상에 가도록 설정합니다.
메시지의 목적지를 제어하기 위한 여러 mysqld_safe 옵션이 있습니다:
--log-error=file_name:
에러 메시지를 지정된 에러 파일에 기록합니다.
--syslog:
logger 프로그램을 지원하는 시스템에서
에러 메시지를 syslog에 기록합니다.
--skip-syslog:
에러 메시지를 syslog에 기록하지 않습니다.
메시지는 기본 에러 로그 파일
(데이터 디렉터리의 host_name.err)에 기록되며,
--log-error 옵션이
지정된 경우에는 지정된 파일에 기록됩니다.
이들 옵션이 전혀 지정되지 않으면,
기본값은
--skip-syslog입니다.
mysqld_safe가 메시지를 기록할 때,
notice는 로깅 대상(syslog 또는 에러 로그 파일)과
stdout으로 전송됩니다.
에러는 로깅 대상과 stderr로 전송됩니다.
참고
mysqld 로깅을
mysqld_safe에서 제어하는 것은
deprecated입니다. 대신 서버의 기본 syslog 지원을 사용하십시오.
자세한 내용은
Section 7.4.2.8, “Error Logging to the System Log”을
참조하십시오.
6.3.1 mysqld — The MySQL Server
6.3.3 mysql.server — MySQL Server Startup Script