有句话说,工欲善其事,必先利其器,在MySQL方向尤其如此。
技术规划的时候,会发现有一些事情需要前置,比如说MySQL里面的工具,如果等到实际碰到了各色的问题再来统一,就比较难了。有沟通成本,人力成本,技术沉淀和持续交付等等的成本,这些***提前和团队有一个基本的沟通,达成一个共识。内部统一了以后,和开发同学规范统一就有了一个基线。
大体来说,我考虑了以下几个方面的工具:
- 运维管理工具
- 数据备份恢复工具
- 数据库优化工具
- 客户端工具
- 性能测试工具
- 数据库版本管理工具
- 数据库审计工具
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的监控。使用截图如下:
(3)mytop
这是一款类似 Linux 下的 top 命令风格的 MySQL 监控工具,可以监控当前的连接 用户和正在执行的命令。
(4)orztop
这是一款可以查看MySQL数据库实时运行的SQL状况的工具,如果你习惯于用show processlist/show full processlist抓取SQL,这款工具就是一个很好的补充。
(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的审计插件Audit Log和MariaDB的Server Audit,目前定位为DDL敏感,root用户敏感,根据后期的测试,MariaDB的Server Audit插件功能全面,优先选用。