4.3.2 mysqld_safe — Скрипт запуска MySQL-сервера
mysqld_safe — рекомендуемый способ запуска сервера mysqld в Unix. mysqld_safe добавляет некоторые функции безопасности, такие как перезапуск сервера при возникновении ошибки и регистрация информации о работе в файле журнала ошибок. Описание ведения журнала ошибок приведено позже в этом разделе.
Для некоторых платформ Linux установка MySQL из пакетов RPM или Debian включает поддержку systemd для управления запуском и остановкой сервера MySQL. На этих платформах mysqld_safe не устанавливается, так как он не нужен. Дополнительную информацию см. в разделе 2.5.10 «Управление сервером MySQL с помощью systemd».
Одно из последствий неиспользования mysqld_safe на платформах, использующих systemd для управления сервером, заключается в том, что использование разделов [mysqld_safe] или [safe_mysqld] в файлах параметров не поддерживается и может привести к непредсказуемому поведению.
mysqld_safe пытается запустить исполняемый файл с именем mysqld. Чтобы переопределить это поведение и явно указать имя запускаемого сервера, укажите параметр --mysqld или --mysqld-version для mysqld_safe. Вы также можете использовать --ledir для указания каталога, в котором mysqld_safe должен искать сервер.
Многие параметры mysqld_safe совпадают с параметрами mysqld. См. раздел 5.1.6 «Параметры командной строки сервера».
Неизвестные параметры mysqld_safe передаются mysqld, если они указаны в командной строке, но игнорируются, если они указаны в группе [mysqld_safe] файла параметров. См. раздел 4.2.2.2 «Использование файлов параметров».
mysqld_safe считывает все параметры из разделов [mysqld], [server] и [mysqld_safe] в файлах параметров. Например, если вы укажете раздел [mysqld] следующим образом, mysqld_safe найдет и использует параметр --log-error:
[mysqld]
log-error=error.log
Для обеспечения обратной совместимости mysqld_safe также читает разделы [safe_mysqld], но для актуальных настроек следует переименовать такие разделы в [mysqld_safe].
mysqld_safe принимает параметры в командной строке и в файлах параметров, как описано в следующей таблице. Сведения о файлах параметров, используемых программами MySQL, см. в разделе 4.2.2.2 «Использование файлов параметров».
Таблица 4.6 Параметры mysqld_safe
| Имя параметра | Описание | Введено | Устарело |
|---|---|---|---|
| --basedir | Путь к каталогу установки MySQL | ||
| --core-file-size | Размер файла core, который mysqld должен иметь возможность создавать | ||
| --datadir | Путь к каталогу данных | ||
| --defaults-extra-file | Чтение указанного файла параметров дополнительно к обычным файлам параметров | ||
| --defaults-file | Чтение только указанного файла параметров | ||
| --help | Вывести сообщение справки и завершить работу | ||
| --ledir | Путь к каталогу, где находится сервер | ||
| --log-error | Записывать журнал ошибок в указанный файл | ||
| --malloc-lib | Альтернативная библиотека malloc для использования mysqld | ||
| --mysqld | Имя программы сервера для запуска (в каталоге ledir) | ||
| --mysqld-safe-log-timestamps | Формат временной метки для ведения журнала | 5.7.11 | |
| --mysqld-version | Суффикс для имени программы сервера | ||
| --nice | Использовать программу nice для установки приоритета планирования сервера | ||
| --no-defaults | Не читать файлы параметров | ||
| --open-files-limit | Количество файлов, которые mysqld должен иметь возможность открывать | ||
| --pid-file | Имя файла идентификатора процесса сервера | ||
| --plugin-dir | Каталог, в котором установлены плагины | ||
| --port | Номер порта для прослушивания TCP/IP-соединений | ||
| --skip-kill-mysqld | Не пытаться убить лишние процессы mysqld | ||
| --skip-syslog | Не записывать сообщения об ошибках в syslog; использовать файл журнала ошибок | Да | |
| --socket | Файл сокета для прослушивания соединений по Unix-сокету | ||
| --syslog | Записывать сообщения об ошибках в syslog | Да | |
| --syslog-tag | Суффикс тега для сообщений, записанных в syslog | Да | |
| --timezone | Установить переменную среды TZ для указанной временной зоны | ||
| --user | Запустить mysqld от пользователя с именем user_name или числовым идентификатором пользователя user_id |
END_OF_DOCUMENT_MARKER
-
Формат командной строки --helpФормат командной строки --helpОтобразить сообщение справки и выйти.
-
Формат командной строки --basedir=dir_nameТип Имя каталога Формат командной строки --basedir=dir_nameТип Имя каталога Путь к каталогу установки MySQL.
-
Формат командной строки --core-file-size=sizeТип Строка Формат командной строки --core-file-size=sizeТип Строка Размер файла ядра, который mysqld должен быть в состоянии создать. Значение параметра передаётся в ulimit -c.
-
Формат командной строки --datadir=dir_nameТип Имя каталога Формат командной строки --datadir=dir_nameТип Имя каталога Путь к каталогу данных.
-
--defaults-extra-file=file_nameФормат командной строки --defaults-extra-file=file_nameТип Имя файла Формат командной строки --defaults-extra-file=file_nameТип Имя файла Прочитать этот файл параметров дополнительно к обычным файлам параметров. Если файл не существует или недоступен, сервер завершается с ошибкой. Если
file_nameне является абсолютным именем пути, оно интерпретируется относительно текущего каталога. Это должен быть первый параметр в командной строке, если он используется.Для дополнительной информации об этом и других параметрах файлов параметров см. Раздел 4.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».
-
Формат командной строки --defaults-file=file_nameТип Имя файла Использовать только указанный файл параметров. Если файл не существует или недоступен, сервер завершается с ошибкой. Если
file_nameне является абсолютным именем пути, оно интерпретируется относительно текущего каталога. Это должен быть первый параметр в командной строке, если он используется.Для дополнительной информации об этом и других параметрах файлов параметров см. Раздел 4.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».
-
Формат командной строки --ledir=dir_nameТип Имя каталога Если mysqld_safe не может найти сервер, используйте этот параметр, чтобы указать имя пути к каталогу, где находится сервер.
Начиная с MySQL 5.7.17, этот параметр принимается только в командной строке, а не в файлах параметров. В системах, использующих systemd, значение можно указать в значении
MYSQLD_OPTS. См. Раздел 2.5.10, «Управление сервером MySQL с помощью systemd». -
Формат командной строки --log-error=file_nameТип Имя файла Записать журнал ошибок в указанный файл. См. Раздел 5.4.2, «Журнал ошибок».
-
Формат командной строки --mysqld-safe-log-timestamps=typeIntroduced 5.7.11 Тип Перечисление Значение по умолчанию utcДопустимые значения systemhyphenlegacyЭтот параметр управляет форматом метки времени в выходных данных журнала, создаваемого mysqld_safe. Следующий список описывает разрешенные значения. Для любого другого значения mysqld_safe записывает предупреждение и использует формат
UTC.-
UTC,utcФормат UTC ISO 8601 (такой же, как
--log_timestamps=UTCдля сервера). Это значение по умолчанию. -
SYSTEM,systemФормат локального времени ISO 8601 (такой же, как
--log_timestamps=SYSTEMдля сервера). -
HYPHEN,hyphenФормат
YY-MM-DD h:mm:ss, как в mysqld_safe для MySQL 5.6. -
LEGACY,legacyФормат
YYMMDD hh:mm:ss, как в mysqld_safe до MySQL 5.6.
Этот параметр был добавлен в MySQL 5.7.11.
-
-
Формат командной строки --malloc-lib=[lib-name]Тип Строка Имя библиотеки, используемой для выделения памяти вместо системной библиотеки
malloc(). Начиная с MySQL 5.7.15, значение параметра должно быть одним из каталогов/usr/lib,/usr/lib64,/usr/lib/i386-linux-gnuили/usr/lib/x86_64-linux-gnu. До MySQL 5.7.15 можно использовать любую библиотеку, указав её путь, но есть сокращенная форма для использования библиотекиtcmalloc, поставляемой с двоичными дистрибутивами MySQL для Linux в MySQL 5.7. Возможна ситуация, когда сокращенная форма не работает в определённых конфигурациях, в таком случае нужно указать полный путь.ПримечаниеНачиная с MySQL 5.7.13, дистрибутивы MySQL больше не включают библиотеку
tcmalloc.Параметр
--malloc-libработает, изменяя значение переменной средыLD_PRELOAD, чтобы повлиять на динамическую загрузку, позволяя загрузчику найти библиотеку выделения памяти, когда mysqld запускается:Если параметр не задан или задан без значения (
--malloc-lib=),LD_PRELOADне изменяется и не предпринимается попытка использоватьtcmalloc.-
До MySQL 5.7.31, если параметр задан как
--malloc-lib=tcmalloc, mysqld_safe ищет библиотекуtcmallocв/usr/lib, а затем в расположении MySQLpkglibdir(например,/usr/local/mysql/libили соответствующем). Еслиtmallocнайдена, её путь добавляется в начало значенияLD_PRELOADдля mysqld. Еслиtcmallocне найдена, mysqld_safe завершается с ошибкой.Начиная с MySQL 5.7.31,
tcmallocне является допустимым значением для параметра--malloc-lib. Если параметр задан как
--malloc-lib=, этот полный путь добавляется в начало значения/path/to/some/libraryLD_PRELOAD. Если полный путь указывает на несуществующий или недоступный файл, mysqld_safe завершается с ошибкой.В случаях, когда mysqld_safe добавляет имя пути к
LD_PRELOAD, он добавляет путь в начало любого существующего значения, которое уже есть в переменной.
ПримечаниеНа системах, которые управляют сервером с помощью systemd, mysqld_safe недоступен. Вместо этого укажите библиотеку выделения памяти, установив
LD_PRELOADв/etc/sysconfig/mysql.Пользователи Linux могут использовать
libtcmalloc_minimal.so, включённую в двоичные пакеты, добавив эти строки в файлmy.cnf:[mysqld_safe] malloc-lib=tcmalloc
Эти строки также подходят для пользователей любой платформы, которые установили пакет
tcmallocв/usr/lib. Для использования конкретной библиотекиtcmalloc, укажите её полный путь. Пример:[mysqld_safe] malloc-lib=/opt/lib/libtcmalloc_minimal.so
-
Формат командной строки --mysqld=file_nameТип Имя файла Имя программы сервера (в каталоге
ledir), который вы хотите запустить. Этот параметр необходим, если вы используете двоичный дистрибутив MySQL, но каталог данных находится вне этого дистрибутива. Если mysqld_safe не может найти сервер, используйте параметр--ledirдля указания пути к каталогу, где находится сервер.Начиная с MySQL 5.7.15, этот параметр принимается только в командной строке, а не в файлах параметров. На платформах, использующих systemd, значение можно указать в значении
MYSQLD_OPTS. См. Раздел 2.5.10, «Управление сервером MySQL с помощью systemd». -
Формат командной строки --mysqld-version=suffixТип Строка Этот параметр похож на параметр
--mysqld, но вы указываете только суффикс для имени программы сервера. Базовое имя предполагается mysqld. Например, если вы используете--mysqld-version=debug, mysqld_safe запускает программу mysqld-debug в каталогеledir. Если аргумент к--mysqld-versionпустой, mysqld_safe использует mysqld в каталогеledir.Начиная с MySQL 5.7.15, этот параметр принимается только в командной строке, а не в файлах параметров. На платформах, использующих systemd, значение можно указать в значении
MYSQLD_OPTS. См. Раздел 2.5.10, «Управление сервером MySQL с помощью systemd». -
Формат командной строки --nice=priorityТип Числовой Используйте программу
nice, чтобы установить приоритет планирования сервера на заданное значение. -
Формат командной строки --no-defaultsТип Строка Не читать никакие файлы параметров. Если запуск программы завершается сбоем из-за чтения неизвестных параметров из файла параметров,
--no-defaultsможет быть использован, чтобы предотвратить их чтение. Это должен быть первый параметр в командной строке, если он используется.Для дополнительной информации об этом и других параметрах файлов параметров, см. Раздел 4.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».
-
Формат командной строки --open-files-limit=countТип Строка Количество файлов, которое mysqld должно иметь возможность открыть. Значение параметра передаётся команде ulimit -n.
ПримечаниеВы должны запустить mysqld_safe как
rootдля правильной работы.
-
Формат командной строки --pid-file=file_nameТип Имя файла Имя пути, которое mysqld должно использовать для файла идентификатора процесса.
С MySQL 5.7.2 по 5.7.17, mysqld_safe имеет свой собственный файл идентификатора процесса, который всегда называется
mysqld_safe.pidи расположен в каталоге данных MySQL. -
Формат командной строки --plugin-dir=dir_nameТип Имя каталога Имя пути каталога плагинов.
-
Формат командной строки --port=numberТип Числовое значение Номер порта, который сервер должен использовать при прослушивании подключений TCP/IP. Номер порта должен быть 1024 или выше, если сервер не запускается пользователем операционной системы
root. -
Формат командной строки --skip-kill-mysqldНе пытаться убивать блуждающие процессы mysqld при запуске. Эта опция работает только в Linux.
-
Формат командной строки --socket=file_nameТип Имя файла Файл сокета Unix, который сервер должен использовать при прослушивании локальных подключений.
-
Формат командной строки --syslogУстарело Да Формат командной строки --skip-syslogУстарело Да --syslogотправляет сообщения об ошибках вsyslogна системах, поддерживающих программу logger.--skip-syslogотключает использованиеsyslog; сообщения записываются в файл журнала ошибок.При использовании
syslogдля ведения журнала ошибок используется объектdaemon.errдля всех сообщений журнала.Использование этих параметров для управления ведением журнала mysqld устарело начиная с MySQL 5.7.5. Используйте переменную сервера
log_syslogвместо этого. Чтобы управлять объектом, используйте переменную сервераlog_syslog_facility. См. Раздел 5.4.2.3, «Ведение журнала ошибок в системный журнал». -
Формат командной строки --syslog-tag=tagУстарело Да Для ведения журнала в
syslog, сообщения из mysqld_safe и mysqld пишутся с идентификаторамиmysqld_safeиmysqldсоответственно. Для указания суффикса для идентификаторов используйте--syslog-tag=, что изменяет идентификаторы наtagmysqld_safe-иtagmysqld-.tagИспользование этого параметра для управления ведением журнала mysqld устарело начиная с MySQL 5.7.5. Используйте переменную сервера
log_syslog_tagвместо этого. См. Раздел 5.4.2.3, «Ведение журнала ошибок в системный журнал». -
Формат командной строки --timezone=timezoneТип Строка Установите переменную среды временной зоны
TZна заданное значение параметра. Обратитесь к документации вашей операционной системы за форматами допустимых спецификаций временной зоны. -
Формат командной строки --user={user_name|user_id}Тип Строка Тип Числовое значение Запустить сервер mysqld как пользователя с именем
user_nameили числовым идентификатором пользователяuser_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
Скрипт mysqld_safe написан так, что он обычно может запускать сервер, который был установлен как из исходного кода, так и из бинарного дистрибутива MySQL, даже если такие типы дистрибутивов обычно устанавливают сервер в немного разных местах. (См. Раздел 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 пытается найти сервер и базы данных относительно своего текущего каталога, вы можете установить двоичное распределение MySQL в любом месте, при условии, что вы запустите mysqld_safe из каталога установки MySQL:
cd mysql_installation_directory
bin/mysqld_safe &
Если mysqld_safe терпит неудачу, даже при вызове из каталога установки MySQL, укажите параметры --ledir и --datadir, чтобы указать каталоги, в которых на вашем компьютере расположены сервер и базы данных.
mysqld_safe пытается использовать системные утилиты sleep и date, чтобы определить, сколько раз в секунду он пытался запустить сервер. Если эти утилиты присутствуют и попытки запуска в секунду превышают 5, mysqld_safe ожидает 1 полную секунду перед повторной попыткой запуска. Это призвано предотвратить чрезмерное использование ЦП в случае многократных сбоев. (Ошибка #11761530, Ошибка #54035)
Когда вы используете mysqld_safe для запуска mysqld, mysqld_safe обеспечивает, чтобы сообщения об ошибках (и сообщения) от себя и от mysqld попадали в один и тот же пункт назначения.
Существует несколько параметров mysqld_safe для управления пунктом назначения этих сообщений:
--log-error=: Запись сообщений об ошибках в указанный файл ошибок.file_name--syslog: Запись сообщений об ошибках вsyslogна системах, поддерживающих программу logger.--skip-syslog: Не записывать сообщения об ошибках вsyslog. Сообщения записываются в файл журнала по умолчанию (в каталоге данных) или в указанный файл, если указан параметрhost_name.err--log-error.
Если ни один из этих параметров не задан, по умолчанию используется --skip-syslog.
Когда mysqld_safe записывает сообщение, сообщения о событиях отправляются в место назначения журнала (syslog или файл журнала ошибок), а stdout. Сообщения об ошибках отправляются в место назначения журнала и stderr.
Управление журналом mysqld из mysqld_safe устарело начиная с MySQL 5.7.5. Используйте встроенную поддержку syslog сервера вместо этого. Дополнительную информацию см. в Раздел 5.4.2.3, «Журналирование ошибок в системный журнал».
© 2025 Oracle
Licensed under the GPLv2 License.