MYSQL tee的功能测试

发表于:2013-7-15 11:05

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:wlzjsj    来源:51Testing软件测试网采编

  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 ,希望知道的不吝赐教。

《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • dplslab001
    2020-4-29 11:35:08

    文章写的很好,可以认识一下吗?我是DPLS Lab实验室,从事TEE功能与安全测试方向的,我的wx:dulei8772

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号