Mysql 调用监控 | 学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速学习 Mysql 调用监控

开发者学堂课程【分布式链路追踪 SkywalkingMysql 调用监控】学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/743/detail/13160


Mysql调用监控


内容介绍:

一、搭建 MySQL

二、使用 sqlyog 连接虚拟机端口

三、使用 Spring Date JDBC 访问数据库

四、Spring Date JDBC的实现

五、将skywalking_mysql  发布到虚拟机

六、确认应用是否被 skywalking 监控

 

一、搭建 MySQL

skywalking 对 MySQL 进行调用监控。

使用 Spring Date JDBC 的代码来对 MySQL 进行访问,需要在虚拟机先搭建 MySQL ,才能对代码进行访问。选用docker来进行 MySQL 的安装,首先进入到虚拟机来查。

使用docker的命令查看docker版本,命令:docker - v ,之后使用 systemctl  start docter  命令启动 docker,启动成功后。通过命令 docker images 来查看docker 本地的镜象。如下图所示:image.png

使用  mysql -57-centos7 这个镜像进行 MySQL 的安装。输入启动命令: docker -di 。因为是将 MySQL 启动成后端服务,并需要添加一个环境变量作为root的初始密码来进行设置。最终将命令写成:

Docker run -di --name=skywa1king_mysq1 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/my sq1-57-centos7。


二、使用 sqlyog 连接虚拟机端口:

镜像启动完毕。使用 sqlyog 连接虚拟机端口 :33306 来进行登录。创建新连接,名字为 skywalking_mysql 。连接地址填写自己虚拟机的地址。用户名 root ,密码:123456。端口 :33306,测试连接,点击连接。然后创建 skywalking 数据库,字符集为utf8

排序规则为 utf8_unicode_ci 。然后创建表,代码如下:

CREATE TABLE't_user'

idint(11) NOT NULL AUTO_INCREMENT, namevarchar(50)DEFAULT NULL. PRIMARY KEY Cid

ENGINE=InnoDB DEFAULT CHARSET=utf8

粘贴,如下:image.png

执行成功后,刷新(f5),当前没有数据,表结构中只有ID和name 两条字段,ID是int型,自增的主件,name为字符型,varchar(50),长度50,然后在数据库中插入数据,插入数据的 sql 如下: insert into ‘t_user ‘( ‘name’)values ('张三'),('李四'),('王五’)  ;由于主件自增,故将这个sql粘贴到如下图所示地方即可。image.png

执行,刷新。如下结果:image.png


三、使用 Spring Date JDBC 访问数据库:

使用 Spring Date JDBC 进行数据库的访问。建立项目 skywalking_mysql ,代码使用如下图安装包:image.png

放到虚拟机,直接运行。查看该项目文件,发现pom文件使用了2.1.0的版本,与其他应用保持一致,引入了 spring-boot-starter-data-jdbc //数据访问层,用来做数据库的访问。也引入了 spring-boot-starter-data-web 来进行前端浏览器的访问。MySQL的驱动版本为5.1.46。建议使用5.1的版本,保证访问的正确性。接下来观看配置文件,如下图所示:image.png

datasource连接的是localhost下的33306端口, jar 包(springboot应用)会在虚拟机中进行运行,所以要访问本地的3306端口,也就是访问我们 docker 中的 sky walking_mysql 。访问sky walking 数据库。填写驱动名字:com.mysql,jdbc.Driver 。填写用户名: root 密码:123456。Pory端口:8087。如下图所示:image.png

首先提供了mysqlcontroller,通过浏览器的接口进行访问,接口为 get 请求: /users 。作用为捅过 Spring Date JDBC 去访问数据库数据,获取所有数据,并打印,返回给前端。

 

四、Spring Date JDBC的实现:

接下来学习Spring Date JDBC怎么实现。代码如下图所示:image.png

首先,定义一个 public 类,因为这个 public 类与数据库名没有直接映射关系,故添加一个注解@Table,将表名 t_user 做一个映射,Spring Date JDBC 就可以知道数据实体与这张表的关联,同时在id 的字段上添加注解 @ID ,表明这是主件。再添加 name 字段, public 类完成。接下来看数据访问层的接口,如下图所示:image.png

由于使用了Spring Date JDBC,故只需要定制一个接口,继承一个CrudRepository 接口就可以。该接口提供了标准的增删改查及方法,如下图所示:image.png

需要用到 findAll() 方法去查询所有的数据。所有的数据会返回一个迭代器接口,使用这个迭代器接口进行数据的访问。注意需要声明两个泛型,第一个泛型为 public 类:user类,第二个为它的主件的类型: integer 。调用时通过 @Autwired 进行的 userPepostitory 的注入,这时,Spring Date JDBC生成一个动态代理对象,使用动态代理对象进行数据的访问。这里有泛型为 list 的user,然后通过userPepostitory 的findAll() 方法返回一个迭代器,通过迭代器的forEach()方法来遍历所有的数据,最后将数据放到result中。返回给前端。该流程就是向数据库去获取 t_user 这张表的所有数据,然后运行一个接口返回给前端。


五、将 skywalking_mysql  发布到虚拟机:

接下来将 skywalking_mysql  发布到虚拟机,然后在 WinSCP 中

将jar包上传到user/local/skywalking/*.*目录下。如下图所示:image.png

可以看到已经上传image.png

通过命令jar-jar 启动他,注意启动将agent再拷贝一份。进到  apache-skywalking-apm-bin 目录下,命令:cd  apache-skywalking-apm-bin。找到 agent ,将 agent拷贝到agent_mysql 下,命令如下:cp  -r  agent  agent_mysql 。然后进入 agent_mysql 中,编辑服务名,命令: cd config ,回车,之后再vi agent.config。找到服务名称,如下图所示:image.png

将 skywalking_tomcat 改为  skywalking_mysql 。保存。准备工作就绪,接下来启动应用,启动命令为: java -java agent:/usr/1oca1/skywalking/apache-skywalking-apm-bin/agent_mysq1/skywalking-a gent.jar -jar skywalking_mysq1.jar  &。应用在后端发布,然后后台退出。然后在浏览器地址栏输入:192.168.62.141:8087/users ,回车。显示如下:image.png

到此为止,对MySQL的访问成功。


六、确认应用是否被 skywalking 监控:

之后确认应用有没有被 skywalking 监控到,刷新。可以看到一个应用名被查询到,属性,users调用时间如下图所示:image.png

查看Dashboard有没有出现数据库,结果如下图所示:image.png

还可以通过Datebase来查看数据库的指标:响应时间,吞吐量,时间线等。如图所示:image.png

接下来看追踪的记录,点击搜索进行刷新,发现调用,将调用改成表格状,这笔调用在前端,前端通过 get 请求去调用,到了8087端口上一个接口,这个接口通过 spring MVC 来进行调用。它通过 MYSQL的调用去执行 SQL 语句。如下图所示:

image.png最终执行的sql 语句为:

SELECT _user.id AS id, t_user.name AS name FROM t user

通过 skywalking 可以方便的监控到有多少 sql 语句在数据库中执行,如图所示:image.png

通过点击详情可以明确发现那条 sql 语句耗时最长,sql 语句包含哪些内容,是否存在性能较低的 sql 语句。这就是 skywalking 对 MySQL 进行调用监控。只要应用连接到musql数据库,发起调用时,

skywalking 就可以将信息自动统计到 Rockrtbot中,通过仪表盘可以看到详细信息。在拓扑图中也可以看到链路。如下图所示:image.png

通过 user 去访问 skywalking_mysql 的这么一个 spring mvc  的应用,spring mvc  的应用去访问 mysql。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
8月前
|
存储 关系型数据库 MySQL
MySQL索引学习笔记
本文深入探讨了MySQL数据库中慢查询分析的关键概念和技术手段。
568 81
|
11月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
293 6
|
SQL Oracle 关系型数据库
MySQL学习笔记
MySQL学习笔记
93 0
|
11月前
|
SQL 关系型数据库 MySQL
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
MySQL中用于数据检索的`fetchone()`, `fetchmany()`, `fetchall()`函数的功能、SQL语句示例和应用场景。
287 3
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
|
11月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
204 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
10月前
|
缓存 监控 关系型数据库
如何根据监控结果调整 MySQL 数据库的参数以提高性能?
【10月更文挑战第28天】根据MySQL数据库的监控结果来调整参数以提高性能,需要综合考虑多个方面的因素
288 1
|
10月前
|
监控 关系型数据库 MySQL
如何监控和诊断 MySQL 数据库的性能问题?
【10月更文挑战第28天】监控和诊断MySQL数据库的性能问题是确保数据库高效稳定运行的关键
1183 1
|
11月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
153 1
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
220 2
zabbix agent集成percona监控MySQL的插件实战案例
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
139 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)

推荐镜像

更多