Spec-Zone.ru › MySQL 9.2

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

Таблица 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

    Формат командной строки --help

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

  • --basedir=dir_name

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

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

  • --core-file-size=size

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

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

    Примечание

    Переменная innodb_buffer_pool_in_core_file может использоваться для уменьшения размера файлов core на операционных системах, которые это поддерживают. Дополнительную информацию см. в Разделе 17.8.3.7, «Исключение или включение страниц буфера пула в файлы core».

  • --datadir=dir_name

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

    Путь к каталогу данных.

  • --defaults-extra-file=file_name

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

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

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

  • --defaults-file=file_name

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

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

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

  • --ledir=dir_name

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

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

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

  • --log-error=file_name

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

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

  • --mysqld-safe-log-timestamps

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

    system

    hyphen

    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, как в mysqld_safe для MySQL 5.6.

    • LEGACY, legacy

      Формат YYMMDD hh:mm:ss, как в mysqld_safe до MySQL 5.6.

  • --malloc-lib=[lib_name]

    Командная форма --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/library, этот полный путь добавляется в начало значения LD_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=prog_name

    Командная форма --mysqld=file_name
    Тип Имя файла

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

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

  • --mysqld-version=suffix

    Командная форма --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=priority
    Тип Числовое

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

  • --no-defaults

    Командная форма --no-defaults
    Тип Строка

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

    Дополнительную информацию об этом и других параметрах файлов параметров см. в Разделе 6.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 должен использовать для файла идентификатора процесса.

  • --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 facility/severity для всех сообщений журнала.

    Использование этих параметров для управления журналом mysqld устарело. Для записи вывода журнала ошибок в системный журнал используйте инструкции в Раздел 7.4.2.8, «Запись журнала ошибок в системный журнал». Чтобы управлять объектом, используйте системную переменную сервера.

  • --syslog-tag=tag

    Формат командной строки --syslog-tag=tag
    Устаревшее Да

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

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

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

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

Spec-Zone.ru

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