6.3.2 mysqld_safe — Сценарий запуска MySQL Server
mysqld_safe является рекомендуемым способом запуска сервера mysqld на Unix. mysqld_safe добавляет некоторые функции безопасности, такие как перезапуск сервера при возникновении ошибки и протоколирование информации о работе в файле журнала ошибок. Описание протоколирования ошибок приведено далее в этом разделе.
Для некоторых платформ Linux, установка MySQL из пакетов RPM или Debian включает поддержку systemd для управления запуском и остановкой сервера MySQL. На этих платформах mysqld_safe не устанавливается, так как он не нужен. Более подробную информацию см. в Разделе 2.5.9, «Управление сервером MySQL с помощью systemd».
Одним из последствий неиспользования mysqld_safe на платформах, использующих systemd для управления сервером, является то, что использование разделов [mysqld_safe] или [safe_mysqld] в файлах параметров не поддерживается и может привести к неожиданному поведению.
mysqld_safe пытается запустить исполняемый файл с именем mysqld. Чтобы переопределить стандартное поведение и явно указать имя сервера, который нужно запустить, укажите параметр --mysqld или --mysqld-version для mysqld_safe. Также можно использовать --ledir для указания каталога, в котором mysqld_safe должен искать сервер.
Многие параметры mysqld_safe совпадают с параметрами mysqld. Смотрите Раздел 7.1.7, «Параметры командной строки сервера».
Неизвестные mysqld_safe параметры передаются mysqld, если они указаны в командной строке, но игнорируются, если они указаны в группе [mysqld_safe] файла параметров. Смотрите Раздел 6.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, см. в Разделе 6.2.2.2, «Использование файлов параметров».
Таблица 6.7 Параметры 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 | Формат времени для протоколирования |
| --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 timezone на указанное значение |
| --user | Запустить mysqld от пользователя с именем user_name или числовым идентификатором пользователя user_id |
-
Формат командной строки --helpОтобразить сообщение справки и завершить работу.
-
Формат командной строки --basedir=dir_nameТип Имя каталога Путь к каталогу установки MySQL.
-
Формат командной строки --core-file-size=sizeТип Строка Размер файла core, который mysqld должен уметь создавать. Значение параметра передаётся в ulimit -c.
ПримечаниеПеременная
innodb_buffer_pool_in_core_fileможет использоваться для уменьшения размера файлов core на операционных системах, которые это поддерживают. Дополнительную информацию см. в Разделе 17.8.3.7, «Исключение или включение страниц буфера пула в файлы core». -
Формат командной строки --datadir=dir_nameТип Имя каталога Путь к каталогу данных.
-
--defaults-extra-file=file_nameФормат командной строки --defaults-extra-file=file_nameТип Имя файла Прочитать этот файл настроек дополнительно к обычным файлам настроек. Если файл не существует или недоступен, сервер завершит работу с ошибкой. Если
file_nameне является абсолютным путем, он интерпретируется относительно текущего каталога. Этот параметр должен быть первым в командной строке, если используется.Дополнительную информацию об этом и других параметрах файлов настроек см. в Разделе 6.2.2.3, «Параметры командной строки, влияющие на обработку файлов настроек».
-
Формат командной строки --defaults-file=file_nameТип Имя файла Использовать только указанный файл настроек. Если файл не существует или недоступен, сервер завершит работу с ошибкой. Если
file_nameне является абсолютным путем, он интерпретируется относительно текущего каталога. Этот параметр должен быть первым в командной строке, если используется.Дополнительную информацию об этом и других параметрах файлов настроек см. в Разделе 6.2.2.3, «Параметры командной строки, влияющие на обработку файлов настроек».
-
Формат командной строки --ledir=dir_nameТип Имя каталога Если mysqld_safe не может найти сервер, используйте этот параметр для указания пути к каталогу, где находится сервер.
Этот параметр принимается только в командной строке, а не в файлах настроек. На платформах, использующих systemd, значение можно указать в значении
MYSQLD_OPTS. См. Раздел 2.5.9, «Управление сервером MySQL с помощью systemd». -
Формат командной строки --log-error=file_nameТип Имя файла Записать лог ошибок в указанный файл. См. Раздел 7.4.2, «Лог ошибок».
-
Формат командной строки --mysqld-safe-log-timestamps=typeТип Перечисление Значение по умолчанию utcДопустимые значения systemhyphenlegacyЭтот параметр управляет форматом метки времени в выводе логов, созданном 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, как в mysqld_safe для MySQL 5.6. -
LEGACY,legacyФормат
YYMMDD hh:mm:ss, как в mysqld_safe до MySQL 5.6.
-
-
Командная форма --malloc-lib=[lib-name]Тип Строка Название библиотеки, используемой для выделения памяти вместо системной библиотеки
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 ищет библиотекуtcmallocв/usr/lib. Еслиtmallocнайдена, её имя пути добавляется в начало значенияLD_PRELOADдля mysqld. Еслиtcmallocне найдена, mysqld_safe завершается с ошибкой.Начиная с MySQL 8.0.21,
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на любой платформе, для которой пакетtcmallocустановлен в/usr/lib, добавив эти строки в файлmy.cnf:[mysqld_safe] malloc-lib=tcmalloc
Для использования конкретной библиотеки
tcmalloc, укажите её полное имя пути. Пример:[mysqld_safe] malloc-lib=/opt/lib/libtcmalloc_minimal.so
-
Командная форма --mysqld=file_nameТип Имя файла Имя программы сервера (в каталоге
ledir), который вы хотите запустить. Этот параметр необходим, если вы используете дистрибутив MySQL, но ваш каталог данных находится вне этого дистрибутива. Если mysqld_safe не может найти сервер, используйте параметр--ledirдля указания имени пути к каталогу, где находится сервер.Этот параметр принимается только в командной строке, а не в файлах параметров. На платформах, использующих systemd, значение можно указать в значении
MYSQLD_OPTS. См. Раздел 2.5.9, «Управление сервером MySQL с помощью systemd». -
Командная форма --mysqld-version=suffixТип Строка Этот параметр похож на параметр
--mysqld, но вы указываете только суффикс имени программы сервера. Базовое имя предполагается как mysqld. Например, если вы используете--mysqld-version=debug, mysqld_safe запускает программу mysqld-debug в каталогеledir. Если аргумент к--mysqld-versionпустой, mysqld_safe использует mysqld в каталогеledir.Этот параметр принимается только в командной строке, а не в файлах параметров. На платформах, использующих systemd, значение можно указать в значении
MYSQLD_OPTS. См. Раздел 2.5.9, «Управление сервером MySQL с помощью systemd». -
Командная форма --nice=priorityТип Числовое Используйте программу
niceдля установки приоритета планирования сервера на заданное значение. -
Командная форма --no-defaultsТип Строка Не читать файлы параметров. Если запуск программы завершается ошибкой из-за чтения неизвестных параметров из файла параметров,
--no-defaultsможет быть использован для предотвращения их чтения. Этот параметр должен быть первым в командной строке, если он используется.Дополнительную информацию об этом и других параметрах файлов параметров см. в Разделе 6.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».
-
Командная форма --open-files-limit=countТип Строка Количество файлов, которые mysqld должен уметь открывать. Значение параметра передаётся в ulimit -n.
ПримечаниеВы должны запустить mysqld_safe как
rootдля корректной работы. -
Командная форма --pid-file=file_nameТип Имя файла Имя пути, которое mysqld должен использовать для файла идентификатора процесса.
-
Командная форма --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.errfacility/severity для всех сообщений журнала.Использование этих параметров для управления журналом mysqld устарело. Для записи вывода журнала ошибок в системный журнал используйте инструкции в Раздел 7.4.2.8, «Запись журнала ошибок в системный журнал». Чтобы управлять объектом, используйте системную переменную сервера.
-
Формат командной строки --syslog-tag=tagУстаревшее Да Для ведения журнала в
syslogсообщения от mysqld_safe и mysqld записываются с идентификаторамиmysqld_safeиmysqldсоответственно. Для указания суффикса для идентификаторов используйте--syslog-tag=, которая изменяет идентификаторы наtagmysqld_safe-иtagmysqld-.tagИспользование этого параметра для управления журналом mysqld устарело. Используйте системную переменную сервера вместо этого. См. Раздел 7.4.2.8, «Запись журнала ошибок в системный журнал».
-
Формат командной строки --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)
END_OF_DOCUMENT_MARKER ```При использовании 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 устарело. Используйте встроенную поддержку syslog сервера вместо этого. Дополнительная информация приведена в разделе 7.4.2.8, «Ведение журнала ошибок в системный журнал».
© 2025 Oracle
Licensed under the GPLv2 License.