# 运维工具


<!--more-->


以下仅做了解

## 1. yearing

Yearning开源的MySQLSQL语句审核平台，提供数据库字典查询，查询审计，SQL审核等多种功能。Yearning1.x版本需Inception提供SQL审核及回滚功能。

> Inception是集审核，执行，回滚于一体的自动化运维系统，它是根据MySQL代码修改过来的，工作模式和MySQL相同。Yearning是基于python实现的Web版人机交互界面。

Yearning2.0版本开始无需Inception，已自己实现了SQL审核及回滚功能。

Yearning1.0python版本已不再进行官方维护。

Yearning2.0golang版本为后续维护项目。

## 2. canal

canal译意为水道/管道，主要用途是基于MySQL数据库增量日志解析，提供增量数据订阅和消费。

早期阿里巴巴因为杭州和美国双机房部署，存在跨机房同步的业务需求，实现方式主要是基于业务trigger获取增量变更。从2010年开始，业务逐步尝试数据库日志解析获取增量变更进行同步，由此衍生出了大量的数据库增量订阅和消费业务。

基于日志增量订阅和消费的业务包括以下内容：

- 数据库镜像
- 数据库实时备份
- 索引构建和实时维护(拆分异构索引、倒排索引等)业务cache刷新
- 带业务逻辑的增量数据处理

当前的canal支持源端MySQL版本包括5.1.x,5.5.x,5.6.x,5.7.x,8.0.x

canal的工作原理类似mysql主从同步原理：![img_96](https://img.zhaojq.top/20260727091819382.png "img_96")

- canal模拟MySQLslave的交互协议，伪装自己为MySQLslave，向MySQLmaster发送dump协议
- MySQL master收到dump协议请求，开始推送binarylog给canal 
- canal解析binarylog对象（原始为byte流）

应用场景:

该技术在拉勾网职位搜索业务中得到了采用，场景：在企业HR发布、更新或删除职位时，我们需要及时更新职位索引，便于求职者能快速的搜索到。

## 3. Datax

DataX是阿里巴巴集团内被广泛使用的离线数据同步工具/平台，实现包括MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

**设计理念**

为了解决异构数据源同步问题，DataX将复杂的网状的同步链路变成了星型数据链路，DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候，只需要将此数据源对接到DataX，便能跟已有的数据源做到无缝数据同步。

**当前使用现状**

DataX在阿里巴巴集团内被广泛使用，承担了所有大数据的离线同步业务，并已持续稳定运行了多年。当年每天完成同步8w多道作业，每日传输数据量超过300TB。

**DataX框架设计**

![img_97](https://img.zhaojq.top/20260727091819565.png "img_97")

> - Reader：Reader为数据采集模块，负责采集数据源的数据，将数据发送给Framework。
> - Writer：Writer为数据写入模块，负责不断向Framework取数据，并将数据写入到目的端。
> - Framework：Framework用于连接reader和writer，作为两者的数据传输通道，并处理缓冲，流控，并发，数据转换等核心技术问题。

**也有丰富的插件体系**

**核心架构**

DataX3.0开源版本支持单机多线程模式完成同步作业运行，本小节按一个DataX作业生命周期的时序图，从整体架构设计非常简要说明DataX各个模块相互关系。![img_98](https://img.zhaojq.top/20260727091819734.png "img_98")

> Tips: 想了解更多DataX工具详情，可参考官网文档：https://github.com/alibaba/DataX

## 4. percona-toolkit

MySQL数据库是轻量级、开源数据库的佼佼者，因此有很多功能强大第三方的衍生产品，如percona-toolkit，XtraBackup等。percona-toolkit是一组高级命令行工具的集合，可以查看当前服务的摘要信息，磁盘检测，分析慢查询日志，查找重复索引，实现表同步等等。

percona-toolkit工具是MySQL一个重要分支产品percona的，它是一组命令的集合。

> 工具包的下载地址：https://www.percona.com/downloads/percona-toolkit/LATEST/
>
> 安装过程很简单，先解压：
>
> tar -zxvf percona-toolkit-3.0.3_x86_64.tar.gz
>
> 由于是二进制的包，解压完可以直接进到percona-toolkit-3.0.3/bin目录下使用

## 5. MySQLMTOP 

MySQLMTOP是一个由Python+PHP开发的开源MySQL企业监控系统。该系统由Python实现多进程数据采集和告警，PHP实现Web展示和管理，优点如下：

- MySQL服务器无需安装任何Agent，只需在监控WEB界面配置相关数据库信息
- 启动监控进程后，即可对上百台MySQL数据库的状态、连接数、QTS、TPS、数据库流量、复制、性能慢查询等进行实时监控。
- 可以在数据库偏离设定的正常运行阀值(如连接异常，复制异常，复制延迟)时发送告警邮件通知到DBA进行处理。
- 可以对历史数据归档，通过图表展示数据库近期状态，以便DBA和开发人员能对遇到的问题进行分析和诊断。

主要功能:

- 实时MySQL状态监控和警报

  MySQLMTOP持续监视MySQL的基本状态和性能信息，包括数据库连接状态，启动时间，数据库版本，总连接数，活动进程，QPS，TPS，进出MySQL数据库的流量信息。在数据库状态异常或偏离正常基准水平时发出报警邮件通知。

- 实时MySQL复制监控

  MySQLMTOP自动发现MySQL复制拓扑结构，自动监视数据库的延时和binlog信息，可以了解所有MySQL主服务器和从服务器的性能、可用性和运行状况。并在问题（如从服务器延迟）导致停机前向管理员提供改正建议。

- 远程监控云中的MySQL 

  适合于云和虚拟机的设计，能远程监视MySQL服务器不需要任何远程代理器。

- 直观管理所有MySQL 

  MySQLMTOP提供一个基于Web的界面，可令全面深入地了解数据库性能、可用性、关键活动等；直观地查看一台服务器、自定义的应用组或所有服务器。一组丰富的实时图形和历史图形将帮助您深入了解详细的服务器统计信息。

- 可视化MySQL慢查询分析

  监视实时查询性能，查看执行统计信息，筛选和定位导致性能下降的SQL代码。结合使用
  InformationSchema可直接从MySQL服务器收集数据，无需额外的软件或配置。

- 性能监控

  监视影响MySQL性能的主要指标。如Key_buﬀer_read_hits、Key_buﬀer_write_hits、Thread_cache_hits、Key_blocks_used_rate、Created_tmp_disk_tables_rate等信息，根据相关性能指标可以对服务器核心参数进行调整优化。

> Tips: 想了解更多MySQLMTOP工具详情，可参考官网文档：http://www.lepus.cc/

## 6. ELK

在简单应用中，直接在日志文件中grep就可以获得自己想要的信息。但在规模较大分布式系统中，此方法效率低下，面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理，所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统，将所有节点上的日志统一收集，管理，访问。

一般大型系统是一个分布式部署的架构，不同的服务模块部署在不同的服务器上，问题出现时，大部分情况需要根据问题暴露的关键信息，定位到具体的服务器和服务模块。构建一套集中式日志系统，可以提高定位问题的效率。

一个完整的集中式日志系统，需要包含以下几个主要特点：

- 收集－能够采集多种来源的日志数据
- 传输－能够稳定的把日志数据传输到中央系统存储－如何存储日志数据
- 分析－可以支持UI分析
- 警告－能够提供错误报告，监控机制

ELK提供了一整套解决方案，并且都是开源软件，之间互相配合使用，完美衔接，高效的满足了很多场合的应用。目前主流的一种日志系统。

ELK最早是**Elasticsearch**（简称ES）、**Logstash**、Kibana**三**款开源软件的简称，三款软件后来被同一公司收购，并加入了Xpark、Beats等组件，改名为ElasticStack，成为现在最流行的开源日志解决方案，虽然有了新名字但大家依然喜欢叫ELK，现在所说的ELK就指的是基于这些开源软件构建的日志系统。![img_99](https://img.zhaojq.top/20260727091819909.png "img_99")

- MySQL服务器安装Filebeat作为agent收集slowLog 
- Filebeat读取MySQL慢日志文件做简单过滤传给Kafka集群
- Logstash读取Kafka集群数据并按字段拆分后转成JSON格式存入ES集群
- Kibana读取ES集群数据展示到web页面上

## 7. Prometheus

Prometheus于2012年由SoundCloud创建，目前已经已发展为最热门的分布式监控系统。
Prometheus完全开源的，被很多云厂商（架构）内置，在这些厂商（架构）中，可以简单部署
Prometheus，用来监控整个云基础架构设施。比如DigitalOcean或Docker都使用普罗米修斯作为基础监控。

Prometheus是一个时间序列数据库，它涵盖了可以绑定的整个生态系统工具集及其功能。
Prometheus主要用于对基础设施的监控，包括服务器、数据库、VPS，几乎所有东西都可以通过Prometheus进行监控。

Prometheus主要优点如下：

- 提供多维度数据模型和灵活的查询方式。通过将监控指标关联多个tag，来将监控数据进行任意维度的组合，并且提供简单的PromQL，还提供查询接口，可以很方便地结合等GUI组件展示数据。
- 在不依赖外部存储的情况下，支持服务器节点的本地存储。通过Prometheus自带的时序数据库，可以完成每秒千万级的数据存储。
- 定义了开发指标数据标准，以基于HTTP的pull方式采集时序数据。只有实现了Prometheus监控数据格式的监控数据才可以被Prometheus采集、汇总。
- 支持通过静态文件配置和动态发现机制发现监控对象，自动完成数据采集。Prometheus目前已经支持Kubernetes、etcd、consul等多种服务发现机制，可以减少运维人员的手动配置环节。
- 易于维护，可以通过二进制文件直接启动，并且提供容器化部署镜像。
- 支持数据的分区采集和联邦部署，支持大规模集群监控。












