


| 文件類型 | 缺省名 | 文件內容 |
| 進程id | hostname.pid | 服務器進程id |
| 錯誤日志 | hostname.err | 啟動和關閉事件和錯誤狀態 |
| 常規日志 | hostname.log | 連接/斷開事件和查詢信息 |
| 更新日志 | hostname.nnn | 修改表的內容或結構的所有查詢的文本 |
服務器在啟動時將它的進程id(pid )寫入pid 文件,并在關閉時刪除該文件。pid 文件是一種方法,用這種方法,其他的進程可以找到該服務器。例如,如果您在系統關閉時運行mysql.server 腳本來關閉mysql服務器,則該腳本將檢查pid 文件以確定它需要哪個進程來發送一個終止信號。
錯誤日志由safe_mysqld 產生,作為服務器標準錯誤輸出結果的重定向,它包含服務器寫入stderr 的所有消息。這意味著僅當通過調用safe_mysqld 啟動服務器時,錯誤日志才存在(總之,這是啟動服務器的首選方法,因為,如果由于一個錯誤使錯誤日志存在,則
s a f e _ mysqld將重新啟動服務器)
常規日志和更新日志是可選的,可以用--log 和--log-update 服務器選項開啟需要的日志類型。
常規進程提供有關服務器運作的常規信息:誰從哪里進行了連接,以及他們發布了什么查詢。更新日志也提供查詢信息,但僅僅是修改過的數據庫內容的查詢信息。更新日志的內容是一些sql 語句,這些語句可以通過將它們輸入到mysql客戶機程序來運行。如果出現崩
潰且必須轉到備份文件時,更新日志將是有用的,因為您能夠通過將更新日志輸入到服務器來重復這些自崩潰以來所完成的更新操作。這將使得數據庫恢復到崩潰發生時所處的狀態上。
下面是一個實例,它是作為一個短客戶機會話的結果出現在常規日志中的信息中的,這個會話在test 數據庫中創建一個表,并插入一行到該表中,然后刪除該表:
常規日志包含日期和時間、服務器線程id、事件類型以及特定事件信息的列。
同一個會話出現在如下的更新日志中:
對于更新日志,日志的擴展格式是可用的,即使是用--log - long - format 選項。擴展的日志提供有關誰何時發布查詢的信息。當然,這將使用更多的磁盤空間,但是,如果您不將更新日志的內容與常規日志中的連接事件相聯系就想知道誰正在做什么的話,擴展日志或許是可用的。
對于剛才顯示出的會話,擴展日志將產生下列信息:
確保日志文件的安全且不被用戶任意讀取是個好注意。常規日志和更新日志都包含有諸如口令這樣的敏感信息,這是因為它們包含了查詢的文本。下面是您不想讓任何人都能讀取的日志項,因為它顯示了root 用戶的口令:
有關檢查可設置數據目錄許可權的信息,請參閱第12 章。數據目錄安全的簡短指令由下列命令組成:
% chmod 700 datadir
以擁有該數據目錄的unix 用戶身份來運行此命令。還要確保服務器以該用戶身份運行,否則此命令不僅將其他用戶排斥在該數據目錄之外(您想要的),還將阻止服務器訪問您的數據庫(您不要的)。
狀態文件出現在數據目錄的最高級,就像數據庫目錄一樣,因此您可能會想到那些文件的名字是否會相互混淆或者被誤認為是數據庫名(例如,當服務器正在執行s h o w database 語句時)。答案是:不會的。狀態和日志信息存儲在文件中,而數據庫是目錄,因此可執行程序可以將它們與一個簡單的stat() 調用相區別(是服務器告訴它們怎樣區分的)。如果您正在監視數據目錄,則可以通過使用ls -l 將狀態文件從數據庫目錄中區分開來,并且檢查該模式信息的第一個字符以查看它是‘ -’還是‘d’:
您還可以通過查看名字而簡單地告之:所有狀態文件名都包含一個句點,但是數據庫目錄名沒有句點(句點不是數據庫名的合法字符)。
有關日志文件維護和循環技術的信息,請參閱第11章的內容。
新聞熱點
疑難解答