好用到炸天的 SQL数据库新年大礼包

点击蓝色“有关SQL”关注我哟

加个“星标”,天天与10000人一起快乐成长


图 | 榖依米

前两天,收到机工华章赵编辑的送书《数据库高效优化:架构、规范与SQL技巧》

前面的SQL开发部分,我略过了。此书最最最吸引我的地方有两个:

数据库画像,一直是我在思考做的事情

数据库画像,怎么做?

数据库健康、性能监测平台

为什么我们需要一个 SQL 数据库审核平台

数据库的健康、性能监测平台,是对数据库画像的“像素级”应用。

说人话,数据库的每一个操作,都应该被我们捕捉到。只有全面掌控数据库的一举一动,我们才能正确掌舵数据库。

就像,我喜欢在家里按上 1-2个摄像头,设置关键入口的 snapshot 监控。出门之后,家里任何风吹草动,我都能了如指掌。

数据库也一样。

自己动手做一个监控平台的想法,早就有了。也动手写过,但就是搞不定可视化。用 Javascript 库搭建的柱状图,折线图,饼图,要多丑有多丑,偏偏自己还是颜控,受不了那种垃圾画面。

这个心病,一直折磨着我,把我带到了2021年。直到我遇见《数据库高效优化》,算是彻底解开了。

业界对数据库监测,有了强大的普罗米修斯计划,即 Prometheus. 对数据库爱好者来说,Prometheus 好用到爆炸!

所以,那个骂我的人,你可以闭嘴了



于是我花了整个周末下午,整 5 个小时,搞定了这套数据库监控平台。以下是我的一些实践。

你完全可以不看这些实践,等你有需要再搜索具体实现。但你一定要知道,Prometheus 与 Grafana 带来的巨大好处!后台回复 Prometheus,我为你准备好了所有这些软件包

此图,是 Prometheus + Grafana 的灵魂


这个Dashboard,完全采用配置 + 拖拉方式生成。

如果你愿意,可以展示更多指标。我这里用了两个指标库。实际上可以有无数个。

这套平台,采用 Prometheus, mysqld_exporter 和 Grafana 软件包。

原理非常简单:

  1. mysqld_exporter 采集 MySQL 服务器的性能数据,

  2. Prometheus 抓取 mysqld_exporter 采集到的数据,

  3.  Grafana 这个可视化软件,则抓取 Prometheus 缓存的这些性能数据,用来作图。

更为惊奇的是,我们可以开发更多的 exporter “爬虫”,去爬取各类其他应用程序的性能数据,比如 Hadoop, Hive,  Elasticsearch, Oracle 等等,甚至是崭露头角的 Clickhouse, 也有了适配器。

以下,是搭建这套平台的大体步骤,随版本不同,方法可能不同。所以我建议,等到你安装的时候,可以搜索谷歌,参考最新版本

 Prometheus 的安装

  1. 下载 Prometheus 安装包

后台回复 Prometheus ,即可下载所有本文涉及的软件,包括 Prometheus, Grafana, mysqld_exporter

  1. 解压缩 Prometheus 安装包,复制 Prometheus 和 Promtool 到 /usr/local/bin 下

  2. 在解压缩包目录下,修改配置文件,并将其复制到专有文件夹下

  3. 启动 Prometheus ,并同时指定配置文件

  4. 访问 http://localhost:9090 查看 Prometheus 的监控平台

mysqld_exporter 的安装

  1. 下载 mysqld_exporter 包

  2. 解压包,复制 mysqld_exporter 到 /usr/bin 系统目录下(不需要指定目录就可以执行)

  3. 编制 mysqld_exporter 配置文件

  4. 执行 mysqld_exporter ,同时指定配置文件,参数和自定义服务地址

  5. 配置 Prometheus 的配置文件,新建 yml 的 Job 配置参数

Grafana 的安装与数据可视化

  1. 下载Grafana 安装包

  2. 解压包,复制到 /usr/bin

  3. 启动 Grafana-server

  4. 添加 Prometheus 数据源

  5. 编制 mysql 指标报表,组驾驶舱(Dashboard)

重要的两个配置文件

## Prometheus.yml

# my global config
global:
  scrape_interval:     5s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'local.mysql'
    static_configs:
    - targets: ['192.168.1.10:9104']


## mysql-export.cnf

[client]
user=MySQLAdmin
password=MySQLAdmin122
host=192.168.1.10

祝,周末快乐!

--完--

往期精彩:

本号精华合集(三)

如何写好 5000 行的 SQL 代码

如何提高阅读 SQL 源代码的快感

我在面试数据库工程师候选人时,常问的一些题

零基础 SQL 数据库小白,从入门到精通的学习路线与书单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dbLenis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值