注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的博客

等闲识得东风面,万紫千红总是春!

 
 
 

日志

 
 

mysql-proxy使用经验  

2009-02-13 15:47:11|  分类: mysql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.安装

portinstall mysql-proxy


2.启动

mysql-proxy –proxy-lua-script=/usr/local/share/mysql-proxy/你自己的lua脚本.lua


3.需求

非windows监控数据保存在status表中,windows监控数据保存在win_status表中,两张表结构完全相同

+—————-+———————–+——+—–+———————+—————-+

| Field | Type | Null | Key | Default | Extra |

+—————-+———————–+——+—–+———————+—————-+

| StatusID | int(8) unsigned | NO | PRI | NULL | auto_increment |

| ServerID | smallint(4) unsigned | NO | | 0 | |

| IpAddress | varchar(15) | NO | MUL | | |

| OtherIp | varchar(48) | YES | | NULL | |

| CpuIdle | tinyint(2) unsigned | YES | | NULL | |

| Uptime | varchar(26) | YES | | NULL | |

……………….

想实现,根据一个IP在status表中先查询,如果status中不存在,则查询win_status表,用户发送的都是统一的SQL语句,类似:

SELECT * FROM status WHERE IpAddress=’x.x.x.x’ ORDER BY Time DESC LIMIT 1;


重点lua script如下:

1.hook查询语句,截获用户的sql语句,加以分析

function read_query_result (inj)


2.使用proxy.tokenize,拆分用户的SQL语句

local tokens = proxy.tokenize(inj.query)

for i = 1, #tokens do

print (i,tokens[i][’token_id’] , tokens[i][’token_name’], tokens[i][’text’] )

end


3.发送一条重新构造的sql

proxy.queries:append(1, string.char(proxy.COM_QUERY) .. winsql )

return proxy.PROXY_SEND_QUERY

  评论这张
 
阅读(393)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017