公告:

选择和推荐常用MySQL工具

作者:里维斯社 / 时间:9个月前 (03/27) / 分类:数据库 / 阅读:2656 / 评论:0

有一种说法,如果你想做一些好事,你必须首先加强它,特别是在MySQL方向。在规划技术时,您会发现有些事情需要预先定位。例如,MySQL中的工具很难等到实际遇到各种问题然后统一它们。沟通成本,劳动力成本,技术沉淀和持续交付等成本是最好的,并且团队有基本的沟通方式达成共识。在内部统一之后,有一个统一同学发展的基线。

访问:SQL必知必会

选择和推荐常用MySQL工具 mysql mysql导入sql文件 sql优化 数据备份 数据库 mysql数据库 大数据 系统运维 信息安全 网站安全 数据库 第1张

大体来说,我考虑了以下几个方面的工具:

  • 运维管理工具

  • 数据备份恢复工具

  • 数据库优化工具

  • 客户端工具

  • 性能测试工具

  • 数据库版本管理工具

  • 数据库审计工具

 

1. 运维管理工具

要说MySQL操作和维护工具,不要让Percona-toolkit,它应该是一个操作和维护工具,我们需要熟悉学习MySQL。

Percona-tooolkit工具通常被称为pt,pt工具实际上是Maatkit和Aspersa工具的组合,它们来自同一作者:Baron Schwartz;其中,Maatkit工具更强调数据库级别,该基因是Perl的开始。 Aspersa的范围更倾向于系统级别,例如磁盘信息。

在2017年开始进入了3.0时代,所以线上使用的版本几乎都是2.2(自2013年),距今已经跨越了好几个年头。 pt工具被Percona收至麾下,有专门的项目维护。

 

2. 数据备份恢复工具

在数据备份和恢复方面,主要依据是逻辑备份和物理备份。该行业主要有以下备份工具:

(1) mysqldump,MySQL最经典的逻辑备份工具,也是MySQL工具集里默认的工具,适用于一些数据量不大的数据备份工作。值得一提的是Facebook的生产环境都是使用mysqldump进行逻辑备份。

(2) mysqlpump ,MySQL新版本推出的备份工具,但是效果没有想象的那么好,最大的一个痛点应该就是备份的IO问题还是没法大幅度扩展,因为都在最后备份出来的那个文件上,没有拆分。

(3) mydumper,这个工具还算比价流行,能够对原来的mysqldump做一个很好的补充。腾讯云就是定制了mydumper来做为默认的备份工具.

另外和Mydumper配套的工具是myloader,作为数据的批量导入工具。

(4) Xtrabackup,来自Percona的工具,擅长做物理备份,而且更倾向于是全备+增备结合的方式。

 

3 数据库优化工具

(1)innotop

这是一款用Perl所写的MySQL监控工具,可以命令行模式调用展示MySQL服务器和InnoDB的运行状况,下载地址为:https://github.com/innotop/innotop

目前Github上提供了两种版本,一种是开发版(innotop-master),一种是稳定版(innotop-gtid),推荐使用稳定版,使用截图如下:

(2)orzdba

orzdba是淘宝DBA团队开发出来的一个Perl监控脚本,可以监控mysql数据库,也有一些磁盘和cpu的监控。使用截图如下:

选择和推荐常用MySQL工具 mysql mysql导入sql文件 sql优化 数据备份 数据库 mysql数据库 大数据 系统运维 信息安全 网站安全 数据库 第2张

(3)mytop

这是一款类似 Linux 下的 top 命令风格的 MySQL 监控工具,可以监控当前的连接 用户和正在执行的命令。

(4)orztop

这是一款可以查看MySQL数据库实时运行的SQL状况的工具,如果你习惯于用show processlist/show full processlist抓取SQL,这款工具就是一个很好的补充。

选择和推荐常用MySQL工具 mysql mysql导入sql文件 sql优化 数据备份 数据库 mysql数据库 大数据 系统运维 信息安全 网站安全 数据库 第3张

(5)systemtap,是Linux下的动态跟踪工具,可以监控、跟踪运行中的程序或Linux内核操作,它带来的性能损耗很小,在一些特定的场景下可以编写SystemTap脚本来调试一些性能问题。

 

4 操作系统监控

(1) nmon,(Nigel’s Monitor)是由IBM 提供、免费监控 AIX 系统与 Linux 系统资源的工具,在系统数据采集方面使用广泛。

历史数据

(2) Mpstat ,Multiprocessor Statistics的缩写,是实时监控工具,mpstat最大的特点是:可以查看多核心的cpu中每个CPU的统计数据。

 

5 慢日志分析工具

(1)mysqldumpslow

这是MySQL产品包中的一个原生命令工具,它可以支持慢查询的统计分析,对MySQL查询语句的监控、分析、优化是MySQL优化是一个开始,相对来说,功能支持比较少。

(2)pt-query-digest

经典的慢日志分析工具,属于pt工具的一个子集。它基于Perl开发,与mysqldumpshow工具相比,py-query_digest 工具的分析结果更具体,更完善。

(3)mysqlsla

该工具是是daniel-nichter 用Perl 写的一个脚本,mysqlsla与pt-query-digest的作者是同一个人,现在是主打pt系列工具,现在已经不再维护了。

(4)Anemometer

一个图形化显示从MySQL慢日志的开源项目,基于php开发,充分结合了pt-query-digest,Anemometer可以很轻松的去分析慢查询日志,找到哪些SQL需要优化。

 

6 客户端工具

(1)SQLyog

SQLyog 是一个快速而简洁的图形化管理MySQL数据库的工具,由业界著名的Webyog公司出品,属于付费产品。

(2)Navicat

是一套快速、可靠并价格适当的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设计,它的设计符合数据库管理员、开发人员及中小企业的需要,属于付费产品。

(3)MySQL Workbench

为MySQL设计的ER/数据库建模工具,可以支持数据库管理,数据迁移,数据建模等功能,它同时有开源和商业化的两个版本。

(4)SQL developer

这个工具是Oracle推出的一款免费的数据库管理工具,它主要支持Oracle,如果需要支持MySQL,需要额外下载一个驱动包即可使用。

 

7 性能监控工具

(1)Zabbix,一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,集监控报警于一身的强大功能,在互联网行业使用比例很高。

(2)Lepus

天兔是国内的一位DBA开发的一款开源的,基于php开发的数据库监控管理系统,可以对数据库的实时健康和各种性能指标进行全方位的监控,它本身可以支持MySQL、Oracle、MongoDB、Redis数据库的监控,在慢日志的功能设计方面很有亮点。

(3)mysql-statsd,一个收集 MySQL 信息的 Python 守护进程。并通过 StatsD 发送到 Graphite

 

8 性能测试工具

业务上线,环境初始化需要做烤机测试。主要就是让服务器先吃点苦头,看能不能经受住考验。在一定的测试之后,我们可以得到压测的数据结果,作为后续上线的基准参考。

行业里主要的性能测试工具有以下几类:

(1) Sysbench,是一款主流的性能测试工具,本身是开源的,具备多线程压测能力,覆盖硬件和软件层面,产品隶属于Percona

(2) tpcc-mysql,是Percona按照TPC-C开发的产品,主要用于MySQL的压测工具

(3) Mydbtest,该工具是有知名数据库专家楼方鑫先生开发,免安装,上手快,可以针对业务做定制化压测。

(4) mysqlslap,mysql自带的基准测试工具,自5.1.4版开始推出,可以通过模拟多个并发客户端访问MySQL来执行压力测试。

 

9、数据库版本管理工具

liquibase,一个数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,目前日志文件支持多种格式,如XML, YAML, JSON, SQL等。

 

10、MySQL审计

数据库审计是数据安全的重要参考。通过审计工具,可以预期数据库活动,对数据库操作的细粒度审计的严格管理以及数据库所暴露的风险行为的警报。

目前在MySQL审计方向主要存在以下几类审计插件:

(1) 官方的商业版插件

(2) Percona Audit Log插件

(3) MariaDB 插件

 

初步结论:

(1) 运维管理工具主要考虑Percona-toolkit,作为默认的初始化软件使用

(2) 数据备份恢复工具目前还是已现有的备份恢复体系为主,采用xtrabackup和mysqldump结合的方式。

  • xtrabackup通过物理备份,每日全备,保留7天备份集,版本建议为2.4.8

  • mysqldump备份数据字典库,比如mysql,每日全备,保留7天备份集。

在这个基础上在每个机房再申请一台binlog备份机,通过xtrabackup每日全备,binlog备份,保留3天,达到基本的数据恢复需求。

注: mydumper和myloader的适用场景也比较广,可以作为一些备份恢复方案或者迁移的的改进。

(3) MySQL实时状态分析工具使用orzdba和orztop,其中orzdba的内容可以通过自行定制mysqladmin来满足需求,orztop可以作为环境初始化的软件。

(4) 操作系统监控工具使用nmon收集历史数据,mpstat得到实时的系统监控数据,需要向系统部提需求定制。

(5) 慢日志分析工具使用pt-query-digest,需要调研从Lepus中抽取出慢日志的逻辑单独调用。日志系统的部分需要和驰骋进一步沟通。

(6) 客户端工具使用workbench,推荐开发同学使用workbench,需要内部整理出操作文档

(7) 性能测试工具主要使用sysbench在业务上线,环境初始化中做拷机测试,压测硬件(IO,CPU,MEM)等,压测MySQL,历时至少一周。在这个基础上使用tpcc-mysql,mydbtest做辅助测试。主要目标是通过压测的部分得到一些关键的参考指标(IOPS,TPS,QPS)等。

(8) MySQL审计工具使用Percona的审计插件审计日志和MariaDB的服务器审计的建议。目前,它对DDL敏感且对用户敏感。根据后来的测试,MariaDB的Server Audit插件是全面且首选的。


推荐阅读:

如何降低网站的跳出率?做6点可以轻松留住用户

紫光战锐发布首款5G基带:将Ivy 510命名为全球5G第一梯队

WindowsServer2012和Embedded8Standard支持IE11

  • QQ群
  • 微信公众号