MySQL性能监控工具

总是需要监控数据库服务器的性能。为此,有许多工具可以轻松监控 MySQL 服务器和性能。它们大多是开源和免费的,有些还提供图形用户界面。命令行工具功能更强大,也最好用,不过需要一点时间来理解和使用它们。我们将在此讨论其中几种。

phpMyAdmin

这是最有名的、基于网络的开源免费工具,可用于管理 MySQL 数据库。除了管理 MySQL 服务器,它还提供了一些监控 MySQL 服务器的好工具。如果我们登录 phpMyAdmin,然后点击顶部的 "状态" 选项卡,就会看到如下界面:

image 2023 11 05 15 54 26 907

服务器选项卡会显示 MySQL 服务器的基本数据,如何时启动、上次启动后处理了多少流量、连接信息等。

其次是查询统计。该部分提供了所有已执行查询的完整统计数据。它还提供一个饼图,直观显示每种查询类型所占的百分比,如下图所示。

如果我们仔细观察图表,就会发现有 54% 的 SELECT 查询正在运行。如果我们使用某种缓存,如 Memcached 或 Redis,这些 SELECT 查询应该不会这么高。因此,这张图和统计信息为我们提供了一个分析缓存系统的平均值。

image 2023 11 05 18 05 12 821

下一个选项是 "所有状态变量",它列出了所有 MySQL 变量及其当前值。在这个列表中,可以很容易地找到 MySQL 的配置情况。在下面的截图中,显示了我们的查询缓存变量及其值:

image 2023 11 05 18 31 37 365

phpMyAdmin 提供的下一个选项是监控。这是一个非常强大的工具,能以图形方式实时显示服务器资源及其使用情况。

image 2023 11 05 18 32 19 215

如上图所示,我们可以在一个漂亮的图形界面上看到问题、连接/进程、系统 CPU 使用率、流量、系统内存和系统交换。

最后一个重要部分是 "顾问"。它为我们提供有关性能设置的建议。它会提供尽可能多的详细信息,以便调整 MySQL 服务器的性能。下面的截图显示了顾问部分的一小部分:

image 2023 11 05 18 34 02 990

如果应用所有这些建议,可以获得一些性能。

MySQL 工作台

这是一个 MySQL 桌面应用程序,配备了管理和监控 MySQL 服务器的全部工具。它为我们提供了一个性能仪表盘,在这个仪表盘中,所有与服务器相关的数据都可以用漂亮的图形方式显示出来,如下面的截图所示:

image 2023 11 05 18 35 33 281

Percona 工具包

前面提到的所有工具都很不错,可以提供一些有关数据库服务器的可视化信息。但是,这些工具还不足以向我们展示更多有用的信息或提供更多功能,使我们的生活更加轻松。为此,我们可以使用另一种命令行工具包,即 Percona 工具包。

Percona 工具包由 30 多个命令行工具组成,其中包括用于分析缓慢查询、归档、优化索引等的工具。

Percona Toolkit 是免费且开源的,并可在 GPL 下使用。它的大多数工具都可以在基于 Linux/Unix 的系统上运行,但有些工具也可以在 Windows 上运行。安装指南可以在 https://www.percona.com/doc/perconatoolkit/2.2/installation.html 找到。完整的工具集可以在 https://www.percona.com/doc/percona-toolkit/2.2/index.html 中找到。

现在,让我们在接下来的小节中讨论一些工具。

pt-query-digest

该工具可分析来自慢速、一般和二进制日志文件的查询。它会生成有关查询的复杂报告。让我们使用以下命令运行该工具来分析慢速查询:

Pt-query-digest /var/log/mysql/mysql-slow.log

在终端输入上述命令后,我们将看到一份长报告。在此,我们将讨论报告的一小部分,如下图所示:

image 2023 11 05 18 39 11 113

在前面的截图中,最慢的查询排在最前面。第一个查询是 SELECT 查询,耗时最长,约占总耗时的 12%。第二个查询也是 SELECT 查询,耗时占总耗时的 11.5%。从这份报告中,我们可以看到哪些查询速度较慢,从而可以对它们进行优化,以获得最佳性能。

此外,pt-query-digest 还能显示每个查询的信息,如下图所示。截图中提到了第一个查询的数据,包括总时间;时间百分比 (pct);最小、最大和平均时间;发送的字节数;以及其他一些参数:

image 2023 11 05 18 44 57 224

pt-duplicate-key-checker

该工具可在一组指定表或整个数据库中查找重复索引和重复外键。让我们在终端中使用以下命令在大型数据库中再次执行该工具:

Pt-duplicate-key-checker –user packt –password dbPassword –database packt_pub

执行时,打印以下输出:

image 2023 11 05 18 46 28 593

报告末尾会显示索引摘要,内容不言自明。此外,该工具还会为每个重复索引打印出一个 ALTER 查询,可作为 MySQL 查询执行,以修复索引,如下所示:

Pt-variable-advisor

该工具可显示 MySQL 配置信息和针对每个查询的建议。这是一个很好的工具,可以帮助我们正确设置 MySQL 配置。我们可以运行以下命令来执行该工具:

Pt-variable-advisor –user packt –password DbPassword localhost

执行后,将显示以下输出:

image 2023 11 05 18 49 20 809

Percona 工具包还提供了许多其他工具,不在本书讨论范围之内。不过, https://www.percona.com/doc/percona-toolkit/2.2/index.html 上的文档非常有用,而且易于理解。它提供了每个工具的完整细节,包括其描述和风险、如何执行以及其他选项(如果有的话)。如果您想了解 Percona 工具包中的任何工具,该文档都值得一读。