Mysql使用中的性能优化——搭建Mysql的监测服务

大纲

  • 环境
    • 安装配置Mysql
      • 安装
      • 设置root密码
      • 新增远程访问账户
        • 修改绑定地址
        • 重启
      • 新增 MySQL Server Exporter 用户
    • 安装启动mysqld_exporter
    • 安装
    • 启动
      • 新增配置
      • 启动
  • 安装启动Prometheus
    • 创建用户
    • 下载并解压
    • 修改配置
    • 启动
  • 安装启动grafana
    • 安装
    • 启动
  • 测试
  • 参考资料

抛开场景和数据,谈论性能优化,就是纸上谈兵。这个系列我们将通过相关数据来展现常见的Mysql优化前后的性能差距。这样会给大家有个直观的认识。

环境

我是在Windows电脑上,使用Hyper-V构建了一台干净的虚拟机。并给该机器分配了2核4G。
在这里插入图片描述
操作系统是Ubuntu Server 24.04 LTS

cat /proc/version

Linux version 6.8.0-35-generic (buildd@lcy02-amd64-020) (x86_64-linux-gnu-gcc-13 (Ubuntu 13.2.0-23ubuntu4) 13.2.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #35-Ubuntu SMP PREEMPT_DYNAMIC Mon May 20 15:51:52 UTC 2024

安装配置Mysql

安装

sudo apt install mysql-server
mysql --version

mysql Ver 8.0.36-2ubuntu3 for Linux on x86_64 ((Ubuntu))

设置root密码

sudo mysql

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.36-2ubuntu3 (Ubuntu)
Copyright © 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

use mysql;

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed

ALTER USER 'root'@'localhost' IDENTIFIED BY '';
UPDATE user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;

将root用户的plugin从auth_socket改成mysql_native_password,并且设置密码为空,是为了让之后mysqld_exporter在build的过程中自检通过。

新增远程访问账户

这个账户主要是给Mysql client端使用。我们希望在其他机器上向这台机器发送请求以操作数据库,从而降低对Mysql所在机器的影响。

use mysql;
create user 'remoteuser' identified by 'fangliang';
ALTER USER 'remoteuser'@'%' IDENTIFIED BY 'fangliang';
修改绑定地址
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

修改

bind-address = 127.0.0.1

成为

bind-address = 0.0.0.0

重启
service mysql restart

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
Authentication is required to restart ‘mysql.service’.
Authenticating as: fangliang
Password:
==== AUTHENTICATION COMPLETE ====

新增 MySQL Server Exporter 用户

该用户是用于mysqld_exporter采集信息,因为它安装在Mysql所在机器,所以只用配置本地访问即可。

sudo mysql -u root -p
use mysql;
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'fangliang' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';

安装启动mysqld_exporter

安装

git clone https://github.com/prometheus/mysqld_exporter.git
cd mysqld_exporter
sudo apt install make
sudo apt install golang
make

启动

新增配置

cp test_exporter.cnf exporter.cnf
vim exporter.cnf

将原来内容

[client]
host=localhost
port=3306
socket=/var/run/mysqld/mysqld.sock
user=foo
password=bar
[client.server1]
user = bar
password = bar123

修改成

[client]
host=localhost
port=3306
socket=/var/run/mysqld/mysqld.sock
user=exporter
password=fangliang

启动

./mysqld_exporter --config.my-cnf=exporter.cnf

ts=2024-06-05T15:27:38.605Z caller=mysqld_exporter.go:240 level=info msg=“Starting mysqld_exporter” version=“(version=0.15.1, branch=main, revision=dd8afce2a46663a5112e53469f53ca56d50a63e2)”
ts=2024-06-05T15:27:38.605Z caller=mysqld_exporter.go:241 level=info msg=“Build context” build_context=“(go=go1.22.2, platform=linux/amd64, user=fangliang@fangliang, date=20240605-15:21:01, tags=unknown)”
ts=2024-06-05T15:27:38.605Z caller=mysqld_exporter.go:253 level=info msg=“Scraper enabled” scraper=global_status
ts=2024-06-05T15:27:38.605Z caller=mysqld_exporter.go:253 level=info msg=“Scraper enabled” scraper=global_variables
ts=2024-06-05T15:27:38.605Z caller=mysqld_exporter.go:253 level=info msg=“Scraper enabled” scraper=slave_status
ts=2024-06-05T15:27:38.605Z caller=mysqld_exporter.go:253 level=info msg=“Scraper enabled” scraper=info_schema.innodb_cmpmem
ts=2024-06-05T15:27:38.605Z caller=mysqld_exporter.go:253 level=info msg=“Scraper enabled” scraper=info_schema.query_response_time
ts=2024-06-05T15:27:38.605Z caller=mysqld_exporter.go:253 level=info msg=“Scraper enabled” scraper=info_schema.innodb_cmp
ts=2024-06-05T15:27:38.605Z caller=tls_config.go:313 level=info msg=“Listening on” address=[::]:9104
ts=2024-06-05T15:27:38.605Z caller=tls_config.go:316 level=info msg=“TLS is disabled.” http2=false address=[::]:9104

安装启动Prometheus

我们新开一台机器,同样给2核4G配置,更更新好系统和apt库。

创建用户

sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus

下载并解压

wget https://github.com/prometheus/prometheus/releases/download/v2.52.0/prometheus-2.52.0.linux-amd64.tar.gz
tar xvf prometheus-2.52.0.linux-amd64.tar.gz

修改配置

cd prometheus-2.52.0.linux-amd64
vim prometheus.yml

新增如下内容

- job_name: 'mysqld_exporter'static_configs:- targets: ['172.23.142.99:9104']labels:app: mysqld_exporternode: node_exporterrole: mysqld_exporter

启动

mkdir tsdb 
./prometheus --config.file ./prometheus.yml --storage.tsdb.path=./tsdb --web.listen-address="0.0.0.0:9090"  

安装启动grafana

安装

cd ~
sudo apt-get install -y adduser libfontconfig1 musl
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_11.0.0_amd64.deb
sudo dpkg -i grafana-enterprise_11.0.0_amd64.deb

启动

sudo /bin/systemctl start grafana-server

测试

登录http://172.23.131.19:3000/login,使用用户名和密码都是admin登录grafana。
在这里插入图片描述
数据源选择Prometheus,地址填入刚启动的Promethous服务地址。
在这里插入图片描述
保存后,新建看板
在这里插入图片描述
填入https://grafana.com/grafana/dashboards/14057-mysql/
在这里插入图片描述
在这里插入图片描述
最后我们看到图标的展现了。
在这里插入图片描述

参考资料

  • https://github.com/prometheus/mysqld_exporter
  • https://www.cherryservers.com/blog/install-prometheus-ubuntu
  • https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1
  • https://www.cnblogs.com/wangyongqiang/p/15823372.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/342781.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ARM】PK51-如何添加芯片型号的方法

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 遇到打开工程提示没有该芯片设备提示如何解决。 2、 问题场景 客户发来一个工程文件,打开后软件提示没有发现该芯片设备提示。 图 1 3、软硬件环境 1)、软件版本:keil μvision…

搜索与图论:八皇后问题

搜索与图论&#xff1a;八皇后问题 题目描述参考代码 题目描述 输入样例 4输出样例 .Q.. ...Q Q... ..Q...Q. Q... ...Q .Q..参考代码 #include <iostream>using namespace std;const int N 20;int n; char g[N][N]; bool col[N], dg[N], udg[N];void dfs(int u) {//…

【机器学习】机器学习与大模型在人工智能领域的融合应用与性能优化新探索

文章目录 引言机器学习与大模型的基本概念机器学习概述监督学习无监督学习强化学习 大模型概述GPT-3BERTResNetTransformer 机器学习与大模型的融合应用自然语言处理文本生成文本分类机器翻译 图像识别自动驾驶医学影像分析 语音识别智能助手语音转文字 大模型性能优化的新探索…

C++之类与类之间的关系

1、UML 2、继承&#xff08;泛化&#xff09; 3、关联 一个类对象与另一个类对象存在一个固定关系。他们的关系不是暂时的&#xff0c;而是固定的。 一个类对象作为另一个类对象的成员。例如订单&#xff0c;是用户的一个成员。用户关联订单。 4、聚合 聚合其实是特殊的一种…

spring boot +Scheduled 动态定时任务配置

通常情况下我们设定的定时任务都是固定的,有时候需要我们动态的配置定时任务,下面看代码 import com.mybatisflex.core.query.QueryWrapper; import com.yzsec.dsg.web.modules.exportpwd.entity.ExportPwd; import com.yzsec.dsg.web.modules.exportpwd.entity.table.Export…

PbootCms微信小程序官网模版/企业官网/社交电商官网/网络工作室/软件公司官网

在数字化时代&#xff0c;企业网站已成为吸引潜在客户、提升企业形象、和扩大品牌影响力的必备工具。因此&#xff0c;一个优秀的企业网站模板显得尤为重要。 企业官网的内容框架通常都包含企业形象、产品或服务类型、信息展示等部分&#xff0c;设计师需要借助和企业形象契合…

mysql的binlog占用大量磁盘空间的解决方法

查看当前日志保存天数&#xff1a; mysql> show variables like %expire_logs_days%; ------------------------- | Variable_name | Value | ------------------------- | expire_logs_days | 0 | ------------------------- 1 row in set (0.08 sec) 默认是0&…

【Linux 网络】高级 IO -- 详解

一、IO 的基本概念 I/O&#xff08;input/output&#xff09;也就是输入和输出&#xff0c;在冯诺依曼体系结构当中&#xff0c;将数据从输入设备拷贝到内存就叫作输入&#xff0c;将数据从内存拷贝到输出设备就叫作输出。 对文件进行的读写操作本质就是一种 IO&#xff0c;文…

安防视频融合汇聚平台EasyCVR如何实现视频画面自定义标签?

安防视频融合汇聚平台EasyCVR兼容性强&#xff0c;可支持Windows系统、Linux系统以及国产化操作系统等&#xff0c;平台既具备传统安防视频监控的能力&#xff0c;也具备接入AI智能分析的能力&#xff0c;可拓展性强、视频能力灵活&#xff0c;能对外分发RTMP、RTSP、HTTP-FLV、…

港中文斯坦福提出SD加速模型PCM,一步即可生成图像和视频,可直接与SD1.5,SDXL,AnimateLCM结合!

又有新的SD加速模型可以用了&#xff0c;PCM解决了原来LCM模型的各种问题。并且对 AnimateLCM 也做了优化&#xff0c;用PCM直接生成动画也可以保证质量了。 PCM从这三个角度说明了LCM的设计空间是有限的并很好地解决了这些限制。 PCM主要改善了三个LCM原有的问题&#xff1a;…

Spring Cloud工程添加子模块打包后文件为war包而非jar包

Spring Cloud工程添加子模块打包后文件为war包而非jar包 Spring Cloud子模块打出的包通常是JAR包而非WAR包&#xff0c;这是因为Spring Cloud主要基于Spring Boot构建&#xff0c;而Spring Boot默认打包为可执行JAR包。然而&#xff0c;如果遇到了Spring Cloud子模块打成了WAR…

俯视角2D游戏_02 子弹对象池

[!NOTE] 对象池 应用场合:这种做法常用于子弹这种会大量产生的对象 &#xff0c;目的是减少性能的损耗 基本思路:产生的对象是有限的&#xff0c;并且加入到"对象池"的数组中不进行销毁&#xff0c;当需要使用时&#xff0c;再从对象池中提取对象循环利用&#xff0c…

碰撞问题和单调栈的结合-735. 小行星碰撞【有小坑】

题目链接及描述 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/asteroid-collision/description/?envTypestudy-plan…

Vue——子级向父级使用props传递数据(函数)

文章目录 前言原理案例效果演示 前言 看到这个标题&#xff0c;相信很多人会说我&#xff0c;你之前博客写的父级向子级中传递数据使用的是props&#xff0c;然后说的子级向父级传递数据则是用的$emit。 并且还说了对于String、数组Array&#xff0c;只能是父级使用props传递…

C++ 11【右值引用】

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;C修炼之路⏪   &#x1f69a;代码仓库:C高阶&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C知识   &#x1f51d;&#x1f51d; 1.C 11 简介 目录 1.C 11 简介 2. 统一的列表…

C语言小例程8/100

题目&#xff1a;输出特殊图案&#xff0c;请在c环境中运行&#xff0c;看一看 程序分析&#xff1a;字符共有256个。不同字符&#xff0c;图形不一样。 #include<stdio.h> int main() {char a176,b219;printf("%c%c%c%c%c\n",b,a,a,a,b);printf("%c%c%c…

Kafka 如何基于 KRaft 实现集群最终一致性协调

01 架构概览 Zookeeper 提供了配置服务、分布式同步、命名服务、Leader 选举和集群管理等功能&#xff0c;在大数据时代的开始很多开源产品都依赖 Zookeeper 来构建&#xff0c;Apache Kafka 也不例外。但是随着 Kafka 功能的演进和应用的场景越来越多&#xff1a; 基于 Zoo…

济南适宜地提取

题目: 网上下载中国的DEM、土地利用地图(1980、2000、2015年的)和一张最新济南市行政区划 图(要求:莱芜市并入济南后的区划图); 2.网上下载中国2015年年平均降水空间插值数据;3..网上下载中国2015年年平均气温空间插值数据; (注:以上数据可到资源环境科学与数据中心下载http…

QT快速下载

去QT官网之后&#xff0c;如下图所示 比如要下载qt-opensource-windows-x86-5.14.2.exe&#xff0c;进入5.14对应的文件夹&#xff0c;找到对应的版本 点击Details&#xff0c; 下载对应的种子&#xff0c;然后通过迅雷下载 个人实测&#xff0c;家庭网络平均18M的速率

【因果推断python】21_匹配2

目录 匹配估计器 匹配估计器 子分类估计器在实践中用得不多&#xff08;我们很快就会明白为什么&#xff0c;主要是因为维度诅咒这个原因&#xff09;&#xff0c;但它让我们很好地、直观地了解了因果推理估计器应该做什么&#xff0c;以及它应该如何控制混淆因素。这使我们能…