MySQL 有很多周边开源工具,这些工具提高了我们日常维护管理 MySQL 的效率。这一篇文章,我们就来总结一下这些工具。
1 Percona Toolkit
官方文档:https://www.percona.com/doc/percona-toolkit/3.0/index.html。
常用的有这些:
pt-query-digest,分析 MySQL 查询,常用于分析 MySQL 慢查询。
pt-online-schema-change,可在线修改表结构,常用于生产环境大表修改表结构。
pt-table-checksum,验证 MySQL 复制完整性,常用于主从架构数据一致性校验。
pt-table-sync,同步 MySQL 表数据,多数情况与 pt-table-checksum 结合使用,用于修复不一致的数据。
pt-kill,kill 掉符合特定条件的 MySQL 查询,通常用来查询或者 KILL 掉执行时间超过多少秒的 SQL。
pt-archiver,MySQL 数据归档,常用来归档大表。
2 备份工具
除了官方的备份工具 mysqldump,其他常用的有:
xtrabackup,物理备份,官方链接:https://www.percona.com/software/mysql-database/percona-xtrabackup。
mydumper,逻辑备份,GitHub 地址:https://github.com/mydumper/mydumper。
3 闪回工具
我们可以借助一些工具实现 MySQL 闪回,比如:
binlog2sql,除了闪回功能,还支持主从切换后新 master 数据补偿,并且支持从 Binlog 中生成标准 SQL。GitHub 地址:https://github.com/danfengcao/binlog2sql。
mysqlbinlog_flashback,产生 Binlog 中的回滚 SQL,GitHub 地址:https://github.com/58daojia-dba/mysqlbinlog_flashback。
4 数据同步工具
Otter,基于数据库增量日志解析,能将 MySQL 的数据同步到其他 MySQL 或者 Oracle。GitHub 地址:https://github.com/alibaba/otter。
5 监控工具
Prometheus,目前比较流行的监控工具,官方链接:https://prometheus.io/。
PMM,PMM(Percona Monitoring and Management )是一款免费的开源监控工具,可以用来监控 MySQL、MongoDB 和 PostgreSQL 等数据库。是对 Prometheus 和 Grafana 这些组件做了二次开发,监控数据更加丰富,部署也方便很多。
Zabbix,Zabbix 算是历史悠久的监控工具了,官方链接:https://www.zabbix.com/。
6 SQL 分析审核工具
Soar,SOAR(SQL Optimizer And Rewriter) 是一个对 SQL 进行优化和改写的自动化工具,GitHub 地址:https://github.com/XiaoMi/soar。
SQLAdvisor,通过分析 SQL,可以给出索引优化建议,GitHub 地址:https://github.com/Meituan-Dianping/SQLAdvisor。
Yearning,SQL 审核平台,基于 Go 语言编写,GitHub 地址:https://github.com/cookieY/Yearning。
Archery,SQL 审核平台,基于 Python 语言编写,GitHub 地址:https://github.com/hhyo/Archery。
7 分库分表工具
MyCAT,遵守 MySQL 原生协议、基于心跳的自动故障切换、支持读写分离等。GitHub 地址:https://github.com/MyCATApache/Mycat-Server。
DBLE,基于 MyCAT 二次开发,在兼容性、复杂查询和分布式事务方面做了改进和优化,并修复的一些 Bug。GitHub 地址:https://github.com/actiontech/dble。
Atlas,在 MySQL 官方推出的 MySQL-Proxy 0.8.2 版本的基础上,修改了大量 Bug,添加了很多功能特性。GitHub 地址:https://github.com/Qihoo360/Atlas。
8 压测工具
TPCC,业界比较常用的压测工具,GitHub 地址:https://github.com/Percona-Lab/tpcc-mysql。
sysbench,不单单能对 MySQL 进行压测,也可以对 CPU、磁盘 IO 等方面进行压测。GitHub 地址:https://github.com/akopytov/sysbench。
9 Online DDl
gh-ost,是一款用 Go 语言开发的 MySQL 在线改表工具,GitHub 地址:https://github.com/github/gh-ost。
pt-online-schema-change,在文章前面的 percona-toolkit 部分有介绍。
10 MySQL 高可用工具
MHA,是一套比较成熟的 MySQL 高可用方案,GitHub 地址:https://github.com/yoshinorim/mha4mysql-manager/。
Orchestrator,是一套 Go 语言编写的 MySQL 高可用中间件,支持拓扑发现、集群重塑等功能,GitHub 地址:https://github.com/openark/orchestrator。
Xenon,是一个使用 Raft 协议的 MySQL HA 和复制管理工具,GitHub 地址:https://github.com/radondb/xenon。
欢迎各位朋友关注这个公众号,后续会分享一些有关 Prometheus、Kubernetes、GitLab、Docker、Terraform、数据库、运维开发等内容。