MySql-运维工具
2021-08-23 17:32:26 0 举报
AI智能生成
MySql-运维工具
作者其他创作
大纲/内容
运维工具
Yearning
简介
Yearning开源的MySQL_SQL语句审核平台,提供数据库字典查询,查询审计,SQL审核等多种功能
v1.x版本需要Inception提供SQL审核及回滚功能
v2.0版本开始无需Inception,已自己实现SQL审核及回滚功能
v1.0 python版本已不再进行官方维护
v2.0 golang版本为后续维护项目
强烈建议使用V2.0
功能
SQL查询
查询导出
查询自动补全
SQL审核
流程化工单
SQL语句检测
SQL语句执行
SQL回滚
历史审核记录
推送
站内信工单通知
Email工单推送
钉钉webhook机器人工单推送
其他
todoList
LDAP登录
用户权限及管理
拼图式细粒度权限划分
界面
dashboard
主要展示Yearning各项数据,包括用户数/数据源数/工单数/查询数以及其他图表
我的工单
展示用户提交的工单信息
DDL审核
DDL相关SQL提交审核,查看表结构/索引,SQL语法高亮/自动补全
DML审核
DML相关SQL提交审核,SQL语法高亮/自动补全
查询审核
查询/到处数据SQL语法高亮/自动补全,快速DML语句提交
工单审核
DDL/DML管理员审核并执行
数据库管理
添加/编辑/删除数据源
数据源分为查询数据源/非查询数据源
查询数据源仅会出现在细粒度权限的查询数据源范围内
用户权限管理
审核规则管理
设置SQL检测规则
数值型规则0值都为不受限制,保存后即时生效
Canal
简介
主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费
早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务trigger获取增量变更
从2010年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务
内容
基于日志增量订阅和消费的业务包括
数据库镜像
数据库实时备份
索引构建和实时维护
拆分异构索引
倒排索引
......
业务cache刷新
带业务逻辑的增量数据处理
工作原理
类似MySQL主从同步原理
Canal模拟MySQL_Slave的交互协议,伪装自己为MySQL_Slave,向MySQL_Master发送dump协议
MySQL_Master收到dump协议请求,开始推送binary_log给Canal
Canal解析binary_log对象(原始为byte流)
应用场景
该技术在拉勾网搜索业务中得到了应用
DataX
简介
DataX是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS等各种异构数据源之间高效的数据同步功能
设计理念
为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责链接各种数据源
当需要接入一个新的数据源时,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步
使用现状
DataX在阿里巴巴集团内被广泛使用,承担了所有大数据的离线同步业务
架构体系
DataX本身作为离线数据同步框架,采用Framework+plugin架构构建
将数据源读取和写入抽象为reader/writer插件,纳入到整个同步框架中
Reader
为数据采集模块,负责采集数据源的数据,将数据发送给Framework
Writer
为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端
Framework
用于连接Reader和Writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题
插件体系
DataX_Framework提供了简单的接口和插件交互,提供简单的插件接入机制,只需任意加上一种插件,就能无缝对接其他数据源
DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入
核心架构
DataX3.0开源版本支持单机多线程模式完成同步作业运行
Percona-toolkit
简介
是一组高级命令行工具的集合,可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等
它是MySQL一个重要分支产品percona的,是一组命令的集合
命令
pt-query-digest
用于分析MySQL慢查询,可以分析binlog、General_log、Slowlog,也可以通过showprocesslist或mysqldumpslow命令来进行分析
可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化
pt-index-usage
它能连接到MySQL数据库服务器,读取慢查询日志,并使用EXPLAIN询问MySQL如何执行每个查询,分析完成打印出一个关于查询没有使用的索引的报告
pt-online-schema-change
可以在线整理表结构,收集碎片,给大表添加字段和索引,避免出现锁表导致阻塞读写的操作
MySQLv5.7之后,直接在线用online DDL就可以了
pt-table-checksum
可以检查主从复制一致性,通过在主机上执行校验和查询来执行在线复制一致性检查,这会在主机不一致的副本上产生不同的结果
MySQL MTOP
简介
是一个由Python+PHP开发的开源MySQL企业监控系统,由Python实现多进程数据采集和告警,PHP实现Web展示和管理
优点
MySQL服务器无需安装任何Agent,只需在监控Web界面配置相关数据库信息
启动监控进城后,即可对上百台MySQL数据库的状态、连接数、QTS、TPS、数据库流量、复制、性能慢查询等进行实时监控
可以在数据库偏离设定的正常运行阈值(如连接异常,复制异常,复制延迟)时发送告警邮件通知到DBA进行处理
可以对历史数据归档,通过图表展示数据库近期状态,以便DBA和开发人员能对遇到的问题进行分析和诊断
主要功能
实时MySQL状态监控和警报
实时MySQL复制监控
远程监控云中的MySQL
直观管理所有MySQL
可视化MySQL慢查询分析
性能监控
ELK
使用原因
简单应用中,直接在日志文件中grep就可以获取自己想要的信息,但在规模较大分布式系统中,此方法效率低下
常见解决思路是建立集中式日志收集系统,将所有节点上的日志用以收集、管理、访问
一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块
构建一套集中式日志系统,可以提高定位问题的效率,需要包含特点
收集:能够采集多种来源的日志数据
传输:能够稳定的把日志数据传输到中央系统
存储:如何存储日志数据
分析:可以支持UI分析
警告:能够提供错误报告,监控机制
ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美现节,高效的满足了很多场合的应用
实现架构
ELK最早是ES、Logstash、Kibana三款开源软件的简称,后来被同一公司收购,并加入了Xpark、Beats等组件,改名为Elastic_Stack,称为现在最流行的开源日志解决方案,现在所说的ELK就是指基于这些开源软件构建的日志系统
架构中,各技术作用
MySQL服务器安装Filebeat作为agent收集slowlog
Filebeat读取MySQL慢日志文件做简单过滤传给Kafka集群
Logstash读取Kafka集群数据并按字段拆分后转成JSON格式存入ES集群
Kibana读取ES集群数据展示到Web页面上
Prometheus
简介
于2012年由SoundCloud创建,目前已经发展为最热门的分布式监控系统
完全开源,被很多云厂商内置,在这些厂商中,可以简单部署Prometheus,用来监控整合云基础架构
它是一个时间序列数据库,涵盖了可以绑定的整个生态系统工具及机器功能
主要用于对基础设施的监控,包括服务器、数据库、VPS,几乎所有东西都可以通过它进行监控
主要优点
提供多维度数据模型和灵活的查询方式。通过将监控指标关联多个tag,来将监控数据进行任意维度的组合,并且提供简单的PromQL,还提供查询接口,可以很方便地结合GUI组件展示数据
在不依赖外部存储的情况下,支持服务器节点的本地存储。通过自带的时序数据库,可以完成每秒千万级的数据存储
定义了开发指标数据标准,以基于HTTP的pull方式采集时序数据。只有实现了Prometheus监控数据格式的监控数据才可以被它采集、汇总
支持通过静态文件配置和动态发现机制发现监控对象,自动完成数据采集。Prometheus目前已经支持Kubernetes、etcd、consul等多种服务发现机制,可以减少运维人员的手动配置环节
易于维护,可以通过二进制文件直接启动,并且提供容器化部署镜像
支持数据的分区采集和联合部署,支持大规模集群监控
生态系统
Alertmanager
Prometheus通过配置文件定义规则将告警信息推送到Alertmanager
Alertmanager可以将其导出到多个端点,如Pagerduty或Email
数据可视化
在WebUI中可视化时间序列数据,轻松过滤查询监控目标的信息,与Grafana、Kibana类似
服务发现
Prometheus可以动态发现监控目标,并根据需要自动废弃目标
这在云架构中使用动态变更地址的容器时,非常方便
实现原理
数据存储
Prometheus指标数据支持本地存储和远程存储
指标数据
Prometheus使用键值对存储监控数据,键描述了测量值时将实际测量值存储为数字的值
Prometheus并不会存储原始信息,如日志文本,它存储的是随时间汇总的指标
Prometheus有标签的概念,标签旨在通过向键添加其他字段来为指标提供更详细信息
指标类型
Counter
计数器是我们使用的最简单的度量标准形式
计数器的值只能增加或重置为0,如要计算服务器上的Http错误数或网站上的访问次数,这时候就是用计数器
Gauge
用于处理随时间减少或增加的值,如温度、内存变化等
Gauges类型的值可以上升和下降,可以是正值/负值
Histogram
直方图是一种更复杂的度量标准类型,它为指标提供了额外信息,如观察值的总和及其数量,常用于跟踪事件发生的规模
其值在具有可配置上限的存储对象中聚合,如为了监控性能指标,我们希望得到在有20%的服务器请求响应时间超过300毫秒发送警告
对于涉及比例的指标就可以考虑使用直方图
Summary
摘要是对直方图的扩展,除了提供观察的总和和计数之外,它们还提供滑动窗口上的分位数度量
分位数是将概率密度分为相等概率范围的方法,直方图随时间汇总值,给出总和和计数函数,使得易于查看给定度量的变化趋势,而摘要则给出了滑动窗口上的分位数(即随时间不断变化)
PromQL
对于Prometheus数据,可以通过HTTP来查询,如果是复杂的数据查询,则还可以使用PromQL进行
和关系型数据库实现SQL解析一样,Prometheus实现了一套自己的数据库语言解析器,最大的区别是支持查询
使用PromQL,会处理两种向量
即时向量
表示在最近时间戳中跟踪的指标
时间范围向量
用于查看度量随时间的演变,可以使用自定义时间范围查询Prometheus
PromQL_API公开了一组方便查询数据操作的函数,用它可以实现排序,数据函数计算,统计预测计算等
Instrumentation仪表化
仪表化是Prometheus的一个重要组成部分,在从应用程序检索数据之前,必须要仪表化它们
Prometheus术语中的仪表化表示将客户端类库添加到应用程序,以便它们向Prometheus吐出指标
可以对大多数主流的编程语言进行仪表化
在仪表化操作时,需要创建内存对象,然后选择指标公开的位置
Prometheus将从该位置获取并存储到时间序列数据库
Exporters模板
它是一个采集监控数据样本的组件,除了官方实现的Exporter,还是很多第三方实现如Redis_Exporter和Rabbit_Exporter等
这些Exporter通过Https/Http方式、TCP方式、本地文件方式或标准协议方式访问
常见的Exporter模板有
数据库模板
用于MongoDB数据库,MySQL服务器的配置
HTTP模板
用于HAProxy、Apache或Nginx等Web服务器和代理的配置
Unix模板
用来使用构建的节点导出程序监控系统性能,可以实现完整的系统指标的监控
Alertmanager告警
在处理事件序列数据库时,我们希望对数据进行处理,并对结果给出反馈,这部分工作由告警来实现
Prometheus通过Alertmanager实现完成的告警系统
它是一个独立的工具,可以绑定到Prometheus并运行自定义Alertmanager
告警通过配置文件定义,定义由一组指标规则组成,如果数据命中这些规则,则会触发告警并将信息发送到预定义的目标
Prometheus告警,可以通过Email、Slack_Webhooks、PagerDuty和自定义HTTP目标等
0 条评论
下一页