qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

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 阅读(1491) 评论(0)  编辑  收藏 所属分类: 数据库


只有注册用户登录后才能发表评论。


网站导航:
 
<2013年7月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜