• GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。

查看方式

  • 已知至少有两种方式可以实现

1.开启 general_log 就可以观察到

  • 开启命令
  1. mysql> set global general_log=ON;
  • 执行一些操作
  1. [root@mgr2 ~]# mysql -uGreatSQL -pGreatSQL -h192.168.6.217 -P3306
  2. mysql> use test;
  3. mysql> show tables;
  4. +----------------+
  5. | Tables_in_test |
  6. +----------------+
  7. | book |
  8. | student |
  9. | t1 |
  10. +----------------+
  11. 3 rows in set (0.01 sec)
  12. mysql> select * from t1;
  13. +------+--------+
  14. | id | name |
  15. +------+--------+
  16. | 1 | 哈哈 |
  17. | 2 | 你好 |
  18. | 3 | 呵呵 |
  19. +------+--------+
  20. 5 rows in set (0.00 sec)
  21. mysql> delete from test.t1 where id=4;
  22. Query OK, 1 row affected (0.02 sec)
  • 查看general_log日志信息,已经完整记录到了。
  1. 2022-01-20T21:46:17.073491-05:00 32 Connect GreatSQL@192.168.6.216 on using TCP/IP
  2. 2022-01-20T21:46:17.074048-05:00 32 Query select @@version_comment limit 1
  3. 2022-01-20T21:46:20.217080-05:00 32 Query SELECT DATABASE()
  4. 2022-01-20T21:46:20.217657-05:00 32 Init DB test
  5. 2022-01-20T21:46:20.218960-05:00 32 Query show databases
  6. 2022-01-20T21:46:20.220347-05:00 32 Query show tables
  7. 2022-01-20T21:46:20.222050-05:00 32 Field List book
  8. 2022-01-20T21:46:20.222644-05:00 32 Field List student
  9. 2022-01-20T21:46:20.223106-05:00 32 Field List t1
  10. 2022-01-20T21:46:22.856100-05:00 32 Query show tables
  11. 2022-01-20T21:46:31.156616-05:00 32 Query select * from t1
  12. 2022-01-20T21:46:43.136448-05:00 32 Query delete from test.t1 where id=4

2.抓包

  • 这里采用 MySQL Sniffer 进行抓包。

1.MySQL Sniffer 介绍

  • MySQL Sniffer 是一个基于 MySQL 协议的抓包工具,实时抓取 MySQL Server 端的请求,并格式化输出。
  • 输出内容包访问括时间、访问用户、来源 IP、访问 Database、命令耗时、返回数据行数、执行语句等。有批量抓取多个端口,后台运行,日志分割等多种使用方式,操作便捷,输出友好。
  • 开源出品方:奇虎360
  • github 地址:https://github.com/Qihoo360/mysql-sniffer/blob/master/README_CN.md

2.安装依赖包

  1. yum install gcc gcc-c++ cmake libpcap-devel glib2-devel libnet-devel -y

3.安装命令

  1. git clone https://github.com/Qihoo360/mysql-sniffer.git
  2. cd mysql-sniffer
  3. mkdir proj
  4. cd proj
  5. cmake ../
  6. make

编译过程中出现一些问题,参考 https://www.cnblogs.com/kerrycode/p/14948381.html 解决,感谢!

3.查看帮助

  • 安装后工具在 bin 目录下。
  1. [root@mgr3 bin]# ./mysql-sniffer -help
  2. Usage ./mysql-sniffer [-d] -i eth0 -p 3306,3307,3308 -l /var/log/mysql-sniffer/ -e stderr
  3. [-d] -i eth0 -r 3000-4000
  4. -d daemon mode.
  5. -s how often to split the log file(minute, eg. 1440). if less than 0, split log everyday
  6. -i interface. Default to eth0
  7. -p port, default to 3306. Multiple ports should be splited by ','. eg. 3306,3307
  8. this option has no effect when -f is set.
  9. -r port range, Don't use -r and -p at the same time
  10. -l query log DIRECTORY. Make sure that the directory is accessible. Default to stdout.
  11. -e error log FILENAME or 'stderr'. if set to /dev/null, runtime error will not be recorded
  12. -f filename. use pcap file instead capturing the network interface
  13. -w white list. dont capture the port. Multiple ports should be splited by ','.
  14. -t truncation length. truncate long query if it's longer than specified length. Less than 0 means no truncation
  15. -n keeping tcp stream count, if not set, default is 65536. if active tcp count is larger than the specified count, mysql-sniffer will remove the oldest one

4.测试

  • 参考GITHUB进行测试

1.实时抓取某端口信息并打印到屏幕

输出格式为:时间,访问用户,来源 IP,访问 Database,命令耗时,返回数据行数,执行语句。

  • 控制台监听

  • 执行一些操作
  1. mysql> use test;
  2. Database changed
  3. mysql> create table t1 (id int(11) not null auto_increment, name varchar(64), primary key(id));
  4. Query OK, 0 rows affected (0.06 sec)
  5. mysql> insert into t1 values (1,'小明'),(2,'小陈');
  6. Query OK, 2 rows affected (0.00 sec)
  7. Records: 2 Duplicates: 0 Warnings: 0
  8. mysql> delete from t1 where id=1;
  9. Query OK, 1 row affected (0.00 sec)
  10. mysql> select * from t1;
  11. +----+--------+
  12. | id | name |
  13. +----+--------+
  14. | 2 | 小陈 |
  15. +----+--------+
  16. 1 row in set (0.00 sec)
  • 控制台输出
  1. 2022-01-21 14:37:09 GreatSQL 192.168.6.216 NULL 0ms 1 select @@version_comment limit 1
  2. 2022-01-21 14:37:31 GreatSQL 192.168.6.216 NULL 0ms 2 show databases
  3. 2022-01-21 14:37:37 GreatSQL 192.168.6.216 NULL 0ms 1 SELECT DATABASE()
  4. 2022-01-21 14:37:37 GreatSQL 192.168.6.216 test 0ms 0 use test
  5. 2022-01-21 14:37:37 GreatSQL 192.168.6.216 test 0ms 2 show databases
  6. 2022-01-21 14:37:37 GreatSQL 192.168.6.216 test 11ms 0 show tables
  7. 2022-01-21 14:41:58 GreatSQL 192.168.6.216 test 60ms 0 create table t1 (id int(11) not null auto_increment, name varchar(64), primary key(id))
  8. 2022-01-21 14:42:40 GreatSQL 192.168.6.216 test 0ms 2 insert into t1 values (1,'小明'),(2,'小陈')
  9. 2022-01-21 14:42:54 GreatSQL 192.168.6.216 test 0ms 1 delete from t1 where id=1
  10. 2022-01-21 14:43:04 GreatSQL 192.168.6.216 test 0ms 1 select * from t1
  • 目前看有正常抓取到信息

2、可以把抓包的数据存储到文件

  • 文件名称就是端口名称,如果文件没内容,可以改成MySQL用户权限组试一下
  1. ./mysql-sniffer -i eth1 -p 33061 -l ./
  1. [root@mgr3 bin]# more 33061.log
  2. 2022-01-21 15:00:11 NULL 192.168.6.216 test 0ms 0 use test
  3. 2022-01-21 15:00:11 NULL 192.168.6.216 test 0ms 1 SELECT DATABASE()
  • 其他功能就不一一测试了
  • 特别注意,以上是在 MySQL5.6 版本测试获取的,在 8.0 版本中可能由于MySQL协议变更导致抓不到数据包,同时该工具存在一定的丢包情况。

Enjoy GreatSQL

文章推荐:

GreatSQL MGR FAQ

https://mp.weixin.qq.com/s/J6wkUpGXw3YkyEUJXiZ9xA

万答#12,MGR整个集群挂掉后,如何才能自动选主,不用手动干预

https://mp.weixin.qq.com/s/07o1poO44zwQIvaJNKEoPA

『2021数据技术嘉年华·ON LINE』:《MySQL高可用架构演进及实践》

https://mp.weixin.qq.com/s/u7k99y6i7riq7ScYs7ySnA

一条sql语句慢在哪之抓包分析

https://mp.weixin.qq.com/s/AYibbzl860D90rOeyjB6IQ

万答#15,都有哪些情况可能导致MGR服务无法启动

https://mp.weixin.qq.com/s/inSGpd0Q_XIl2Mb-VsvNsA

技术分享 | 为什么MGR一致性模式不推荐AFTER

https://mp.weixin.qq.com/s/rNeq479RNsklY1BlfKOsYg

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

Gitee:

https://gitee.com/GreatSQL/GreatSQL

GitHub:

https://github.com/GreatSQL/GreatSQL

Bilibili:

https://space.bilibili.com/1363850082/video

微信&QQ群:

可搜索添加GreatSQL社区助手微信好友,发送验证信息“加群”加入GreatSQL/MGR交流微信群

QQ群:533341697

微信小助手:wanlidbc

本文由博客一文多发平台 OpenWrite 发布!

万答#21,如何查看 MySQL 数据库一段时间内的连接情况的更多相关文章

  1. 查看MYSQL数据库中所有用户及拥有权限

    查看MYSQL数据库中所有用户 mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM m ...

  2. 查看MySQL数据库的默认编码

    查看MySQL数据库的默认编码 1.使用status命令能够显示数据库的相关系信息,示例如下: mysql> status;————–mysql Ver 14.12 Distrib 5.0.77 ...

  3. 查看mysql数据库版本方法总结

    当你接手某个mysql数据库管理时,首先你需要查看维护的mysql数据库版本:当开发人员问你mysql数据库版本时,而恰好你又遗忘了,那么此时也需要去查看mysql数据库的版本............ ...

  4. 查看MySQL数据库表的命令介绍

    如果需要查看MySQL数据库中都有哪些MySQL数据库表,应该如何实现呢?下面就为您介绍查看MySQL数据库表的命令,供您参考. 进入MySQL Command line client下查看当前使用的 ...

  5. 查看mysql数据库表大小和最后修改时间

    查看mysql数据库表相关信息如表大小.修改更新等信息,可以通过以下方式: 一   show table status like ’table_name‘ ; 二 在infortmation_sche ...

  6. 查看mysql数据库连接数、并发数相关信息

    查看mysql数据库连接数.并发数相关信息. - caodongfang126的博客 - CSDN博客 https://blog.csdn.net/caodongfang126/article/det ...

  7. 查看mysql数据库体积

    查看MySQL数据库大小 1.首先进入information_schema 数据库(存放了其他的数据库的信息) ? 1 2 mysql> use information_schema; Data ...

  8. (转)查看mysql数据库连接数、并发数相关信息

    查看mysql数据库连接数.并发数相关信息 1.mysql> show status like 'Threads%';+-------------------+-------+| Variabl ...

  9. SQL命令查看Mysql数据库大小

    SQL命令查看Mysql数据库大小的方法. 要想知道每个数据库的大小的话,步骤如下:1.进入information_schema 数据库(存放了其他的数据库的信息)use information_sc ...

随机推荐

  1. 105_Power Pivot财务科目(层级深度&筛选深度)

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 1.背景 在财务科目中,需要按照科目层级来显示:在excel中都是用公式来实现,而且对于数据的管理及更新是一件头痛的事情, ...

  2. 详解TCP四次挥手(断开TCP连接过程)

    在讲述TCP四次挥手,即断开TCP连接的过程之前,需要先介绍一下TCP协议的包结构. TCP协议包结构: 这里只对涉及到四次挥手过程的字段做解释 (1) 序号(Sequence number) 我们通 ...

  3. CF1485E Move and Swap

    题意:Move and Swap 很好的题呢 n个节点的树,根为1,所有叶子的深度都是D,一开始根节点上有两个颜色分别微R,B的球,你执行下列操作D-1次: 1.R点跳到子树内 2.B点跳到下一层的任 ...

  4. SPFA 最短路算法

    SPFA算法 1.什么是spfa算法? SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环.SPFA一般情况复杂度是O(m)O(m) ...

  5. 变量作用域——JavaSE基础

    变量作用域 局部变量.成员变量.静态变量的区别 类型 声明位置 从属于 生命周期 局部变量 方法或语句块内部 方法/语句块 从声明位置开始,直到方法或语句块执行完毕,局部变量消失 成员变量 (实例变量 ...

  6. Spring bean到底是如何创建的?(上)

    前言 众所周知,spring对于java程序员来说是一个及其重要的后端框架,几乎所有的公司都会使用的框架,而且深受广大面试官的青睐.所以本文就以常见的一个面试题"spring bean的生命 ...

  7. 【ASP.NET Core】配置应用程序地址的N多种方法

    下面又到了老周误人子弟的时间,今天要误大伙的话题是:找找有多少种方法可以设置 ASP.NET Core 应用的地址,即 URL. 精彩马上开始! 1.UseUrls 方法 这是一个扩展方法,参数是可变 ...

  8. 前端3JS2

    内容概要 运算符 流程控制 三元运算符 函数 自定义对象 内置对象 JSON对象 正则对象 内容详情 运算符

  9. CabloyJS一站式助力微信、企业微信、钉钉开发 - 企业微信篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  10. CPPRESTSDK 编译

    首先要 git clone这个库git clone git://github.com/Microsoft/cpprestsdk.git然后git 一下 Vcpkg.\vcpkg\bootstrap-v ...