赞
踩
Yearning 开源的MySQL SQL语句审核平台,提供数据库字典查询,查询审计,SQL审核等多种功能。
Yearning 1.x 版本需Inception提供SQL审核及回滚功能。
Inception是集审核,执行,回滚于一体的自动化运维系统,它是根据MySQL代码修改过来的,
工作模式和MySQL相同。Yearning是基于python实现的Web版人机交互界面。
Yearning 2.0 版本开始无需Inception,已自己实现了SQL审核及回滚功能。
Yearning1.0 python版本已不再进行官方维护。
Yearning2.0 golang版本为后续维护项目。
如仍使用python版本Yearning须知:
强烈建议使用Yearning2.0。
想了解更多Yearning工具安装和使用详情,可参考官网文档
canal 译意为水道/管道,主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费。
早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。
基于日志增量订阅和消费的业务包括以下内容:
MySQL主备复制原理
canal的工作原理类似mysql主从同步原理:
想了解更多cannal工具详情,可参考官网文档
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、
SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS等各种异构数据源之间高效的数据同步功能。
DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。
DataX Framework提供了简单的接口与插件交互,提供简单的插件接入机制,只需要任意加上一种插件,就能无缝对接其他数据源。经过几年积累,DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入。DataX目前支持数据如下:
DataX 3.0 开源版本支持单机多线程模式完成同步作业运行,按一个DataX作业生命周期的时序图,从整体架构设计非常简要说明DataX各个模块相互关系。
想了解更多DataX工具详情,可参考官网文档
MySQL数据库是轻量级、开源数据库的佼佼者,因此有很多功能强大第三方的衍生产品,如perconatoolkit,XtraBackup等。percona-toolkit是一组高级命令行工具的集合,可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等。
percona-toolkit工具是 MySQL一个重要分支产品percona的,它是一组命令的集合。下面给大家介绍几个生产中常用的命令。
工具包的下载地址
安装过程很简单,先解压:
tar -zxvf percona-toolkit-3.0.3_x86_64.tar.gz
由于是二进制的包,解压完可以直接进到percona-toolkit-3.0.3/bin目录下使用。
pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过showprocesslist或者mysqldumpslow命令来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。
大家都知道数据库大多数的性能问题是 slow sql 语句造成的,需要及时做相关的优化处理。使用示例如
下:
直接分析慢查询文件:
pt-query-digest slow_OAK.log > slow_report.log
分析最近24小时内的查询:
pt-query-digest --since=24h slow_OAK.log > slow_report.log
分析只含有select语句的慢查询
pt-query-digest --filter '$event->{fingerprint} =~ m/^select/i' slow_OAK.log> slow_report.log
查看SQL报告,总结慢语句有哪些,并可以看对应时间的消耗。分析结果如下所示:
可以看到报告中,列举出了一些sql语句响应时间占比情况,以及SQL语句的执行时间情况。方便我们可以很直观的观察哪些语句有问题。
pt-index-usage命令能够连接到MySQL数据库服务器,读取慢查询日志,并使用EXPLAIN询问MySQL如何执行每个查询。分析完成时,它打印出一个关于查询没有使用的索引的报告。
对于我们已有的生产环境,随着系统运行的时间越长,DML操作越来越慢,这可能和我们最初设计的索引是有关的(变慢的情况很多),项目一旦上线,很少会有人去关注索引的使用情况。某些索引是从create开始就没使用过,这无形中就给MySQL增加了维护负担,任何对该表的DML操作,都要维护这些没有被使用的索引。我们可以使用pt-index-usage工具找出哪些索引一直没有被使用,然后进行删除。
pt-index-usage语法格式如下:
pt-index-usage [OPTION...] [FILE...]
打印报告:
pt-index-usage /path/to/slow_OAK.log --host localhost
也可以将报告写入到一个数据库表中,存入后方便我们的查看。如果在生产服务器上使用此功能,则应该小心,它可能会增加负载。
pt-index-usage slow.log --no-report --save-results-database percona
pt-online-schema-change命令可以在线整理表结构,收集碎片,给大表添加字段和索引。避免出现锁表导致阻塞读写的操作。针对 MySQL 5.7 版本,就可以不需要使用这个命令,直接在线 online DDL 就可以了。
pt-online-schema-change --user=root --password=root --host=localhost -- alter="ADD COLUMN city_bak VARCHAR(256)" D=learn,t=city --execute
pt-table-checksum命令可以检查主从复制一致性。pt table checksum通过在主机上执行校验和查询来执行在线复制一致性检查。如果发现任何差异,或者出现任何警告或错误,则工具的“退出状态”为非0
该命令将连接到本地主机上的复制主机,对每个表进行校验和,并报告每个检测到的复制副本的结果:
比较learn库的差异情况,在主库上面执行:
上述结果显示diff都为0,证明主从的learn库没有差异情况。
比较learn库哪些表有差异(需要添加replicate-check-only),在主库上面执行
上述结果显示learn库下面position_detail表主从数据不一致。
除了上述命令外,还有很多,例如pt-ioprofile可以命令方便定位IO问题;pt-slave-restart可以监
控主从错误,尝试重启MySQL主从。想了解更多percona-toolkit工具详情,可参考官网文档
MySQLMTOP 是一个由Python+PHP开发的开源MySQL企业监控系统。该系统由Python实现多进程数据采集和告警,PHP实现Web展示和管理,优点如下:
MySQLMTOP主要功能如下:
想了解更多MySQLMTOP工具详情,可参考官网文档
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。