mysqld_safe
Начиная с MariaDB 10.4.6, mariadbd-safe является символической ссылкой на mysqld_safe.
Начиная с 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. Он запускает сервер следующим образом:
- Выполняет ряд проверок системы и параметров.
- Выполняет проверку таблиц MyISAM.
- Обеспечивает отображение MariaDB сервера на экране.
- Запускает mysqld, контролирует его и перезапускает, если он завершился ошибкой.
- Отправляет сообщения об ошибках из mysqld в файл host_name.err в каталоге данных.
- Отправляет вывод mysqld_safe на экран в файл host_name.safe в каталоге данных.
См. также
-
Как увеличить максимальное количество открытых файлов в Linux. Это может помочь в решении проблем, подобных предупреждению mysqld:
Changed limits: max_open_files: 1024 (requested 5000)" - Параметры mysqld
- systemd
© 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/