MysqlProtocolAnalyzer
MysqlProtocolAnalyzer 是一个对Mysql的通讯协议的包进行解析的库,纯java编写,输入文件可以是任意的16进制的网络数据包文本文件,当然需要一定的预处理才能使用。本库是默认处理的是tcpdump产生的16进制的数据文件
项目背景
最近在做一个关于数据库的离线式容灾项目,近几年来,容灾已经成为信息数据中心建设的热门课题。很多容灾技术也快速发展起来,对用户来说也有很广阔的选择余地。但由于容灾方案的技术复杂性和多样性,一般用户很难搞清其中的优劣以确定如何选择最适合自己状况的容灾解决方案。
目前有很多种容灾技术,分类也比较复杂。但总体上可以区分为离线式容灾(冷容灾)和在线容灾(热容灾)两种类型。
而我们的项目是一种离线式的容灾,一个数据库集群,在有主备同步的状态下,如果备集群当机了,就会出现主备不一致的状态,当然只要主机群可用那可以通过很多种当时恢复备集群的数据,但是在当主集群发生不可恢复的灾难是,所以的数据都丢失。于是我们采用一种基于网络流量的离线式的容灾方案。首先在集群部署的时候在中间的网络网关或者路由器上的流量(网络数据包)进行抓取,分离出里面对于数据库主机群的数据包导流到我们指定的服务器Q上去,并不是拦截,主机群的网络数据完全不受影响,在服务器Q上安装流量包抓包程序将数据包写入到本地文件。在出现主备不一致的情况时,使用MysqlProtocolAnalyzer对生成的网络包数据进行解析,最终会生成其中主备差异的事务数据(一系列的sql语句),以便恢复备集群。
功能介绍
MysqlProtocolAnalyzer是根据MySql