MySQL重放的tcpcopy模块
mysql-replay-module是一个tcpcopy模块,能够在真实测试MySQL应用程序时,被用来重放MySQL的会话。
一、安装
1、获得辅助服务器上的intercept(tcpcopy-server)
1)git clone git://github.com/session-replay-tools/intercept.git
2)cd intercept
3)./configure --with-resp-payload
4)make
5)make install
2、获得生产环境上的tcpcopy(tcpcopy-client)
1)git clone git://github.com/session-replay-tools/tcpcopy.git
2)cd tcpcopy
3)git clone git://github.com/session-replay-tools/mysql-replay-module.git
4)./configure --set-protocol-module=mysql-replay-module
5)make
6)make install
二、使用
1、在运行MySQL应用程序的测试服务器上
设置路由命令将响应报文路由设置到辅助服务器(装有tcpcopy-server)上
例如:假设 10.110.12.18是辅助服务器IP地址,10.110.12.15是mysql客户端ip地址。我们设置如下的路由命令来将所有的响应路由到10.110.12.15的助理服务器上。
route add -host 10.110.12.15 gw 10.110.12.18
2、运行intercept的辅助服务器上(root权限或者socket通信权限是必须的)
./intercept -F <filter> -i <device,>
请注意,过滤器格式与pcap过滤器相同。
例如:./intercept -i eth0 -F 'tcp and src port 3306' -d
intercept将捕获基于TCP应用的响应,该应用监听在设备的3306端口上
3、生产环境服务器(root权限或者socket通信权限是必须的)
1)在安装目录的conf/plugin.conf中设置用户名密码
格式:user user1@password1,user2@password2,...,userN@passwordN;
例如:user root@123456;
2)启动tcpcopy
./tcpcopy -x localServerPort-targetServerIP:targetServerPort -s <intercept server,>
例如(假设10.110.12.17是测试环境IP地址)
./tcpcopy -x 3306-10.110.12.17:3306 -s 10.110.12.18
tcpcopy将抓取当前服务器的MySQL数据包(假设MySQL监听在3306端口上),做一些必须的修改,然后发送到测试环境10.110.12.17的3306端口上(即测试环境的MySQL),并且连接10.110.12.18来通知intercept把响应包发送给它(当前tcpcopy)
三、注意
1、测试环境和生产环境的MySQL实例必须拥有相同的用户账号和权限,但是密码可以不同
2、只有完整的session才能够被重放
四、历史版本
2014.09 v1.0 mysql-replay-module released
要了解TCPCopy的安装及使用请参考:http://blog.csdn.net/qq_21033663/article/details/53033621