Spec-Zone.ru › MySQL 5.7

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

Таблица 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
    Формат командной строки --help

    Отобразить сообщение справки и выйти.

  • --basedir=dir_name

    Формат командной строки --basedir=dir_name
    Тип Имя каталога
    Формат командной строки --basedir=dir_name
    Тип Имя каталога

    Путь к каталогу установки MySQL.

  • --core-file-size=size

    Формат командной строки --core-file-size=size
    Тип Строка
    Формат командной строки --core-file-size=size
    Тип Строка

    Размер файла ядра, который mysqld должен быть в состоянии создать. Значение параметра передаётся в ulimit -c.

  • --datadir=dir_name

    Формат командной строки --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

    Формат командной строки --defaults-file=file_name
    Тип Имя файла

    Использовать только указанный файл параметров. Если файл не существует или недоступен, сервер завершается с ошибкой. Если file_name не является абсолютным именем пути, оно интерпретируется относительно текущего каталога. Это должен быть первый параметр в командной строке, если он используется.

    Для дополнительной информации об этом и других параметрах файлов параметров см. Раздел 4.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».

  • --ledir=dir_name

    Формат командной строки --ledir=dir_name
    Тип Имя каталога

    Если mysqld_safe не может найти сервер, используйте этот параметр, чтобы указать имя пути к каталогу, где находится сервер.

    Начиная с MySQL 5.7.17, этот параметр принимается только в командной строке, а не в файлах параметров. В системах, использующих systemd, значение можно указать в значении MYSQLD_OPTS. См. Раздел 2.5.10, «Управление сервером MySQL с помощью systemd».

  • --log-error=file_name

    Формат командной строки --log-error=file_name
    Тип Имя файла

    Записать журнал ошибок в указанный файл. См. Раздел 5.4.2, «Журнал ошибок».

  • --mysqld-safe-log-timestamps

    Формат командной строки --mysqld-safe-log-timestamps=type
    Introduced 5.7.11
    Тип Перечисление
    Значение по умолчанию utc
    Допустимые значения

    system

    hyphen

    legacy

    Этот параметр управляет форматом метки времени в выходных данных журнала, создаваемого 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-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, а затем в расположении MySQL pkglibdir (например, /usr/local/mysql/lib или соответствующем). Если tmalloc найдена, её путь добавляется в начало значения LD_PRELOAD для mysqld. Если tcmalloc не найдена, mysqld_safe завершается с ошибкой.

      Начиная с MySQL 5.7.31, tcmalloc не является допустимым значением для параметра --malloc-lib.

    • Если параметр задан как --malloc-lib=/path/to/some/library, этот полный путь добавляется в начало значения LD_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=prog_name

    Формат командной строки --mysqld=file_name
    Тип Имя файла

    Имя программы сервера (в каталоге ledir), который вы хотите запустить. Этот параметр необходим, если вы используете двоичный дистрибутив MySQL, но каталог данных находится вне этого дистрибутива. Если mysqld_safe не может найти сервер, используйте параметр --ledir для указания пути к каталогу, где находится сервер.

    Начиная с MySQL 5.7.15, этот параметр принимается только в командной строке, а не в файлах параметров. На платформах, использующих systemd, значение можно указать в значении MYSQLD_OPTS. См. Раздел 2.5.10, «Управление сервером MySQL с помощью systemd».

  • --mysqld-version=suffix

    Формат командной строки --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=priority
    Тип Числовой

    Используйте программу nice, чтобы установить приоритет планирования сервера на заданное значение.

  • --no-defaults

    Формат командной строки --no-defaults
    Тип Строка

    Не читать никакие файлы параметров. Если запуск программы завершается сбоем из-за чтения неизвестных параметров из файла параметров, --no-defaults может быть использован, чтобы предотвратить их чтение. Это должен быть первый параметр в командной строке, если он используется.

    Для дополнительной информации об этом и других параметрах файлов параметров, см. Раздел 4.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».

  • --open-files-limit=count

    Формат командной строки --open-files-limit=count
    Тип Строка

    Количество файлов, которое mysqld должно иметь возможность открыть. Значение параметра передаётся команде ulimit -n.

    Примечание

    Вы должны запустить mysqld_safe как root для правильной работы.

  • --pid-file=file_name

    Формат командной строки --pid-file=file_name
    Тип Имя файла

    Имя пути, которое mysqld должно использовать для файла идентификатора процесса.

    С MySQL 5.7.2 по 5.7.17, mysqld_safe имеет свой собственный файл идентификатора процесса, который всегда называется mysqld_safe.pid и расположен в каталоге данных MySQL.

  • --plugin-dir=dir_name

    Формат командной строки --plugin-dir=dir_name
    Тип Имя каталога

    Имя пути каталога плагинов.

  • --port=port_num

    Формат командной строки --port=number
    Тип Числовое значение

    Номер порта, который сервер должен использовать при прослушивании подключений TCP/IP. Номер порта должен быть 1024 или выше, если сервер не запускается пользователем операционной системы root.

  • --skip-kill-mysqld

    Формат командной строки --skip-kill-mysqld

    Не пытаться убивать блуждающие процессы mysqld при запуске. Эта опция работает только в Linux.

  • --socket=path

    Формат командной строки --socket=file_name
    Тип Имя файла

    Файл сокета Unix, который сервер должен использовать при прослушивании локальных подключений.

  • --syslog, --skip-syslog

    Формат командной строки --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-tag=tag
    Устарело Да

    Для ведения журнала в syslog, сообщения из mysqld_safe и mysqld пишутся с идентификаторами mysqld_safe и mysqld соответственно. Для указания суффикса для идентификаторов используйте --syslog-tag=tag, что изменяет идентификаторы на mysqld_safe-tag и mysqld-tag.

    Использование этого параметра для управления ведением журнала mysqld устарело начиная с MySQL 5.7.5. Используйте переменную сервера log_syslog_tag вместо этого. См. Раздел 5.4.2.3, «Ведение журнала ошибок в системный журнал».

  • --timezone=timezone

    Формат командной строки --timezone=timezone
    Тип Строка

    Установите переменную среды временной зоны TZ на заданное значение параметра. Обратитесь к документации вашей операционной системы за форматами допустимых спецификаций временной зоны.

  • --user={user_name|user_id}

    Формат командной строки --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 установлен в указанное при конфигурации расположение.

END_OF_DOCUMENT_MARKER

Поскольку 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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/mysqld-safe.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API