Mysql

修復mysql慢查詢日誌錯誤13的最佳實踐

  • August 6, 2011

CentOS 5.5 MySQL 5.5 通過 yum 儲存庫安裝

$$ ERROR $$無法使用 /var/log/mysqld.slow.log 進行日誌記錄(錯誤 13)。在 MySQL 伺服器程序的整個持續時間內關閉註銷。再次打開它:修復原因,關閉 MySQL 伺服器並重新啟動它。

使用 MySQL 5.5 的標準安裝(特別是來自 webtatic 儲存庫),由於權限問題,慢查詢日誌無法開始實際記錄。如果我預先創建了一個副本並且chown它屬於使用者:mysql 和組:mysql,那麼它可以正常工作。

在同一個目錄 ( /var/log) 中,創建和記錄到 mysql.log 和 mysql.error.log 沒有問題。

顯然我有一個hackish修復它,但我希望能夠在它上面使用logrotate,而不需要另外需要logrotate來重複hackery。(唯一比駭客更糟糕的是不得不重複駭客。)

有誰知道解決這個問題的最佳做法是什麼?

在您使用 logrotate 將其移開並發送 HUP 後,聽起來 mysql 程序(mysqld_safe我相信)無法*創建日誌文件?*如果我離開這裡,請告訴我。

假設我沒有離開,這裡有幾個選擇:

  • 將日誌移動到與 mysqld_safe 程序相同的使用者所擁有的目錄中。例如,創建一個/var/log/mysqld/目錄並將日誌文件保存在那裡。如果目錄是 mysql:mysql 700 則可以毫無問題地創建新文件。
  • 使用 copy/truncate logrotate 方法而不是 move/SIGHUP 方法。複製/截斷方法會將目前日誌文件 ( mysqld.slow.log) 複製到新文件 ( mysqld.slow.log.1),然後將原始文件截斷為零字節。如果您出於某種原因不想中斷正在寫入日誌的程序,這很有用。當然,缺點是在將原始文件抹回零字節之前將原始文件複製到新文件會產生額外的磁碟成本。這是通過將copytruncate選項添加到該文件的 logrotate 節並刪除不再需要的postrotate部分來完成的。

引用自:https://serverfault.com/questions/279022