本文转载自微信公众号《数据与云》,作者崔虎龙。转载本文请联系数据和云公众号。上次讲了MySQL官方运维工具。这一次,让我们详细了解一下常用的开源工具。目前收集到的在实际环境中使用过的开源工具如下:可以说,掌握了这些工具(原理和使用技巧),让MySQL的日常运维变得更加简单。备注:介绍中的部分图片来自开源社区,部分是自己根据自己的想法画的。画图有助于理解。在线更改ddlpt-osc&gh-ost是在线更改ddl的工具。pt-osc在于触发器的原理。gh-ost不依赖于触发器。通过模拟从库,在binlog中获取增量变化,然后异步应用到ghost表。备份恢复工具xtrabackup是一款支持增量备份的二进制在线热备份工具。目前物理备份的唯一选择。从全量来说,mysql8.0clone其实是个不错的选择。(高版本innobackupex已经弃用。)mydumper是一款多线逻辑备份工具,常用在一些自研产品中。myloader是一个sql语句导入工具。相同的软件包与mydumper结合使用。压力测试工具TPCC测试模拟了一个比较复杂的OLTP应用环境,是一家在线零售公司。公司销售10万种商品,商业模式:批发零售系统,订单处理下的数据库性能。Sysbench是一款开源、模块化、跨平台的多线程性能测试工具,可用于CPU、内存、磁盘I/O、线程、数据库等性能测试。数据库在单条语句INSERT、SELECT、UPDATE下的性能。区别在于TPCC测试的业务流程和sysbench测试的单条语句执行性能。根据需要选择测试工具。闪回工具有时会错误地删除或更新数据。binlog格式必须是row,binlog_row_image=full,必须保留。可以分析binlog,转sql语句进行恢复。即删除→插入、插入→删除、更新→更新按时间倒序回放。常用的工具有binlog2sql和MyFlash。大众点评binlog2sql:数据库服务必须在线开发语言Python2.7、3.4+只支持MySQL5.6、5.7https://github.com/danfengcao/binlog2sql美团点评MyFlash:只支持MySQL5.6和5.7只能回滚DML(增删改查),修改)开发语言c,mysqlbinlog工具配合sed,awk离线分析https://github.com/Meituan-Dianping/MyFlashMyFlash性能对比:binlog2sql是分析数据库运行中的一些状态,获取BINLOG_DUMP协议的binlog内容mysqlbinlog是因为需要解析binlog而不是标准的SQL语句。MyFlash直接生成标准的SQL语句,效率更高,速度更慢。日志分析pt-query-digest是Percona-Toolkit的组件之一,是一款非常不错的日志分析工具。优于mysqldumpslow,可以从普通日志、慢查询日志、二进制日志、showprocesslist和tcpdump分析SQL。主从一致性校验pt-table-checksum是Percona-Toolkit的组件之一,用于检测MySQL主从数据库中的数据是否一致。其原理是在主库中执行基于语句的SQL语句,生成主库数据块的校验和,将相同的SQL语句传递给从库执行,在从库上计算相同数据块的校验和。从库,最后比较主从库的同一个数据块的校验和值,判断主从数据是否一致。递归方法选择宿主方法。其他的undrop-for-innodb分析ibd文件进行数据恢复。当数据被误删,没有备份,不写入本地ibd文件时,可以恢复数据。但是中文解析可能没注意。innodb_rubinnodb_ruby主要可以查看innodb数据库数据表的各种存储,解析innodb文件,利用它学习数据库底层的一些存储。备注:这里可以结合官方innnchecksum分析MySQL8.0的ibd文件结构,方便制作类似的工具。SQL审计web工具基于Python和Django,利于二次开发改造,具有开发能力。你可以参考一下。主要依赖pt-toolkit进行集成开发。Yearning自动化SQL语句审计,可以自动检测并执行SQL。DDL/DML语句执行后自动生成回滚语句。以前称为盗梦空间。https://github.com/cookieY/YearningArchery集成了SQL查询、审计、执行、备份、慢日志管理等功能。https://github.com/hhyo/Archery客户端图形化管理工具主要解决数据库管理员和程序开发人员提供可视化SQL开发、数据操作、数据库管理功能,简单易学易用。特别是数据导入导出功能和二进制数据到图片的转换更加方便。但这对DBA来说是一个潜在的风险。长时间使用这些工具后,命令行很容易忘记。从上到下推荐:NavicatSQLyogHeidiSQL:使用Delphi开发,支持Windows操作系统。支持MySQL、MariaDB、PerconaServer和MicrosoftSQLServerMySQLWorkbench官方管理的重量级工具PhpMyAdmin安装部署比较麻烦,早期经常使用。总结对于MySQL5.7来说,这些工具目前支持的工具非常友好,但是目前有很多工具在8.0版本中不兼容。工具就是代替一些功能,提高效率。MySQL运维要提高工作效率,需要引入这些工具,也需要正确使用,了解并熟悉其用法,这才是运维之道。
