有句话说,工欲善其事,必先利其器,尤其是MySQL方向。在技??术规划的时候,你会发现有一些事情是需要提前做好的。比如MySQL里面的工具,等遇到各种问题再统一起来,难度会更大。还有沟通成本、人力成本、技术沉淀和持续交付成本等等,这些***提前和团队有一个基本的沟通,达成共识。内部统一后,会有一个和开发同学统一的基线。总体来说,我考虑过以下工具:运维管理工具数据备份恢复工具数据库优化工具客户端工具性能测试工具数据库版本管理工具数据库审计工具1.运维管理工具应该说MySQL运维工具,当仁不让Percona-toolkit,应该是我们学习MySQL需要熟练使用的运维工具。Percona-toolkit通常简称pt工具。pt工具其实是Maatkit和Aspersa这两个工具的组合,两者出自同一作者:BaronSchwartz;其中Maatkit工具更侧重于数据库层面,一开始就是Perl的基因。Aspersa的分类更倾向于系统层面,比如磁盘信息。2017年进入3.0时代,所以网上用的版本几乎都是2.2(2013年以来),时间跨度好几年。pt工具被Percona收购,有专门的项目维护。2、数据备份与恢复工具在数据备份与恢复方面,主要依据是逻辑备份和物理备份。业界主要有以下几种备份工具:(1)mysqldump,MySQL最经典的逻辑备份工具,也是MySQL工具集中的默认工具,适用于一些数据量不大的数据备份工作。值得一提的是,Facebook的生产环境使用mysqldump进行逻辑备份。(2)mysqlpump,新版MySQL推出的备份工具,但效果不如预期。***的痛点之一应该是备份的IO问题,这个问题还是不能大大扩展,因为都是在***备份的文件上,没有splitting。(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)orzdbaorzdba是淘宝DBA团队开发的一个Perl监控脚本,可以监控mysql数据库,以及一些磁盘和cpu的监控。截图如下:(3)mytop这是一个类似Linux下top命令风格的MySQL监控工具,可以监控当前连接的用户和正在执行的命令。(4)orztop这是一个可以查看MySQL数据库实时运行SQL状态的工具。如果你习惯使用showprocesslist/showfullprocesslist来抓SQL,这个工具是一个很好的补充。(5)systemtap是Linux下的动态跟踪工具,可以监控和跟踪正在运行的程序或Linux内核操作。它带来的性能损失很小。在一些特定的场景下,可以编写SystemTap脚本来调试一些性能问题。.4操作系统监控(1)nmon,(Nigel’sMonitor)是IBM公司免费提供的一款监控AIX系统和Linux系统资源的工具,广泛用于系统数据收集。历史数据(二)Mpstat,MultiprocessorStatistics的缩写,是一个实时监控工具。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)SQLyogSQLyog是业界知名的Webyog公司出品的一款快速简单的MySQL数据库图形化管理工具,付费产品。(2)Navicat是一套快速、可靠且经济实惠的数据库管理工具,旨在简化数据库管理并降低系统管理成本。它旨在满足数据库管理员、开发人员和中小型企业的需求。它是付费产品。(3)MySQLWorkbench是专为MySQL设计的ER/数据库建模工具,可支持数据库管理、数据迁移、数据建模等功能。它有开源和商业版本。(4)SQLDeveloper是Oracle公司推出的一款免费的数据库管理工具。它主要支持Oracle。如果需要支持MySQL,需要额外下载驱动包才能使用。7性能监控工具(1)Zabbix,基于WEB界面的企业级开源解决方案,提供分布式系统监控和网络监控功能,具有强大的监控和告警功能,广泛应用于互联网行业。(2)LepusUsagi是国内某DBA基于php开发的开源数据库监控管理系统。可以全方位监控数据库的实时健康状况和各项性能指标。本身可以支持MySQL、Oracle、MongoDB、Redis数据库监控,在慢日志的功能设计上非常亮眼。(3)mysql-statsd,一个收集MySQL信息的Python守护进程。并通过StatsD在线发送给Graphite8性能测试工具业务,需要在烤机上进行环境初始化测试。主要是先让服务器吃点苦头,看看能不能经得起考验。经过一定的测试,我们可以得到压测的数据结果,作为后续上线的基准参考。业界主要的性能测试工具如下:(1)主流性能测试工具Sysbench,开源,具有多线程压力测试能力,涵盖硬件和软件两个层面。该产品属于Percona(2)tpcc-mysql是Percona公司根据TPC-C开发的产品。主要用于MySQL压力测试工具(3)Mydbtest,由著名数据库专家楼方新先生开发。进行定制的压力测试。(4)mysql自带的benchmark工具mysqlslap,从5.1.4版本开始推出,可以通过模拟多个并发客户端访问MySQL9数据库版本管理工具liquibase进行压力测试,一个开源的数据库重构迁移工具,它是一个以日志文件的形式记录数据库中的变化。目前,日志文件支持多种格式,如XML、YAML、JSON、SQL等。10MySQL审计数据库审计是数据安全的重要参考。一个数据库活动和数据库操作细粒度审计的合规管理,数据库遇到的风险行为的预警,希望通过审计工具来感知。目前MySQL审计方向的审计插件主要有以下几类:(1)正式商业版插件(2)PerconaAuditLog插件(3)MariaDB插件初步结论:(1)运维管理工具主要考虑Percona-toolkit,作为默认初始化软件使用(2)数据备份恢复工具目前主要使用现有的备份恢复系统,采用xtrabackup和mysqldump的组合。xtrabackup采用物理备份,每天全量备份,保留7天备份集。推荐版本为2.4.8。在此基础上,在每个机房申请一台binlog备份机,每天使用xtrabackup进行全量备份,binlog备份,保存3天,满足基本的数据恢复需求。注:mydumper和myloader适用场景也比较广泛,可以作为一些备份恢复方案或者迁移改进。(3)MySQL实时状态分析工具使用orzdba和orztop。可以自定义orzdba的内容来满足mysqladmin的需要,orztop可以作为环境初始化的软件。(4)操作系统监控工具使用nmon收集历史数据,mpstat获取实时系统监控数据,需要系统部门定制。(5)慢日志分析工具使用pt-query-digest,需要单独考察调用,提取Lepus的慢日志逻辑。部分日志系统需要与Gallop进一步沟通。(6)客户端工具使用workbench。推荐开发者使用workbench,操作文档需要在内部整理。(7)性能测试工具主要使用sysbench进行业务上线,环境初始化时的拷机测试,以及硬件(IO、CPU、MEM)压力测试等,对MySQL进行压力测试,时间至少一周。在此基础上使用tpcc-mysql、mydbtest做辅助测试。主要目的是通过压测部分得到一些关键的参考指标(IOPS、TPS、QPS)。(8)使用MySQL审计工具推荐使用Percona的审计插件AuditLog和MariaDB的ServerAudit。目前,它们被定位为对DDL敏感和对root用户敏感。经后期测试,MariaDB的ServerAudit插件功能全面,首选。
