Назад | Перейти на главную страницу

Переменные среды в файле конфигурации MySQL?

Можно использовать переменные среды в Apache .conf файл, но как насчет MySQL, есть ли способ использовать их в файле конфигурации MySQL (my.ini/my.cfg)?

Самое близкое, что я смог найти, было справочная страница MySQL в котором упоминаются некоторые переменные, но не указывается, как их использовать, и являются ли они даже системными или внутренними переменными.


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

log-error="${temp}/MySQL_Logs/error.log"
innodb_log_group_home_dir="%temp%/PS_Logs/Logs/MySQL/"
?

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

например:

Установите LOG_DIR = "ваш каталог журнала" в консоли.

Затем измените сценарий запуска, включив в него опцию log-error.

mysqld --log-error=$LOG_DIR/error_log.log

Возможно, не самое элегантное решение, но, возможно, файл статической конфигурации можно заменить динамическим содержимым:

Вы можете поместить FIFO в путь к файлу журнала. Перед запуском MySQL вам нужно будет запустить мини-демон, который записывает в этот FIFO в бесконечном цикле. Условия гонки здесь не должны быть проблемой.

Демон будет записывать два блока данных в FIFO, сначала пустую строку, например, # конфигурационный файл с учетом среды, за которым следует, чтобы открыть FIFO. Как только эта первая запись вернется, он получит PID процесса чтения (например, через fuser), получит переменные, которые встречаются в файле, из / proc / $ {PID} / Environment, создаст команды для, например, sed для замены ссылок и записи вывода sed в FIFO.