Spec-Zone.ru › MariaDB

mysqld_safe

MariaDB, начиная с 10.4.6

Начиная с MariaDB 10.4.6, mariadbd-safe является символической ссылкой на mysqld_safe.

MariaDB, начиная с 10.5.2

Начиная с MariaDB 10.5.2, mariadbd-safe является именем сервера, при этом mysqld_safe — символическая ссылка.



Скрипт запуска mysqld_safe включён в дистрибутивы MariaDB на Linux и Unix. Он является оболочкой, которая запускает mysqld с дополнительными функциями безопасности. Например, если mysqld_safe обнаруживает, что mysqld завершился аварийно, то mysqld_safe автоматически перезапустит mysqld.

mysqld_safe является рекомендуемым способом запуска mysqld в дистрибутивах Linux и Unix, не поддерживающих systemd. Кроме того, скрипт инициализации mysql.server используемый в sysVinit по умолчанию запускает mysqld с mysqld_safe.



Использование mysqld_safe

Команда для использования mysqld_safe и общая синтаксис:

mysqld_safe [ --no-defaults | --defaults-file | --defaults-extra-file | --defaults-group-suffix | --print-defaults ] <options> <mysqld_options>

Параметры

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

mysqld_safe поддерживает следующие параметры:

Параметр Описание
--help Вывести сообщение справки и выйти.
--autoclose (Только NetWare) В NetWare mysqld_safe обеспечивает вывод на экран. Когда вы разгружаете (выключаете) NLM mysqld_safe, экран по умолчанию не исчезает. Вместо этого он запрашивает ввод пользователя: NLM has terminated; Press any key to close the screen. Если вы хотите, чтобы NetWare автоматически закрывал экран, используйте параметр --autoclose для mysqld_safe.
--basedir=path Путь к каталогу установки MariaDB.
--core-file-size=size Размер файла ядра, который mysqld должен иметь возможность создавать. Значение параметра передаётся в ulimit -c.
--crash-script=file Скрипт, который вызывается в случае аварийного завершения работы mysqld.
--datadir=path Путь к каталогу данных.
--defaults-extra-file=path Имя файла параметров, который необходимо прочитать дополнительно к обычным файлам параметров. Если он используется, должен быть первым параметром в командной строке. Если файл не существует или недоступен, сервер завершит работу с ошибкой.
--defaults-file=file_name Имя файла параметров, который необходимо прочитать вместо обычных файлов параметров. Если он используется, должен быть первым параметром в командной строке.
--defaults-group-suffix=# В дополнение к группам параметров по умолчанию, также прочитать группы параметров с этим суффиксом.
--flush-caches Очистить и сбросить буферы/кеши перед запуском сервера.
--ledir=path Если mysqld_safe не может найти сервер, используйте этот параметр для указания пути к каталогу, где находится сервер.
--log-error=file_name Записывать лог ошибок в указанный файл.
--malloc-lib=lib Предварительная загрузка общей библиотеки lib, если она доступна. Для примера см. отладку MariaDB.
--mysqld=prog_nam Имя программы сервера (в каталоге ledir), которую вы хотите запустить. Этот параметр необходим, если вы используете дистрибутив MariaDB, но каталог данных находится вне дистрибутива. Если mysqld_safe не может найти сервер, используйте параметр --ledir для указания пути к каталогу, где находится сервер.
--mysqld-version=suffix Этот параметр аналогичен параметру --mysqld, но вы указываете только суффикс для имени программы сервера. Базовое имя предполагается mysqld. Например, если используется --mysqld-version=debug, mysqld_safe запускает программу mysqld-debug в каталоге ledir. Если аргумент для --mysqld-version пустой, mysqld_safe использует mysqld в каталоге ledir.
--nice=priority Использовать программу nice для установки приоритета планирования сервера на заданное значение.
--no-defaults Не читать никакие файлы параметров. Если он используется, должен быть первым параметром в командной строке.
--no-watch, --nowatch, --no-auto-restart Выйти после запуска mysqld.
--numa-interleave Запустить mysqld с перемешанной в памяти на всех узлах NUMA.
--open-files-limit=count Количество файлов, которые mysqld должен иметь возможность открыть. Значение параметра передаётся в ulimit -n. Обратите внимание, что для корректной работы необходимо запустить mysqld_safe как root.
--pid-file=file_name Путь к файлу идентификатора процесса.
--plugin-dir=dir_name Каталог для плагинов на стороне клиента.
--port=port_num Номер порта, который сервер должен использовать при прослушивании TCP/IP-соединений. Номер порта должен быть 1024 или выше, если сервер не запускается пользователем root.
--print-defaults Вывести список аргументов программы и выйти.
--skip-kill-mysqld Не пытаться убивать блуждающие процессы mysqld при запуске. Этот параметр работает только в Linux.
--socket=path Файл сокета Unix, который сервер должен использовать при прослушивании локальных соединений.
--syslog, --skip-syslog --syslog отправляет сообщения об ошибках в syslog на системах, поддерживающих программу logger. --skip-syslog подавляет использование syslog; сообщения записываются в файл журнала ошибок.
--syslog-tag=tag Для записи в syslog сообщения от mysqld_safe и mysqld записываются с меткой mysqld_safe и mysqld соответственно. Чтобы указать суффикс для метки, используйте --syslog-tag=tag, который изменяет метки на mysqld_safe-tag и mysqld-tag.
--timezone=timezone Установить переменную окружения TZ time zone на заданное значение. Обратитесь к документации вашей операционной системы за форматами спецификаций часовых поясов. Также см. Часовые пояса.
--user={user_name or user_id} Запустить сервер mysqld от пользователя с именем user_name или с цифровым идентификатором пользователя user_id. («Пользователь» в данном контексте относится к системной учетной записи входа, а не к пользователю MariaDB, указанному в таблицах грантов.)

Файлы параметров

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

Следующие параметры относятся к тому, как инструменты командной строки MariaDB обрабатывают файлы параметров. Они должны быть указаны в качестве **первого аргумента** в командной строке:

Параметр Описание
--print-defaults Вывести список аргументов программы и выйти.
--no-defaults Не читать параметры по умолчанию из файла параметров.
--defaults-file=# Прочитать параметры по умолчанию только из заданного файла #.
--defaults-extra-file=# Прочитать этот файл после чтения глобальных файлов.
--defaults-group-suffix=# В дополнение к группам параметров по умолчанию, также прочитать группы параметров с этим суффиксом.

Группы параметров

mysqld_safe считывает параметры из следующих групп параметров из файлов параметров:

Группа Описание
[mysqld_safe] Параметры, считываемые mysqld_safe, в том числе как для MariaDB Server, так и для MySQL Server.
[safe_mysqld] Параметры, считываемые mysqld_safe, в том числе как для MariaDB Server, так и для MySQL Server.
[mariadb_safe] Параметры, считываемые mysqld_safe для MariaDB Server.
[mariadb-safe] Параметры, считываемые mysqld_safe для MariaDB Server. Доступно, начиная с MariaDB 10.4.6.

Группа параметров [safe_mysqld] в основном поддерживается для обратной совместимости. Вы должны переименовать такие группы параметров на [mysqld_safe] в установках MariaDB, чтобы избежать будущих сбоев, если эта совместимость будет удалена.

mysqld_safe также читает параметры из следующих групп параметров сервера из файлов параметров:

Группа Описание
[mysqld] Параметры, считываемые mysqld, которые включают как MariaDB Server, так и MySQL Server.
[server] Параметры, считываемые MariaDB Server.
[mysqld-X.Y] Параметры, считываемые определённой версией mysqld, которая включает как MariaDB Server, так и MySQL Server. Например, [mysqld-5.5].
[mariadb] Параметры, считываемые MariaDB Server.
[mariadb-X.Y] Параметры, считываемые определённой версией MariaDB Server.
[client-server] Параметры, считываемые всеми программами-клиентами MariaDB client programs и MariaDB Server. Это полезно для параметров, таких как сокет и порт, которые общие для сервера и клиентов.
[galera] Параметры, считываемые сервером MariaDB, поддерживающим Galera. Доступно на системах, скомпилированных с поддержкой Galera.

Например, если вы укажете параметр log_error в группе параметров сервера в файле параметров, как это:

[mariadb]
log_error=error.log

Тогда mysqld_safe также будет использовать это значение для своего параметра --log-error:

Настройка лимита открытых файлов

При использовании mysqld_safe, лимит открытых файлов системы можно изменить, указав параметр --open-files-limit в командной строке или в файле параметров. Например:

[mysqld_safe]
open_files_limit=4294967295

Значение параметра передаётся в ulimit -n. Обратите внимание, что вам необходимо запускать mysqld_safe от имени root, чтобы это работало правильно. Однако, в настоящее время вы не можете установить это значение в unlimited. См. MDEV-18410 по этому вопросу.

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

Настройка размера файла ядра

При использовании mysqld_safe, если вы хотите включить дампы ядер, лимит размера файла ядра системы можно изменить, указав параметр --core-file-size в командной строке или в файле параметров. Например:

[mysqld_safe]
core_file_size=unlimited

Значение параметра передаётся в ulimit -c. Обратите внимание, что вам необходимо запускать mysqld_safe от имени root, чтобы это работало правильно.

Настройка MariaDB для записи журнала ошибок в Syslog

При использовании mysqld_safe, если вы хотите перенаправить журнал ошибок в syslog, это можно легко сделать, используя параметр --syslog. mysqld_safe перенаправляет два типа сообщений журнала в syslog — собственные сообщения журнала и сообщения журнала для mysqld.

  • mysqld_safe настраивает свои собственные сообщения журнала на отправку в syslog-объект daemon. Уровень журнала для этих сообщений составляет либо notice или error, в зависимости от конкретного типа сообщения журнала. По умолчанию используется тег mysqld_safe.
  • mysqld_safe также настраивает сообщения журнала для mysqld на отправку в syslog-объект daemon Уровень журнала для этих сообщений составляет error. По умолчанию используется тег mysqld.

Иногда полезно добавлять суффикс к тегу syslog, например, если у вас запущено несколько экземпляров MariaDB на одном хосте. Чтобы добавить суффикс к каждому тегу syslog, используйте параметр --syslog-tag.

Указание mysqld

По умолчанию, mysqld_safe пытается запустить исполняемый файл, названный mysqld.

Вы также можете указать другой исполняемый файл для mysqld_safe вместо mysqld путём предоставления параметров --mysqld или --mysqld-version в командной строке или в файле параметров.

По умолчанию mysqld будет искаться в следующих местах в указанном порядке:

  • $BASEDIR/libexec/mysqld
  • $BASEDIR/sbin/mysqld
  • $BASEDIR/bin/mysqld
  • $PWD/bin/mysqld
  • $PWD/libexec/mysqld
  • $PWD/sbin/mysqld
  • @libexecdir@/mysql

Где $BASEDIR устанавливается параметром --basedir, $PWD — текущая рабочая директория, где был вызван mysqld_safe, а @libexecdir@ устанавливается во время компиляции параметром INSTALL_BINDIR для cmake.

Вы также можете указать расположение исполняемого файла, указав параметр --ledir в командной строке или в файле параметров.

Указание datadir

По умолчанию mysqld_safe будет искать datadir в следующих местах в указанном порядке:

  • $BASEDIR/data/mysql
  • $BASEDIR/data
  • $BASEDIR/var/mysql
  • $BASEDIR/var
  • @localstatedir@

Где $BASEDIR устанавливается параметром --basedir, а @localstatedir@ устанавливается во время компиляции параметром INSTALL_MYSQLDATADIR для cmake.

Вы также можете указать расположение datadir , указав параметр --datadir в командной строке или в файле параметров.

Ведение журнала

Когда вы используете mysqld_safe для запуска mysqld, mysqld_safe ведёт журнал в том же месте, что и mysqld.

mysqld_safe имеет несколько параметров, связанных с ведением журнала:

  • --syslog: Записывать сообщения об ошибках в syslog на системах, поддерживающих программу logger.
  • --skip-syslog: Не записывать сообщения об ошибках в syslog. Сообщения записываются в файл журнала ошибок по умолчанию (host_name.err в каталоге данных) или в указанный файл, если задан параметр --log-error.
  • --log-error=file_name: Записать сообщения об ошибках в указанный файл ошибок.

Если ни один из этих параметров не указан, используется значение по умолчанию --skip-syslog.

Если --syslog и --log-error указаны одновременно, выдаётся предупреждение, и --log-error имеет приоритет.

mysqld_safe также записывает уведомления в stdout и ошибки в stderr.

Редактирование mysqld_safe

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

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

NetWare

В NetWare mysqld_safe — это модуль NetWare Loadable Module (NLM), перенесённый из исходного скрипта оболочки Unix. Он запускает сервер следующим образом:

  1. Выполняет ряд проверок системы и параметров.
  2. Выполняет проверку таблиц MyISAM.
  3. Обеспечивает отображение MariaDB сервера на экране.
  4. Запускает mysqld, контролирует его и перезапускает, если он завершился ошибкой.
  5. Отправляет сообщения об ошибках из mysqld в файл host_name.err в каталоге данных.
  6. Отправляет вывод mysqld_safe на экран в файл host_name.safe в каталоге данных.

См. также

  • Как увеличить максимальное количество открытых файлов в Linux. Это может помочь в решении проблем, подобных предупреждению mysqld: Changed limits: max_open_files: 1024 (requested 5000)"
  • Параметры mysqld
  • systemd
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется MariaDB предварительно. Мнения, информация и мнения, выраженные в этом контенте, не обязательно отражают взгляды MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/mysqld_safe/

Spec-Zone.ru

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