注册 登录  
 加关注

网易博客网站关停、迁移的公告:

将从2018年11月30日00:00起正式停止网易博客运营
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

老狗的博客

尽管每一步都很微小,但我确认我在进步

 
 
 

日志

 
 
关于我
sky

认真生活,努力工作 热爱技术,关注DB,存储,分布式,中间层,java,c++,php

网易考拉推荐

mysql server/client communication protocol [command packet分析]  

2012-05-10 11:16:52|  分类: mysql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

mysql internals
command packet

mypump(我的开源mysql行复制协议解析程序),其实已经写完很长时间了,总是在想着总结一下,也想着能不能继续完成其他的几个开源代码,目前想法如下:
1. 封装Lucene提供类似于db的全模糊查询(可以和mypump结合,实现实时全模糊查询功能)
2. 封装redis,实现mysql到redis/memcache的实时复制
3. 实现mysql的并行行复制

不知道能不能继续写下去,看机会吧

Mysqlcommand packet的种类有很多,下面一一列出,以供参考

 

Name

解释

参数

Com_quit

关闭当前的连接

 

Com_init_db

使用某个db,类似于user xxx;

 

Com_query

用于执行sql语句

 

Com_field_list

展示某个表的列,类似于show fields from

 

Com_create_db

创建DB

 

Com_drop_db

删除DB

 

Com_refresh

类似于c api mysql_refresh()

 

Com_shutdown

关闭mysql server

0x00...SHUTDOWN_DEFAULT                    0x01...SHUTDOWN_WAIT_CONNECTIONS                     0x02...SHUTDOWN_WAIT_TRANSACTIONS                      0x08...SHUTDOWN_WAIT_UPDATES   0x10...SHUTDOWN_WAIT_ALL_BUFFERS                          0x11...SHUTDOWN_WAIT_CRITICAL_BUFFERS                     0xFE...KILL_QUERY                0xFF... KILL_CONNECTION

Com_statistics

获取mysql server的一些统计数据

 

Com_process_info

等价于mysqlshow processlist

 

Com_process_kill

等价于sql statement(kill pid)

 

Com_debug

mysql服务器dump出来一些debug信息

没有参数

Com_ping

用于测试mysql connection,重置mysql inactivity counter

 

Com_change_user

在不关闭连接的情况下改变用户

 

Com_binlog_dump

当一个复制连接建立的时候,这是最后一个从client发给server的请求

 

Com_table_dump

等价于从client端发起Load table..from master statement语句

 

Com_register_slave

如果slave设置了report_host,在建立复制连接的时候,会发这个包

 

Com_prepare

Prepare一个sql statement

 

Com_execute

 

 

Com_long_data

在使用mysql_stmet_send_log_data()的时候

 

Com_close_stmt

Destroy a prepared statement.

 

Com_reset_stmt

Reset (empty) the parameter buffers for a prepared statement

 

Com_set_option

he parameter is a 16-bit integer. There is an ENUM type enum_mysql_set_option defined in mysql_com.h:

 

Com_fetch_stmt

Fetch result rows from a prepared statement.

 

 

 

从抽象意义上来看,command packet的格式分为两个方面,一个是command,另外一个是参数

 

从行复制协议来看,我们要使用com_binlog_dump命令来从从server dump数据

1byte

command

0x12

4byte

binlog position

 

2byte

binlog flag

 

4byte

server id

 

nbyte

binlog filename

 

 

If the binlog file name is not given, it defaults to the first binlog available on the master.

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

历史上的今天

评论

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

页脚

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