首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

修改 MySQL 錯誤日誌文件路徑的正確姿勢

     編輯:MySQL 綜合教學

現象

修改 /etc/my.cnf 的 log-error 無效,日誌仍寫入 /var/log/mysqld.log。

根因

CentOS/RHEL 系統啟動腳本 /etc/init.d/mysqld 通過 get_mysql_option 從 my.cnf 讀取參數,但啟動參數優先級高於配置文件。腳本中默認值硬編碼:

get_mysql_option mysqld_safe log-error "/var/log/mysqld.log"
errlogfile="$result"

若 my.cnf 未顯式設置,腳本直接使用默認值傳給 mysqld_safe。

解決方法(二選一)

方法一:修改啟動腳本(永久生效,升級包可能覆蓋)

vim /etc/init.d/mysqld
# 找到
get_mysql_option mysqld_safe log-error "/var/log/mysqld.log"
# 改為
get_mysql_option mysqld_safe log-error "/new/path/mysql-error.log"
# 保存後重啟服務
service mysql restart

方法二:在 my.cnf 顯式設置並確保 mysqld_safe 讀取(推薦)

# /etc/my.cnf
[mysqld_safe]
log-error = /new/path/mysql-error.log

[mysqld]
# 可選:也同步寫這裡防止直接啟動 mysqld 時生效
log-error = /new/path/mysql-error.log

重啟服務:

service mysql restart
# 驗證
ps aux | grep mysqld
# 應見 --log-error=/new/path/mysql-error.log

驗證日誌新路徑生效

tail -f /new/path/mysql-error.log
# 應看到啟動信息

補充:通用查詢日誌與慢查詢日誌路徑修改

[mysqld]
general_log_file = /new/path/general.log
slow_query_log_file = /new/path/slow.log

動態生效(無需重啟):

SET GLOBAL general_log_file = '/new/path/general.log';
SET GLOBAL slow_query_log_file = '/new/path/slow.log';

避坑提醒

  • 修改腳本後 yum update mysql-server 可能覆蓋,建議配合 chattr +i /etc/init.d/mysqld 鎖定或建立 RPM 觸發腳本自動修補。
  • 日誌目錄需預先創建並 chown mysql:mysql,否則啟動失敗無明顯報錯。
  • 錯誤日誌不可動態修改,必須重啟;通用/慢查詢日誌支援動態修改文件路徑(MySQL 5.6+)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved