Mysql

如何在不重新啟動的情況下將內容寫入 MySQL 錯誤日誌

  • July 31, 2017

我想在沒有服務停止或啟動的情況下隨意寫入 MySQL 5.5 錯誤日誌。請注意,我不關心寫入錯誤日誌的內容,只要寫入內容即可。

我嘗試執行錯誤查詢並設置不存在的系統變數,但這些操作似乎不會在錯誤日誌中生成條目。

我怎樣才能做到這一點?

錯誤查詢和其他無效操作通常僅在沒有客戶端連接將錯誤寫入時寫入錯誤日誌……例如當不是客戶端執行緒的執行緒遇到錯誤……或來自事件調度程序時.

從計劃的事件中,SIGNAL可用於拋出將寫入 MySQL 錯誤日誌的錯誤和警告。而且,當然,您現在可以“安排”一個事件只執行一次。

mysql> USE test;
Database changed
mysql> CREATE EVENT test_error_log ON SCHEDULE AT NOW() ON COMPLETION NOT PRESERVE 
      DO SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'hi from the error log';
Query OK, 0 rows affected (0.01 sec)

$ sudo tail /usr/local/mysql/data/hostname.err
--8<-- snip --8<--
150121 14:25:06 [ERROR] Event Scheduler: [sqlbot@%][test.test_error_log] hi from the error log

或者,有一個可以寫入錯誤日誌的第 3 方使用者定義函式: https ://github.com/mysqludf/lib_mysqludf_loglog_error()

這是假設你不是“真的”想要觸發 MySQL 禮貌地關閉並重新打開日誌文件……這是用FLUSH ERROR LOGS;.

引用自:https://dba.stackexchange.com/questions/89818