可以在Apache .conf
文件中使用环境variables,但是MySQL有什么方法可以在MySQLconfiguration文件( my.ini
/ my.cfg
)中使用它们?
我能find的最接近的是一个MySQL的man页面 ,它提到了一些variables,但并不指出如何使用它们,或者甚至是系统variables或内部variables。
在我的情况下,我需要一种方法来指定日志应该存储在系统临时目录的子目录中,但不知道如何指示。 例如:
log-error="${temp}/MySQL_Logs/error.log" innodb_log_group_home_dir="%temp%/PS_Logs/Logs/MySQL/" ?
你不能在configuration文件中做,但你可以修改启动命令来设置它们。
例如:
在控制台中设置LOG_DIR =“你的日志目录”。
然后修改启动脚本以包含日志错误选项。
mysqld --log-error=$LOG_DIR/error_log.log
可能不是最优雅的解决scheme,但也许静态configuration文件可以被dynamic内容replace:
您可以在日志文件path中放入一个FIFO。 在启动MySQL之前,您必须启动一个小型守护进程,以无限循环方式写入该FIFO。 比赛条件不应该成为一个问题在这里。
守护进程会向FIFO中写入两个数据块,首先是一个虚拟线路,如#环境感知configuration文件,以打开FIFO。 一旦第一次写入返回,它将获得读取过程的PID(例如,通过fuser),从/ proc / $ {PID} / environ中获取文件中出现的variables,创build例如sed的命令来replace引用并将sed输出写入FIFO。