您的位置:首页 > 数据库 > MySQL

MYSQL tee的功能测试

2012-10-11 09:47 246 查看
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 ,希望知道的不吝赐教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: