MYSQL tee的功能測試
Mysql的tee功能是用來記錄用戶的操作記錄的,由于對mysql進行大量的更改操作,比如刪除,修改,添加等動作等等,涉及到生產環境中時候,這些操作有時候很有必要把整個操作記錄下來,以便核對查找。Tee功能類似于oracle中的spool,下面對幾種tee的不同保方式測試:
一、直接指定文件
出于這種是由于之前使用spool的時候每次spool時候都會使用spool '文件路徑',結束后便用spool off即可。下面是測試截圖:
初看結果,好像是正確指定了文件和路徑,那么我們去這個路徑是否看到這個tee.log呢,進入mysql用戶根目錄下的tmp目錄查看,已經生成了tee.log文件,然后運行一些簡單操作測試是否記錄成功;
查看tee.log文件;發現都是實時記錄了所有的操作記錄和結果。跟oracle有點不同的是,oracle每次都是在spool off之后才生成(應該沒有記錯)。關閉即用notee或者\t命令。
二、通過啟動帶參數--tee
啟動使用命令:mysql -uroot -p --tee=/home/mysql/tmp/ceshi.log -S /usr/local/mysql/tmp/3306/mysql.sock登錄成功后,按正常同樣再測試一次操作記錄
查看ceshi.log,所有記錄均實時記載。
三、通過更改設置配置文件my.cnf
測試環境,先kill掉mysqld服務(生產環境一般沒有在my.cnf中增加該配置,這里僅僅只是用來測試)。
關閉mysql,然后修改mysql的配置文件中的[client]選項段,添加以下內容:
[client]
port = 3306
socket = /usr/local/mysql/tmp/3306/mysql.sock
default-character-set = utf8
tee = /home/mysql/tmp/result.log
再次啟動mysql,查看/home/mysql/tmp/下是否生成了result.log文件,一看沒有,奇怪了,按理說這樣的方式是正確的,在網上找了下大部分都講到了這三點,也沒有見誰說這種方式不行。會不會是版本有問題,我本機裝的是32位的mysql 5.1.57版本。于是換臺機器,換個64位的mysql 5.1.50版本測試下;
一樣的配置一樣重新啟動了mysql。測試后發現還是沒有出現結果記錄;
原來寫入mysql配置文件中,在不同版本中有差異,目前有一些有些版本的mysql數據庫的tee功能在寫入配置文件的時候不生效,但是支持終端下命令行直接操作,例如上面2個版本都是沒有效果的,所以寫入配置文件中并不保險。目前還不清楚原因何在,猜測也有可能是某些版本存在bug ,希望知道的不吝賜教。
posted on 2013-07-16 10:26 順其自然EVO 閱讀(1494) 評論(0) 編輯 收藏 所屬分類: 數據庫