可以在Apache.conf
文件my.ini
,但是对于 MySQL 来说,有没有办法在 MySQL 配置文件 ( / )中使用它们my.cfg
?
我能找到的最接近的东西是MySQL 手册页其中提到了一些变量,但没有说明如何使用它们,或者它们是系统变量还是内部变量。
就我而言,我需要一种方法来指定日志应存储在系统临时目录的子目录中,但不知道如何指示这一点。例如:
log-error="${temp}/MySQL_Logs/error.log"
innodb_log_group_home_dir="%temp%/PS_Logs/Logs/MySQL/"
?
答案1
您无法在配置文件中执行此操作,但您可以修改启动命令以以这种方式进行设置。
例如:
在控制台中设置 LOG_DIR="your log dir"。
然后修改启动脚本以包含log-error选项。
mysqld --log-error=$LOG_DIR/error_log.log
答案2
可能不是最优雅的解决方案,但也许静态配置文件可以被动态内容取代:
您可以在日志文件路径中放置一个 FIFO。在启动 MySQL 之前,您必须启动一个迷你守护进程,它会无限循环地向该 FIFO 写入数据。竞争条件在这里不应该成为问题。
守护进程会将两个数据块写入 FIFO,首先是一条虚拟行,如 # environment perceive config file,以便打开 FIFO。第一次写入返回后,它会获取读取进程的 PID(例如通过 fuser),从 /proc/${PID}/environ 获取文件中出现的变量,创建命令(例如 sed)以替换引用,并将 sed 输出写入 FIFO。