如何在Python中使用MySQL代理
如何用Python写一个脚本来跟踪MySQL Proxy的查询。 我试着找相关的信息,但没有找到关于Python的任何资料,请大家帮我写一个Python脚本,用于跟踪MySQL Proxy的查询。同时,我也想了解一下MySQL Proxy的工作原理和使用方法。
2 个回答
如何用Python写脚本来追踪MySQL Proxy的查询。
你可以从 https://gist.github.com/simonw/1039751 下载脚本,并把它保存为文件 monitor.lua,然后运行代理:
mysql-proxy --proxy-lua-script=monitor.lua
接着你可以写一个Python脚本,分析文件中的所有代理查询。
默认情况下,这个脚本的输出会被写入 mysql.log 文件,或者你也可以直接在 LUA 脚本(monitor.lua)中修改这个设置。
MySQL Proxy 只支持 LUA 脚本来构建插件,所以如果你想对某些特定的查询进行操作,你需要了解 LUA,或者找到最适合你具体情况的脚本。
有一个叫做 mysql-proxy-python 的东西。不过,它不能和我在Ubuntu上用的mysql-proxy版本一起编译。
我按照这样的方式配置mysql-proxy-python ./configure --prefix=/var/tmp/mysqlproxy --with-python=python2.7 --with-gnu-ld --with-mysql-proxy-src=/var/tmp/mysql-proxy-0.8.5/
,然后我需要在config.h文件里至少改这个:
/* make sure the off_t is 32bit */
#ifndef _FILE_OFFSET_BITS
#define _FILE_OFFSET_BITS 32
#endif
#define HAVE_ULONG
接着我可以运行 env PYTHONPATH=/var/tmp/mysql-proxy-python/lib/ mysql-proxy --plugin-dir=/var/tmp/mysqlproxy/lib/mysql-proxy/plugins --plugins=pyproxy --pyproxy-backend-addresses=127.0.1:3306 --pyproxy-python-script=/var/tmp/mysql-proxy-python/examples/rewrite.py
。
在执行了 make
和 make install
之后,我可以这样连接到代理 mysql --host=127.1 --user=root --password=root --port 2046 mysql
。注意这个端口号,我是通过 netstat -tulpen
找到的。