CN110502391A - 一种MySQL数据库中SQL信息的抓取方法和系统 - Google Patents

一种MySQL数据库中SQL信息的抓取方法和系统 Download PDF

Info

Publication number
CN110502391A
CN110502391A CN201910628326.1A CN201910628326A CN110502391A CN 110502391 A CN110502391 A CN 110502391A CN 201910628326 A CN201910628326 A CN 201910628326A CN 110502391 A CN110502391 A CN 110502391A
Authority
CN
China
Prior art keywords
data packet
data
server
client
sql
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910628326.1A
Other languages
English (en)
Inventor
籍天扬
魏一凡
严洁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suning Cloud Computing Co Ltd
Original Assignee
Suning Cloud Computing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suning Cloud Computing Co Ltd filed Critical Suning Cloud Computing Co Ltd
Priority to CN201910628326.1A priority Critical patent/CN110502391A/zh
Publication of CN110502391A publication Critical patent/CN110502391A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开一种MySQL数据库中SQL信息的抓取方法,属于计算机技术领域,方法包括:在链路层中抓取MySQL监听端口中的TCP数据包;将数据包存入环形队列中,建立处理数据包的消费线程并在消费线程中对数据包进行重组以得到完整的TCP数据流;判断数据流中数据包的数据来源,根据数据来源对应的网络协议将对应的数据包进行还原以得到SQL文本及性能指标信息;其中,数据来源包括客户端和服务端。本方法通过使用TCP重组技术,模拟MySQL服务端和客户端之间的交互过程,完整地还原了SQL的执行链路,并且,利用MySQL协议对数据包进行解析,得到了SQL的文本、执行的时间、执行用户、返回数据行数等性能指标信息,实现了在协议层对MySQL中执行的所有类型的SQL的全量信息的抓取。

Description

一种MySQL数据库中SQL信息的抓取方法和系统
技术领域
本发明属于计算机技术领域,尤其涉及一种MySQL数据库中SQL信息的抓取方法和系统。
背景技术
技术人员如果想知道MySQL数据库中有哪些SQL在执行,当前做法是通过TCPDUMP工具来抓取MySQL监听端口的数据包,再通过分析这些包中的文本来获取SQL的片段。然而,目前使用的方法,只能获取到SQL的文本和开始时间,有效信息量十分有限,比如价值很大的SQL执行时间,执行用户,返回的数据行数等指标都不能获取。此外,对于绑定变量的SQL语句,由于在协议传输的过程中,只传输一个SQL的ID号,因此目前使用的方法绑定变量的SQL语句的任何有效信息。
发明内容
为了解决现有技术的问题,本发明提出了一种MySQL数据库中SQL信息的抓取方法和系统,本方法通过使用TCP重组技术,模拟MySQL服务端和客户端之间的交互过程,完整还原了SQL的执行链路,并且,利用MySQL协议对SQL的执行链路中数据包进行解析,得到了SQL的文本及性能指标信息,实现了在协议层对MySQL中执行的所有类型的SQL的全量信息的抓取。
本发明实施例提供的具体技术方案如下:
第一方面,本发明提供一种MySQL数据库中SQL信息的抓取方法,所述方法包括:
在链路层中抓取MySQL监听端口中的TCP数据包;
将所述数据包存入环形队列中,建立处理所述数据包的消费线程并在所述消费线程中对所述数据包进行重组以得到完整的TCP数据流;
判断所述数据流中数据包的数据来源,根据所述数据来源对应的网络协议将对应的数据包进行还原以得到SQL文本及性能指标信息;其中,所述数据来源包括客户端和服务端。
在一些实施例中,判断所述数据流中数据包的数据来源,根据所述数据来源对应的网络协议将对应的数据包进行还原以得到SQL文本及性能指标信息具体包括:
根据所述数据包的源IP、源端口、目标IP和目标端口信息对数据包的数据来源进行判断,得到所述客户端的数据包及所述服务端的数据包;
创建用于处理所述客户端的数据包的客户端工作流以及用于处理所述服务端的数据包的服务端工作流,在所述客户端工作流、服务端工作流中,分别根据所述客户端、服务端的网络协议将对应的所述客户端的数据包、服务端的数据包进行解析,得到SQL文本及性能指标信息。
在一些实施例中,所述方法还包括:
对于绑定变量的SQL,在所述客户端工作流、服务端工作流中,根据所述客户端、服务端的网络协议分别解析所述客户端的数据包、服务端的数据包,得到ID,并根据在预编译时刻建立的所述ID与SQL的绑定关系,得到对应的SQL文本及性能指标信息。
在一些实施例中,在所述消费线程中对所述数据包进行重组以得到完整的TCP数据流具体包括:
获取用以建立通信连接的数据包以确定所述客户端与服务端完成通信连接;
获取所述数据包中的源IP、源端口、目标IP、目标端口信息以确定所述数据包属于同一TCP会话;
根据所述数据包的序列号,将同属于一个TCP会话的所述数据包进行排序,从而实现数据包重组以得到完整的TCP数据流。
在一些实施例中,所述方法还包括:
将所述SQL文本及性能指标信息推入输出端的环形队列;
建立输出端线程,将所述输出端的环形队列中的SQL文本及性能指标信息输出以便上层系统调用。
第二方面,本发明提供一种MySQL数据库中SQL信息的抓取系统,所述系统包括:
抓取模块,用于在链路层中抓取MySQL监听端口中的TCP数据包;
重组模块,用于将所述数据包存入环形队列中,建立处理所述数据包的消费线程并在所述消费线程中对所述数据包进行重组以得到完整的TCP数据流;
还原模块,用于判断所述数据流中数据包的数据来源,根据所述数据来源对应的网络协议将对应的数据包进行还原以得到SQL文本及性能指标信息;其中,所述数据来源包括客户端和服务端。
在一些实施例中,所述还原模块包括:
判断模块,用于根据所述数据包的源IP、源端口、目标IP和目标端口信息对数据包的数据来源进行判断,得到所述客户端的数据包及所述服务端的数据包;
解析模块,用于创建用于处理所述客户端的数据包的客户端工作流以及用于处理所述服务端的数据包的服务端工作流,在所述客户端工作流、服务端工作流中,分别根据所述客户端、服务端的网络协议将对应的所述客户端的数据包、服务端的数据包进行解析,得到SQL文本及性能指标信息。
在一些实施例中,所述解析模块具体用于:
对于绑定变量的SQL,在所述客户端工作流、服务端工作流中,根据所述客户端、服务端的网络协议分别解析所述客户端的数据包、服务端的数据包,得到ID,并根据在预编译时刻建立的所述ID与SQL的绑定关系,得到对应的SQL文本及性能指标信息。
在一些实施例中,所述重组模块包括:
连接模块,用于获取用以建立通信连接的数据包以确定所述客户端与服务端完成通信连接;
识别模块,用于获取所述数据包中的源IP、源端口、目标IP、目标端口信息以确定所述数据包属于同一TCP会话;
排列模块,用于根据所述数据包的序列号,将同属于一个TCP会话的所述数据包进行排序,从而实现数据包重组以得到完整的TCP数据流。
在一些实施例中,所述系统还包括:
输出模块,用于将所述SQL文本及性能指标信息推入输出端的环形队列;建立输出端线程,将所述输出端的环形队列中的SQL文本及性能指标信息输出以便上层系统调用。
本发明实施例具有如下有益效果:
本发明提出了一种MySQL数据库中SQL信息的抓取方法和系统,首先在链路层抓取MySQL协议包,通过使用TCP重组技术,对抓取MySQL协议包进行重组,模拟MySQL服务端和客户端之间的交互过程,完整还原了SQL的执行链路,随后通过MySQL协议对MySQL协议包进行还原,在还原时,通过解析并抓取客户端发起执行请求、服务端响应并返回执行请求过程的数据包,得到SQL文本及等性能指标信息;其中,对于绑定变量类型的SQL语句,在客户端在发起预编译请求时就抓取其SQL文本,并且将SQL文本与服务端返回的ID进行绑定,因此后期在客户端发起执行请求、服务端响应并返回执行请求时可根据ID来得到SQL文本及性能指标信息;
此外,由于本方法实现了在协议层对MySQL中执行的所有类型(普通文本类型和绑定变量类型)的SQL语句的全量信息的抓取,因此在数据库出现业务异常时,能够第一时间定位到当前数据库中有哪些问题SQL正在运行,并且,本方法使得通过分析MySQL中日常运行的SQL来诊断数据库的性能成为可能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是一个实施例中一种MySQL数据库中SQL信息的抓取方法的流程图;
图2是一个实施例中判断数据流中数据包的数据来源,根据数据来源对应的网络协议将对应的数据包进行还原以得到SQL文本及性能指标信息的流程图;
图3是一个实施例中在消费线程中对数据包进行重组以得到完整的TCP数据流的流程图;
图4是一个实施例中一种MySQL数据库中SQL信息的抓取系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提出了一种MySQL数据库中SQL信息的抓取方法和系统,通过使用TCP重组技术,模拟MySQL服务端和客户端之间的交互过程,完整还原了SQL的执行链路,并且,利用MySQL协议对SQL的执行链路中的数据包进行解析,最终得到了SQL的文本及性能指标信息,实现了在协议层对MySQL中执行的所有类型的SQL的全量信息的抓取。
如图1所示,一种MySQL数据库中SQL信息的抓取方法,包括如下步骤:
S101、在链路层中抓取MySQL监听端口中的TCP数据包。
具体的,通过LIBPCAP捕获函数包抓包,其原理是利用原始套接字从链路层驱动程序中抓取经过MySQL监听网卡的网络数据包的拷贝。随后,通过BPF过滤器删选监听端口的网络数据包,得到TCP数据包。
通过LIBPCAP捕获函数包,利用原始套接字从链路层驱动程序中抓取经过MySQL监听网卡的网络数据包的拷贝包括如下步骤:
a、网卡驱动程序判断网卡接受的网络数据包的前6个字节(即目的主机的MAC地址)是否与网卡的地址一致;
b、当一致时,通过协议栈获取符合指定协议的网络数据包并对其进行拷贝,将拷贝数据包传输至原始套接字口;其中,原始套接字口与MySQL的监听端口(本实施例中为3306端口)进行预绑定。
其中,链路层原始套接字可以直接用于接收和发送链路层的MAC帧,在发送时需要由调用者自行构造和封装MAC首部。链路层原始套接字调用socket()函数创建。socket()函数具体表示为:
socket(PF_PACKET,type,htons(protocol))
其中,第一个参数指定协议族类型为PF_PACKET,第二个参数type可以设置为SOCK_RAW或SOCK_DGRAM,第三个参数为协议类型。
当参数type设置为SOCK_RAW时,套接字接收和发送的数据都是从MAC首部开始的,在发送时需要由调用者从MAC首部开始构造和封装报文数据;
当参数type设置为SOCK_DGRAM时,套接字接收到的数据报文会将MAC首部去掉,同时在发送时也不需要再手动构造MAC首部,只需要从IP首部(或ARP首部,取决于封装的报文类型)开始构造,而MAC首部的填充由内核实现。
S102、将数据包存入环形队列中,建立处理数据包的消费线程并在消费线程中对数据包进行重组以得到完整的TCP数据流。
将抓取的包放入一个环形队列,开启一个处理数据包的消费线程,在消费线程中,使用LIBTINS工具将抓取到的数据包进行TCP数据流的重组;
其中,TCP数据流是完整的一次TCP\IP链接,其包含多个数据包,这些数据包的负载(去除所有的协议头所剩下的数据)描述了完整的一次动作,即,描述了客户端和服务端的交互过程,也就是SQL的执行链路。
S103、判断数据流中数据包的数据来源,根据数据来源对应的网络协议将对应的数据包进行还原以得到SQL文本及性能指标信息;其中,数据来源包括客户端和服务端。
对于重组好的TCP数据流,从方向上来说,同方向的数据包的IP和端口是一致的,因此根据数据包的IP和端口,可以分别确认是来自于客户端的数据包还是来自服务端的数据包。根据客户端的网络协议、服务端的网络协议,分别对对应的数据包还原从而可以得到SQL文本及性能指标信息。其中,性能指标信息包括执行的时间、执行用户、返回的数据行数等。
在其中一个实施例中,如图2所示,上述判断数据流中数据包的数据来源,根据数据来源对应的网络协议将对应的数据包进行还原以得到SQL文本及性能指标信息可以包括如下包括:
S201、根据数据包的源IP、源端口、目标IP和目标端口信息对数据包的数据来源进行判断,得到客户端的数据包及服务端的数据包。
具体的,该步骤可以包括:
S2011、判断数据包的目标端口是否与MySQL监听端口一致,当一致时,数据包的数据来源为客户端,当不一致时,数据包的数据来源为服务端。
S2012、根据客户端的数据包的源IP和源端口,确定客户端的数据包的具体发起对象。
其中,不同的客户端具有不同的源IP和源端口,通过对数据包的源IP和源端口进行哈希计算,确定数据包具体由哪一个客户端发出。
S2013、根据服务端的数据包的目标IP和目标端口,确定服务端的数据包的具体返回对象。
具体的,对服务端执行SQL语句得到的数据包的目标IP和目标端口进行哈希计算,从而确定返回至哪个客户端。
S202、创建用于处理客户端的数据包的客户端工作流以及用于处理服务端的数据包的服务端工作流,在客户端工作流、服务端工作流中,分别根据客户端、服务端的网络协议将对应的客户端的数据包、服务端的数据包进行解析,得到SQL文本及性能指标信息。
具体的,根据客户端的网络协议解析客户端发起的执行请求的数据包,得到SQL文本并记录开始时间,根据服务端的网络协议解析服务端返回的响应执行请求的数据包,得到SQL语句的影响行数、返回数据行数、结束时间等执行信息;
将客户端解析得到的数据及服务端解析得到的数据进行整合,从而得到SQL文本以及性能指标信息;其中,性能指标信息包括执行的时间、执行用户、返回数据行数等至少一种,执行的时间由SQL语句结束时间减去SQL语句开始时间得到。
在其中一个实施例中,上述MySQL数据库中SQL信息的抓取方法还可以包括如下步骤:
S301、对于绑定变量的SQL,在客户端工作流、服务端工作流中,根据客户端、服务端的网络协议分别解析客户端的数据包、服务端的数据包,得到ID,并根据在预编译时刻建立的ID与SQL的绑定关系,得到对应的SQL文本及性能指标信息。
具体的,对于绑定变量的SQL,在客户端发起预编译请求时,抓取其SQL文本,并且,记录服务端返回给客户端的ID,将此ID和SQL文本的对应关系存储至红黑树中。如此,对于绑定变量的SQL,根据客户端的网络协议解析发起的执行请求的数据包、记录SQL开始时间,得到在预编译时刻与SQL文本建立绑定关系的ID,并通过查询红黑树中的绑定关系,得到SQL文本;根据服务端的网络协议解析服务端返回的响应该SQL执行请求的数据包,得到SQL语句的影响行数、返回数据行数、结束时间等执行信息;
将客户端解析得到的数据及服务端解析得到的数据进行整合,从而得到SQL文本以及性能指标信息;其中,性能指标信息包括执行的时间、执行用户、返回数据行数等至少一种,执行的时间由SQL语句结束时间减去SQL语句开始时间得到。
在其中一个实施例中,如图3所示,上述在消费线程中对数据包进行重组以得到完整的TCP数据流可以包括如下步骤:
S401、获取用以建立通信连接的数据包以确定客户端与服务端完成通信连接。
其中,TCP是面向连接的协议,TCP的运输连接用来传送TCP报文。TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。因此,TCP运输连接运输连接至少包括三个阶段,即:连接建立、数据传输和连接释放。
具体的,该步骤包括:
S4011、获取客户端向服务器发起建立连接请求的数据包。
此次连接被称为第一次握手,即,客户端向服务端请求建立通信连接。
S4012、获取服务端收到连接请求后,向客户端返回的建立连接请求的数据包。
此次连接被称为第二次握手,当服务端接收到客户端的请求后,需要向服务端返回一个确认信息,表示可以建立通信连接。
S4013、获取客户端收到响应后,向服务端发送的数据包。
此次连接被称为第三次握手,客户端接收到服务端发送的确认信息后,再发出一个确认信息,表示该链接建立成功,可进行通信。
如此,经过客户端与服务端的三次握手连接,客户端和服务端确认建立了可靠的通信连接,并且可以相互发送数据。
S402、获取数据包中的源IP、源端口、目标IP、目标端口信息以确定数据包属于同一TCP会话。
在实际应用中,网络传输的数据会来自很多机器,因此对应了多个不同的TCP会话。每个TCP传输的报文过程都有源IP、源端口、目标IP、目标端口信息,因此,根据获取到的每一个达到的数据包的源IP、源端口、目标IP、目标端口信息,可以确定数据包是否属于同一TCP会话。
具体的,该步骤包括:
S4021、根据当前数据包的源IP、源端口、目标IP、目标端口信息,计算此次TCP会话的唯一标识并存入红黑树中;
S4022、计算并判断每个到达的数据包的唯一标识是否与红黑树中的一致,当一致时,确定数据包属于同一TCP会话。
S403、根据数据包的序列号,将同属于一个TCP会话的数据包进行排序,从而实现数据包重组以得到完整的TCP数据流。
其中,在TCP建立连接以后,会为后续TCP数据包设定一个初始的序列号。当每传送一个包含有效数据的TCP包,后续紧接着传送的TCP数据包的序列号都要做出相应的修改。序列号是为了保证TCP数据包的按顺序传输来设计的,可以有效的实现TCP数据的完整传输,特别是在数据传送过程中出现错误的时候可以有效的进行错误修正。因此,在TCP会话的重新组合过程中我们需要按照数据包的序列号对接收到的数据包进行排序。
该步骤具体包括:
S4031、判断当前到达的数据包的序列号是否等于上一个到达的数据包的序列号和数据包长度之和;
S4302、当相等时,将当前到达的数据包存入红黑树的数组中的对应位置;
S4303、重复步骤S4031和S4302直至得到完整的TCP数据流。
在其中一个实施例中,上述MySQL数据库中SQL信息的抓取方法还包括:
S501、将SQL文本及性能指标信息推入输出端的环形队列;
S502、建立输出端线程,将输出端的环形队列中的SQL文本及性能指标信息输出以便上层系统调用。
具体的,将SQL文本及性能指标信息格式化成文本或者JSON格式的信息,输出到终端屏幕、文本,kafak队列等。
在一些实施例中,提供了一种MySQL数据库中SQL信息的抓取系统,系统包括:
抓取模块61,用于在链路层中抓取MySQL监听端口中的TCP数据包;
重组模块62,用于将数据包存入环形队列中,建立处理数据包的消费线程并在消费线程中对数据包进行重组以得到完整的TCP数据流;
还原模块63,用于判断数据流中数据包的数据来源,根据数据来源对应的网络协议将对应的数据包进行还原以得到SQL文本及性能指标信息;其中,数据来源包括客户端和服务端。
在其中一个实施例中,上述还原模块63包括:
判断模块631,用于根据数据包的源IP、源端口、目标IP和目标端口信息对数据包的数据来源进行判断,得到客户端的数据包及服务端的数据包;
解析模块632,用于创建用于处理客户端的数据包的客户端工作流以及用于处理服务端的数据包的服务端工作流,在客户端工作流、服务端工作流中,分别根据客户端、服务端的网络协议将对应的客户端的数据包、服务端的数据包进行解析,得到SQL文本及性能指标信息。
在其中一个实施例中,上述解析模块632具体用于:
对于绑定变量的SQL,在客户端工作流、服务端工作流中,根据客户端、服务端的网络协议分别解析客户端的数据包、服务端的数据包,得到ID,并根据在预编译时刻建立的ID与SQL的绑定关系,得到对应的SQL文本及性能指标信息。
在其中一个实施例中,上述重组模块62包括:
连接模块621,用于获取用以建立通信连接的数据包以确定客户端与服务端完成通信连接;
识别模块622,用于获取数据包中的源IP、源端口、目标IP、目标端口信息以确定数据包属于同一TCP会话;
排列模块623,用于根据数据包的序列号,将同属于一个TCP会话的数据包进行排序,从而实现数据包重组以得到完整的TCP数据流。
在其中一个实施例中,上述MySQL数据库中SQL信息的抓取系统还包括:
输出模块64,用于将SQL文本及性能指标信息推入输出端的环形队列;建立输出端线程,将输出端的环形队列中的SQL文本及性能指标信息输出以便上层系统调用。
应该理解的是,虽然图1-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
此外,需要说明的是,上述实施例提供的MySQL数据库中SQL信息的抓取系统在执行SQL信息抓取时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的MySQL数据库中SQL信息的抓取系统与MySQL数据库中SQL信息的抓取方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
尽管已描述了本发明实施例中的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例中范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种MySQL数据库中SQL信息的抓取方法,其特征在于,所述方法包括:
在链路层中抓取MySQL监听端口中的TCP数据包;
将所述数据包存入环形队列中,建立处理所述数据包的消费线程并在所述消费线程中对所述数据包进行重组以得到完整的TCP数据流;
判断所述数据流中数据包的数据来源,根据所述数据来源对应的网络协议将对应的数据包进行还原以得到SQL文本及性能指标信息;其中,所述数据来源包括客户端和服务端。
2.根据权利要求1所述的方法,其特征在于,判断所述数据流中数据包的数据来源,根据所述数据来源对应的网络协议将对应的数据包进行还原以得到SQL文本及性能指标信息具体包括:
根据所述数据包的源IP、源端口、目标IP和目标端口信息对数据包的数据来源进行判断,得到所述客户端的数据包及所述服务端的数据包;
创建用于处理所述客户端的数据包的客户端工作流以及用于处理所述服务端的数据包的服务端工作流,在所述客户端工作流、服务端工作流中,分别根据所述客户端、服务端的网络协议将对应的所述客户端的数据包、服务端的数据包进行解析,得到SQL文本及性能指标信息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
对于绑定变量的SQL,在所述客户端工作流、服务端工作流中,根据所述客户端、服务端的网络协议分别解析所述客户端的数据包、服务端的数据包,得到ID,并根据在预编译时刻建立的所述ID与SQL的绑定关系,得到对应的SQL文本及性能指标信息。
4.根据权利要求1所述的方法,其特征在于,在所述消费线程中对所述数据包进行重组以得到完整的TCP数据流具体包括:
获取用以建立通信连接的数据包以确定所述客户端与服务端完成通信连接;
获取所述数据包中的源IP、源端口、目标IP、目标端口信息以确定所述数据包属于同一TCP会话;
根据所述数据包的序列号,将同属于一个TCP会话的所述数据包进行排序,从而实现数据包重组以得到完整的TCP数据流。
5.根据权利要求1~4任意一项所述的方法,其特征在于,所述方法还包括:
将所述SQL文本及性能指标信息推入输出端的环形队列;
建立输出端线程,将所述输出端的环形队列中的SQL文本及性能指标信息输出以便上层系统调用。
6.一种MySQL数据库中SQL信息的抓取系统,其特征在于,所述系统包括:
抓取模块,用于在链路层中抓取MySQL监听端口中的TCP数据包;
重组模块,用于将所述数据包存入环形队列中,建立处理所述数据包的消费线程并在所述消费线程中对所述数据包进行重组以得到完整的TCP数据流;
还原模块,用于判断所述数据流中数据包的数据来源,根据所述数据来源对应的网络协议将对应的数据包进行还原以得到SQL文本及性能指标信息;其中,所述数据来源包括客户端和服务端。
7.根据权利要求6所述的系统,其特征在于,所述还原模块包括:
判断模块,用于根据所述数据包的源IP、源端口、目标IP和目标端口信息对数据包的数据来源进行判断,得到所述客户端的数据包及所述服务端的数据包;
解析模块,用于创建用于处理所述客户端的数据包的客户端工作流以及用于处理所述服务端的数据包的服务端工作流,在所述客户端工作流、服务端工作流中,分别根据所述客户端、服务端的网络协议将对应的所述客户端的数据包、服务端的数据包进行解析,得到SQL文本及性能指标信息。
8.根据权利要求7所述的系统,其特征在于,所述解析模块具体用于:对于绑定变量的SQL,在所述客户端工作流、服务端工作流中,根据所述客户端、服务端的网络协议分别解析所述客户端的数据包、服务端的数据包,得到ID,并根据在预编译时刻建立的所述ID与SQL的绑定关系,得到对应的SQL文本及性能指标信息。
9.根据权利要求6所述的系统,其特征在于,所述重组模块包括:
连接模块,用于获取用以建立通信连接的数据包以确定所述客户端与服务端完成通信连接;
识别模块,用于获取所述数据包中的源IP、源端口、目标IP、目标端口信息以确定所述数据包属于同一TCP会话;
排列模块,用于根据所述数据包的序列号,将同属于一个TCP会话的所述数据包进行排序,从而实现数据包重组以得到完整的TCP数据流。
10.根据权利要求6~9任意一项所述的系统,其特征在于,所述系统还包括:
输出模块,用于将所述SQL文本及性能指标信息推入输出端的环形队列;建立输出端线程,将所述输出端的环形队列中的SQL文本及性能指标信息输出以便上层系统调用。
CN201910628326.1A 2019-07-12 2019-07-12 一种MySQL数据库中SQL信息的抓取方法和系统 Pending CN110502391A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910628326.1A CN110502391A (zh) 2019-07-12 2019-07-12 一种MySQL数据库中SQL信息的抓取方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910628326.1A CN110502391A (zh) 2019-07-12 2019-07-12 一种MySQL数据库中SQL信息的抓取方法和系统

Publications (1)

Publication Number Publication Date
CN110502391A true CN110502391A (zh) 2019-11-26

Family

ID=68585413

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910628326.1A Pending CN110502391A (zh) 2019-07-12 2019-07-12 一种MySQL数据库中SQL信息的抓取方法和系统

Country Status (1)

Country Link
CN (1) CN110502391A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111447302A (zh) * 2020-03-30 2020-07-24 山东华辰连科通信网络有限公司 一种利用raw socket模拟多客户端测试DHCP的方法和系统
CN112261060A (zh) * 2020-10-30 2021-01-22 四川创智联恒科技有限公司 一种用于可靠通信传输的重复数据包检测方法
CN113141282A (zh) * 2021-05-12 2021-07-20 平安国际智慧城市科技股份有限公司 基于Libpcap的抓包方法、装置、设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105337976A (zh) * 2015-11-06 2016-02-17 西安交大捷普网络科技有限公司 实时高效的数据库审计实现方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105337976A (zh) * 2015-11-06 2016-02-17 西安交大捷普网络科技有限公司 实时高效的数据库审计实现方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111447302A (zh) * 2020-03-30 2020-07-24 山东华辰连科通信网络有限公司 一种利用raw socket模拟多客户端测试DHCP的方法和系统
CN111447302B (zh) * 2020-03-30 2022-12-27 山东华辰连科通信网络有限公司 一种利用raw socket模拟多客户端测试DHCP的方法和系统
CN112261060A (zh) * 2020-10-30 2021-01-22 四川创智联恒科技有限公司 一种用于可靠通信传输的重复数据包检测方法
CN112261060B (zh) * 2020-10-30 2023-04-07 四川创智联恒科技有限公司 一种用于可靠通信传输的重复数据包检测方法
CN113141282A (zh) * 2021-05-12 2021-07-20 平安国际智慧城市科技股份有限公司 基于Libpcap的抓包方法、装置、设备及存储介质
CN113141282B (zh) * 2021-05-12 2022-03-18 深圳赛安特技术服务有限公司 基于Libpcap的抓包方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN110502391A (zh) 一种MySQL数据库中SQL信息的抓取方法和系统
CN101848235B (zh) 一种支持nat穿越的实时多媒体数据p2p传输方案
WO2022179140A1 (zh) 一种数据处理方法及系统
CN108040034A (zh) 分布式实时通信中间件
CN102571947B (zh) 一种代理处理数据的方法、装置和系统
CN103139157B (zh) 一种基于socket的网络通信方法、装置及系统
CN107634984A (zh) 一种基于单向传输通道的文件同步方法
CN102325124B (zh) 一种支持引流功能的应用识别设备及方法
Simpson PPP LCP Extensions
CN109547162B (zh) 基于两套单向边界的数据通信方法
CN102355496B (zh) 列车车地间数据通信方法
CN109327386A (zh) 一种链路聚合方法、装置、设备及可读存储介质
CN106331147A (zh) 一种redis分布式调用方法及其系统
CN108566390B (zh) 一种卫星消息监听与分发服务系统
CN107566218A (zh) 一种适用于云环境的流量审计方法
CN114945032A (zh) 电力物联网终端数据接入系统、方法、装置、设备及介质
CN112966833B (zh) 基于Kubernetes集群的机器学习模型平台
CN107066341A (zh) 一种软件模块间的事件路由框架及方法
US7218714B2 (en) Method of calling service among devices in home network
CN110442506A (zh) 一种日志获取方法、装置、业务服务器、系统及存储介质
CN103905484A (zh) 处理超文本传输协议请求的方法及装置
CN109831491B (zh) 基于代理的侵入式社交数据采集方法
CN109658261A (zh) 保单处理方法、装置、设备及存储介质
CN103297474B (zh) 一种批量处理分包方法和系统
CN108737568A (zh) 一种基于消息队列服务器的数据交互系统和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20191126